@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