<?php

namespace App\Services;

use App\Models\Credit;
use App\Models\Income;
use App\Models\Installment;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Auth;

class DashboardSummaryService
{
    public function generate(): string
    {
        $companyId = Auth::user()->company_id;

        // IMPORTANTE: Excluir créditos padre en todas las métricas
        // Los créditos padre tienen hijos derivados y no deben contarse
        $active = Credit::where('company_id', $companyId)
            ->whereIn('status', ['active', 'delayed', 'overdue'])
            ->whereDoesntHave('children') // Excluir créditos padre
            ->count();

        $delayed = Credit::where('company_id', $companyId)
            ->where('status', 'delayed')
            ->whereDoesntHave('children') // Excluir créditos padre
            ->count();

        $overdue = Credit::where('company_id', $companyId)
            ->where('status', 'overdue')
            ->whereDoesntHave('children') // Excluir créditos padre
            ->count();

        $paidToday = Installment::whereHas('credit', fn ($q) => $q->where('company_id', $companyId)
            ->whereDoesntHave('children') // Excluir créditos padre
        )
            ->whereDate('paid_date', Carbon::today())
            ->sum('amount_paid');

        $totalIncomes = Income::where('company_id', $companyId)->sum('amount');

        return "
📌 Actualmente hay {$active} créditos activos, de los cuales:
   • {$delayed} están retrasados  
   • {$overdue} están vencidos  

💰 Hoy se ha recaudado: COP ".number_format($paidToday).'

🏦 Ingresos totales registrados: COP '.number_format($totalIncomes)."

🔎 Recuerda revisar el widget de 'Cartera en Mora' para priorizar los casos críticos.
        ";
    }
}
