<?php

namespace App\Filament\Widgets;

use App\Models\KartuKeluarga;
use App\Models\Kelahiran;
use App\Models\Kematian;
use App\Models\Pendatang;
use App\Models\Penduduk;
use App\Models\Pindah;
use Filament\Widgets\StatsOverviewWidget as BaseWidget;
use Filament\Widgets\StatsOverviewWidget\Stat;

class DashboardStatsOverview extends BaseWidget
{
    // Urutan widget ini akan muncul di bawah WelcomeAdminWidget
    protected static ?int $sort = 2; 

    // Atur berapa kolom untuk stat overview (misal 4 kolom)
    protected static ?string $maxWidth = 'full'; // Pastikan widget full width
    // protected int | string $columnSpan = 'full'; // Agar widget ini mengambil lebar penuh jika perlu
    protected static ?int $columns = 4; // Menentukan 4 kolom per baris

    protected function getStats(): array
    {
        // Ambil data dari model Anda
        $totalPenduduk = Penduduk::where('is_ignore', '=', false)->where('is_baby', '=', false)->where('status_penduduk', '=', 'ada')->count();
        $totalKK = KartuKeluarga::count();
        $jumlahLakiLaki = Penduduk::where('is_ignore', '=', false)->where('is_baby', '=', false)->where('status_penduduk', '=', 'ada')->where('jenis_kelamin', 'laki')->count();
        $jumlahPerempuan = Penduduk::where('is_ignore', '=', false)->where('is_baby', '=', false)->where('status_penduduk', '=', 'ada')->where('jenis_kelamin', 'perempuan')->count();
        // Anda bisa memilih untuk mengambil data tahun ini atau total, contoh ini total
        $jumlahLahir = Kelahiran::count(); 
        $jumlahMeninggal = Kematian::count(); 
        $jumlahPendatang = Pendatang::where('tujuan_datang', '=', "tetap")->count();
        $jumlahTamu = Pendatang::where('tujuan_datang', '=', "tamu")->count();
        $jumlahPindah = Pindah::count(); 

        return [
            Stat::make('Jumlah Penduduk', $totalPenduduk)
                ->description('Selengkapnya')
                // Pastikan route ini sesuai dengan nama resource Anda
                ->url(route('filament.admin.resources.penduduks.index')) 
                ->icon('heroicon-m-user-group') // Contoh ikon, Anda bisa ganti
                ->color('info'),

            Stat::make('Jumlah Kartu Keluarga', $totalKK)
                ->description('Selengkapnya')
                ->url(route('filament.admin.resources.kartu-keluargas.index'))
                ->icon('heroicon-m-home') // Contoh ikon
                ->color('success'),

            Stat::make('Jumlah Laki-laki', $jumlahLakiLaki)
                ->description('Selengkapnya')
                // Anda bisa mengarahkan ke halaman list penduduk dengan filter jenis kelamin
                ->url(route('filament.admin.resources.penduduks.index', ['tableFilters[jenis_kelamin][value]' => 'laki']))
                ->icon('heroicon-m-user') // Contoh ikon
                ->color('danger'),

            Stat::make('Jumlah Perempuan', $jumlahPerempuan)
                ->description('Selengkapnya')
                // Anda bisa mengarahkan ke halaman list penduduk dengan filter jenis kelamin
                ->url(route('filament.admin.resources.penduduks.index', ['tableFilters[jenis_kelamin][value]' => 'perempuan']))
                ->icon('heroicon-m-user') // Contoh ikon
                ->color('warning'),

            Stat::make('Jumlah Lahir', $jumlahLahir)
                ->description('Selengkapnya')
                ->url(route('filament.admin.resources.kelahirans.index'))
                ->icon('heroicon-m-plus-circle') // Contoh ikon
                ->color('primary'),

            Stat::make('Jumlah Meninggal', $jumlahMeninggal)
                ->description('Selengkapnya')
                ->url(route('filament.admin.resources.kematians.index'))
                ->icon('heroicon-m-minus-circle') // Contoh ikon
                ->color('danger'),

            Stat::make('Jumlah Pendatang Baru', $jumlahPendatang)
                ->description('Selengkapnya')
                ->url(route('filament.admin.resources.pendatangs.index'))
                ->icon('heroicon-m-arrow-down-tray') // Contoh ikon
                ->color('warning'),

            Stat::make('Jumlah Tamu', $jumlahTamu)
                ->description('Selengkapnya')
                ->url(route('filament.admin.resources.pendatangs.index'))
                ->icon('heroicon-m-arrow-down-tray') // Contoh ikon
                ->color('warning'),

            Stat::make('Jumlah Pindah', $jumlahPindah)
                ->description('Selengkapnya')
                ->url(route('filament.admin.resources.pindahs.index'))
                ->icon('heroicon-m-arrow-up-tray') // Contoh ikon
                ->color('info'),
        ];
    }
}