<?php

namespace App\Filament\Resources;

use App\Filament\Resources\InvoiceReportResource\Pages;
use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\Section;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\ToggleButtons;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Support\Enums\FontFamily;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;

class InvoiceReportResource extends Resource
{
    protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';

    protected static ?string $navigationGroup = 'Reports';

    protected static ?string $navigationLabel = 'Invoice Reports';

    protected static ?int $navigationSort = 2;

    public static function form(Form $form): Form
    {
        return $form
            ->schema([
                Section::make([
                    Select::make('customer_id')
                        ->relationship('customer', 'company_name')
                        ->preload()
                        ->required()
                        ->searchable(),
                    ToggleButtons::make('filter_paid')
                        ->boolean()
                        ->required()
                        ->default(false)
                        ->colors([
                            'true'  => 'info',
                            'false' => 'info',
                        ])
                        ->inline(),
                    DatePicker::make('date_start')
                        ->required(),
                    DatePicker::make('date_end')
                        ->required()
                        ->default(today()),
                ])->columns(2),
            ]);
    }

    public static function table(Table $table): Table
    {
        return $table
            ->columns([
                TextColumn::make('id')
                    ->formatStateUsing(fn ($state) => 'TN-INR-'.$state)
                    ->fontFamily(FontFamily::Mono)
                    ->color('primary'),
                TextColumn::make('customer.company_name')
                    ->extraHeaderAttributes(['class' => 'w-full']),
                TextColumn::make('date_start')
                    ->label('Start Date')
                    ->date('Y-m-d'),
                TextColumn::make('date_end')
                    ->label('End Date')
                    ->date('Y-m-d'),
                TextColumn::make('total')
                    ->money(),
            ])
            ->defaultSort('created_at', 'desc')

            ->filters([
            ])
            ->actions([]);
        //            ->defaultGroup(
        //                Group::make('date')
        //                    ->getKeyFromRecordUsing(fn (Order $record): string => $record->invoice->date->format('Y-m-0'))
        //                    ->getTitleFromRecordUsing(fn (Order $record): string => $record->invoice->date->format('F Y'))
        //                    ->orderQueryUsing(function (Builder $query) {
        //
        //                        return $query->join('invoices', 'orders.invoice_id', '=', 'invoices.id')
        //                            ->orderBy('invoices.date', 'desc');
        //                    })
        //                    ->titlePrefixedWithLabel(false),
        //            );
    }

    public static function getRelations(): array
    {
        return [
            //
        ];
    }

    public static function getPages(): array
    {
        return [
            'index'  => Pages\ListInvoiceReports::route('/'),
            'edit'   => Pages\EditInvoiceReport::route('/{record}/edit'),
            'create' => Pages\CreateInvoiceReport::route('/create'),
        ];
    }
}