Files
tbbank-new/app/Filament/Clusters/VisaMasterPayments/Resources/VisaMasterPaymentOrders/Schemas/VisaMasterPaymentOrderForm.php
2025-11-10 19:18:53 +05:00

178 lines
8.2 KiB
PHP

<?php
namespace App\Filament\Clusters\VisaMasterPayments\Resources\VisaMasterPaymentOrders\Schemas;
use App\Modules\FilamentPermission\Repositories\FilamentPermissionRepository;
use App\Modules\OrderStatus\Repositories\OrderStatusRepository;
use App\Modules\PhoneNumberVerification\Rules\PhoneNumberVerificationRule;
use App\Modules\Region\Repositories\RegionRepository;
use App\Modules\TurkmenPassport\Repositories\TurkmenPassportRepository;
use App\Modules\VisaMasterPaymentOrder\Models\VisaMasterPaymentOrder;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\Hidden;
use Filament\Forms\Components\KeyValue;
use Filament\Forms\Components\RichEditor;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Toggle;
use Filament\Schemas\Components\Fieldset;
use Filament\Schemas\Components\FusedGroup;
use Filament\Schemas\Components\Section;
use Filament\Schemas\Components\Wizard;
use Filament\Schemas\Components\Wizard\Step;
use Filament\Schemas\Schema;
use Filament\Support\Icons\Heroicon;
use Illuminate\Support\Facades\Auth;
class VisaMasterPaymentOrderForm
{
public static function configure(Schema $schema): Schema
{
return $schema
->components([
Hidden::make('user_id')->default(Auth::id()),
Section::make(__('Order details'))
->columnSpan(4)
->columns(4)
->disabled(fn (string $context): bool => FilamentPermissionRepository::forClients())
->components([
Select::make('status')
->label(__('Status'))
->options(OrderStatusRepository::statusValues())
->default(OrderStatusRepository::defaultStatus())
->native(false)
->columnSpan(2),
Toggle::make('paid')
->label(sprintf('%s (%s)', __('Paid'), __('This month')))
->inline(false)
->disabled(true)
->onIcon(Heroicon::CheckCircle)
->offIcon(Heroicon::XCircle)
->onColor('success')
->offColor('danger'),
RichEditor::make('notes')
->label(__('Bellik'))
->columnSpanFull(),
]),
Wizard::make([
// Step::make(__('Order type and bank'))
// ->schema([
// Fieldset::make(__('Order type'))
// ->schema([
// Select::make('type')
// ->label(__('Type'))
// ->options(VisaMasterPaymentOrder::applicationTypes())
// ->native(false)
// ->required(),
// ]),
// Fieldset::make(__('Location'))
// ->schema([
// Select::make('region')
// ->label(__('Region'))
// ->options(RegionRepository::values())
// ->live()
// ->afterStateUpdated(fn (callable $set) => $set('branch_id', null))
// ->required(),
// Select::make('branch_id')
// ->label(__('Branch'))
// ->relationship('branch', 'name', function ($query, callable $get) {
// $query->orderByTranslation('name');
// $region = $get('region');
// if ($region) {
// $query->where('region', $region);
// }
// })
// ->required(),
// ]),
// ]),
Step::make(__('Payment sender data'))
->columns(8)
->schema([
TextInput::make('sender_full_name')
->label(__('Name, Surname, Patronic name'))
->columnSpan(4)
->default(user()->fullName())
->required(),
FusedGroup::make([
Select::make('sender_passport_serie')
->label(__('Passport serie'))
->options(TurkmenPassportRepository::values())
->native(false)
->required()
->columnSpan(1)
->default(user()->getOption('passport_serie')),
TextInput::make('sender_passport_number')
->label(__('Passport number'))
->required()
->columnSpan(1)
->mask('999999')
->default(user()->getOption('passport_id')),
])
->columnSpan(2)
->label(__('Passport serie and number'))
->columns(2),
TextInput::make('phone')
->label(__('Phone'))
->required()
->mask('99 99 99 99')
->prefix('+993')
->rules([
new PhoneNumberVerificationRule,
])
->columnSpan(2)
->default(user()->phone),
TextInput::make('sender_deposit_account')
->label(__('Deposit account'))
->columnSpan(4)
->required(),
TextInput::make('address')
->label(__('Address'))
->columnSpan(4)
->required(),
]),
Step::make(__('Payee information'))
->columns(8)
->schema([
TextInput::make('reciever_full_name')
->label(__('Name, Surname, Patronic name'))
->columnSpan(5)
->required(),
FusedGroup::make([
Select::make('reciever_passport_serie')
->label(__('Passport serie'))
->options(TurkmenPassportRepository::values())
->native(false)
->required()
->columnSpan(1),
TextInput::make('reciever_passport_number')
->label(__('Passport number'))
->required()
->columnSpan(1)
->mask('999999'),
])
->columnSpan(3)
->label(__('Passport serie and number'))
->columns(2),
]),
])->columnSpanFull()->skippable(),
]);
}
}