@php // Valores seguros por defecto $period = $period ?? 'Mensual'; $title = $title ?? 'Meta'; $target = intval($target ?? 0); $current = intval($current ?? 0); // Evitar división por cero $percentage = $target > 0 ? min(($current / $target) * 100, 100) : 0; $isAchieved = ($target > 0) && ($current >= $target); $difference = $current - $target; $periodConfig = [ 'Diario' => ['label' => 'Diario', 'badge' => 'badge-info'], 'Semanal' => ['label' => 'Semanal', 'badge' => 'badge-secondary'], 'Mensual' => ['label' => 'Mensual', 'badge' => 'badge-primary'], 'Trimestral' => ['label' => 'Trimestral', 'badge' => 'badge-warning'], 'Semestral' => ['label' => 'Semestral', 'badge' => 'badge-dark'], 'Anual' => ['label' => 'Anual', 'badge' => 'badge-success'], ]; $config = $periodConfig[$period] ?? $periodConfig['Mensual']; // Colores según estado if ($target === 0) { $progressClass = 'bg-secondary'; $statusClass = 'text-muted'; } elseif ($isAchieved) { $progressClass = 'bg-success'; $statusClass = 'text-success'; } elseif ($percentage >= 70) { $progressClass = 'bg-warning'; $statusClass = 'text-warning'; } else { $progressClass = 'bg-danger'; $statusClass = 'text-danger'; } @endphp
{{ $title ?? 'Meta' }}
Objetivo: {{ $target }}
{{ $config['label'] }}
{{-- Progreso --}}
Progreso Actual
{{ $current }} / {{ $target }}
{{ number_format($percentage, 0) }}%
{{-- Barra de progreso --}}
{{-- Estado --}}
@if ($isAchieved) @else @endif {{ $isAchieved ? 'Meta Cumplida' : 'Meta Pendiente' }}
@if ($isAchieved) +{{ $difference }} sobre la meta @else Faltan {{ abs($difference) }} @endif