<?php

namespace App\Filament\Tenant\Widgets;

use App\Models\Tenant\Appointment;
use App\Models\Tenant\Client;
use App\Models\Tenant\Deal;
use App\Models\Tenant\Lead;
use App\Models\Tenant\Vehicle;
use Filament\Widgets\StatsOverviewWidget as BaseWidget;
use Filament\Widgets\StatsOverviewWidget\Stat;

class StatsOverview extends BaseWidget
{
    protected static ?int $sort = 1;

    protected function getStats(): array
    {
        $newLeads = Lead::where('status', 'new')->count();
        $openDeals = Deal::whereNotIn('stage', ['done', 'lost'])->count();
        $todayAppointments = Appointment::whereDate('date', today())->count();

        return [
            Stat::make('Clienți', Client::count())
                ->description('Total în baza de date')
                ->icon('heroicon-o-users')
                ->color('primary'),

            Stat::make('Mașini', Vehicle::count())
                ->description('Total înregistrate')
                ->icon('heroicon-o-truck')
                ->color('info'),

            Stat::make('Cereri noi', $newLeads)
                ->description('De procesat')
                ->icon('heroicon-o-inbox-arrow-down')
                ->color($newLeads > 0 ? 'warning' : 'success'),

            Stat::make('Deal-uri active', $openDeals)
                ->description('În pipeline')
                ->icon('heroicon-o-funnel')
                ->color('primary'),

            Stat::make('Programări azi', $todayAppointments)
                ->description(today()->format('d.m.Y'))
                ->icon('heroicon-o-calendar')
                ->color('success'),
        ];
    }
}
