<?php

namespace App\Filament\Resources\PendatangResource\Pages;

use App\Filament\Resources\PendatangResource;
use Filament\Actions;
use Filament\Forms\Components\Select; // Import Select
use Filament\Forms\Components\DatePicker; // Import DatePicker
use Filament\Resources\Pages\ListRecords;
use Illuminate\Support\Facades\Auth;
use Maatwebsite\Excel\Facades\Excel;
use App\Exports\PendatangExport; // Import class export Pendatang
use App\Models\Dusun; // Import model Dusun

class ListPendatangs extends ListRecords
{
    protected static string $resource = PendatangResource::class;

    protected function getHeaderActions(): array
    {
        return [

            // Tambahkan Action untuk Export Excel
            Actions\Action::make('export_excel')
                ->label('Export Laporan Pendatang')
                ->icon('heroicon-o-arrow-down-tray')
                ->color('gray')
                ->form([
                    Select::make('dusun_id_tujuan')
                        ->label('Filter Dusun Tujuan')
                        ->options(fn () => Dusun::pluck('nama', 'id')->toArray())
                        ->placeholder('Pilih Dusun (Opsional)')
                        ->nullable(),
                    DatePicker::make('tanggal_datang_dari')
                        ->label('Tanggal Datang Dari')
                        ->placeholder('Pilih Tanggal Mulai (Opsional)')
                        ->nullable(),
                    DatePicker::make('tanggal_datang_sampai')
                        ->label('Tanggal Datang Sampai')
                        ->placeholder('Pilih Tanggal Akhir (Opsional)')
                        ->nullable(),
                ])
                ->action(function (array $data) {
                    $dusunIdTujuan = $data['dusun_id_tujuan'];
                    $tanggalDatangDari = $data['tanggal_datang_dari'];
                    $tanggalDatangSampai = $data['tanggal_datang_sampai'];

                    $fileName = 'data_pendatang';
                    if ($dusunIdTujuan) {
                        $dusun = Dusun::find($dusunIdTujuan);
                        $fileName .= '_dusun_' . ($dusun->nama ?? 'unknown');
                    }
                    if ($tanggalDatangDari) {
                        $fileName .= '_dari_' . \Carbon\Carbon::parse($tanggalDatangDari)->format('Ymd');
                    }
                    if ($tanggalDatangSampai) {
                        $fileName .= '_sampai_' . \Carbon\Carbon::parse($tanggalDatangSampai)->format('Ymd');
                    }
                    $fileName .= '_' . now()->format('Ymd_His') . '.xlsx';

                    return Excel::download(
                        new PendatangExport($dusunIdTujuan, $tanggalDatangDari, $tanggalDatangSampai),
                        $fileName
                    );
                }),
            Actions\CreateAction::make()
                ->visible(fn (): bool => Auth::user()->role !== 'kepala_desa'),
        ];
    }
}