<?php

namespace App\Modules\VisaMasterPaymentOrder\Filament\Actions;

use App\Modules\CurrencyRate\Models\CurrencyRate;
use App\Modules\VisaMasterPaymentOrder\Models\VisaMasterPaymentOrder;
use App\Modules\VisaMasterPaymentOrder\Models\VisaMasterSettings;
use Filament\Actions\Action;
use Filament\Forms\Components\TextInput;
use Filament\Infolists\Components\TextEntry;
use Filament\Schemas\Components\Section;

class PayVisaMasterPaymentAction
{
    public static function make(): Action
    {
        return Action::make('pay_visa_master_payment')
            ->label(__('Make payment'))
            ->icon('heroicon-o-credit-card')
            ->modal()
            ->schema(function () {
                $usd_to_tmt = floatval(CurrencyRate::where('currency_from', 'USD')->where('currency_to', 'TMT')->first('value')?->value);

                $payment_warning_text = VisaMasterSettings::where('name', 'payment_warning_text')->first();

                if (! $usd_to_tmt || ! $payment_warning_text) {
                    return [];
                }

                $bank_fee = 20;
                $gbus_fee = 3;
                $max_value = number_format($usd_to_tmt * 250, 2);

                return [
                    Section::make('Customer Information')
                    ->schema([
                        TextEntry::make('usd_to_tmt')
                            ->extraAttributes(['class' => 'uppercase tracking-wide font-bold text-xs'])
                            ->label(sprintf('1 USD = %s TMT', $usd_to_tmt)),

                        TextEntry::make('bank_fee')
                            ->extraAttributes(['class' => 'uppercase tracking-wide font-bold text-xs'])
                            ->label(sprintf('Bankyň tutumy: %s TMT', $bank_fee)),

                        TextEntry::make('gbus_fee')
                            ->extraAttributes(['class' => 'uppercase tracking-wide font-bold text-xs'])
                            ->label(sprintf('GBÜS tutumy: %s TMT', $gbus_fee)),
                    ]),

                    TextInput::make(__('Töleg aý'), 'month')
                        ->fullWidth()
                        ->readonly()
                        ->default(today()->translatedFormat('F')),
                ];

                //     Text::make(sprintf('%s (%s)', __('Töleg möçberi'), __('TMT')), 'payment_amount')
                //         ->fullWidth()
                //         ->required()
                //         ->rules('required', 'numeric', 'max:'.$max_value)
                //         ->help("Iň ýokary möçberi: {$max_value} TMT"),

                //     Text::make(__('USD ekwalendi'), 'usd_rate')
                //         ->fullWidth()
                //         ->readonly()
                //         ->dependsOn('payment_amount', function (Text $field, NovaRequest $request, FormData $formData) use ($usd_to_tmt) {
                //             $payment_amount = $formData->get('payment_amount');

                //             if ($payment_amount) {
                //                 $field->setValue(number_format($payment_amount / $usd_to_tmt, 2, '.', ''));
                //             } else {
                //                 $field->setValue('');
                //             }
                //         }),

                //     Hidden::make('usd_payment')
                //         ->dependsOn('payment_amount', function (Hidden $field, NovaRequest $request, FormData $formData) use ($usd_to_tmt) {
                //             $payment_amount = $formData->get('payment_amount');

                //             if ($payment_amount) {
                //                 $field->setValue(number_format($payment_amount / $usd_to_tmt, 2, '.', ''));
                //             } else {
                //                 $field->setValue('');
                //             }
                //         }),

                //     Text::make(__('Jemi (TMT)'), 'total_amount')
                //         ->fullWidth()
                //         ->readonly()
                //         ->dependsOn('payment_amount', function ($field, $request, $formData) {
                //             $payment_amount = $formData->get('payment_amount');

                //             if ($payment_amount) {
                //                 $field->setValue(
                //                     floatval(number_format($payment_amount, 2, '.', '')) + 23
                //                 );
                //             } else {
                //                 $field->setValue('');
                //             }
                //         }),

                //     Heading::make(Blade::render(<<<HTML
                //         <div class="w-full border text-left appearance-none rounded text-sm font-bold focus:outline-none focus:ring ring-primary-200 dark:ring-gray-600 relative inline-flex items-center justify-center shadow h-9 px-3 bg-primary-500 border-primary-500 text-white dark:text-gray-900">
                //             <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" class="stroke-current shrink-0 w-6 h-6 mr-2">
                //                 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
                //             </svg>
                //             <span>$payment_warning_text->value</span>
                //         </div>
                //     HTML))->asHtml(),
                // ];
            })
            ->action(function (array $data, VisaMasterPaymentOrder $record): void {
                // $record->author()->associate($data['authorId']);
                // $record->save();
            })
            ->modalFooterActions([]);
    }
}
