<?php

namespace App\Filament\Resources\PindahResource\Pages;

use App\Filament\Resources\PindahResource;
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\PindahExport; // Import class export Pindah
use App\Models\Dusun; // Import model Dusun

class ListPindahs extends ListRecords
{
    protected static string $resource = PindahResource::class;

    protected function getHeaderActions(): array
    {
        return [

            // Tambahkan Action untuk Export Excel
            Actions\Action::make('export_excel')
                ->label('Export Laporan Pindahan')
                ->icon('heroicon-o-arrow-down-tray')
                ->color('gray')
                ->form([
                    Select::make('dusun_id')
                        ->label('Filter Dusun Asal')
                        ->options(fn () => Dusun::pluck('nama', 'id')->toArray())
                        ->placeholder('Pilih Dusun (Opsional)')
                        ->nullable(),
                    DatePicker::make('tanggal_pindah_dari')
                        ->label('Tanggal Pindah Dari')
                        ->placeholder('Pilih Tanggal Mulai (Opsional)')
                        ->nullable(),
                    DatePicker::make('tanggal_pindah_sampai')
                        ->label('Tanggal Pindah Sampai')
                        ->placeholder('Pilih Tanggal Akhir (Opsional)')
                        ->nullable(),
                ])
                ->action(function (array $data) {
                    $dusunId = $data['dusun_id'];
                    $tanggalPindahDari = $data['tanggal_pindah_dari'];
                    $tanggalPindahSampai = $data['tanggal_pindah_sampai'];

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

                    return Excel::download(
                        new PindahExport($dusunId, $tanggalPindahDari, $tanggalPindahSampai),
                        $fileName
                    );
                }),
            Actions\CreateAction::make()
                ->visible(fn (): bool => Auth::user()->role !== 'kepala_desa'),
        ];
    }
}