Files
2026-05-30 01:11:35 -04:00

19 lines
1.3 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Http\Requests\Finance;
use App\Domain\SchoolCore\Finance\DTO\EditPaymentData;
use App\Domain\SchoolCore\Finance\DTO\MoneyData;
use App\Domain\SchoolCore\Finance\Enums\PaymentMethod;
use DateTimeImmutable;
use Illuminate\Foundation\Http\FormRequest;
final class EditPaymentRequest extends FormRequest
{
public function authorize(): bool { return true; }
public function rules(): array { return ['amount_minor'=>['nullable','integer','min:1'],'currency'=>['required_with:amount_minor','string','size:3'],'payment_method'=>['nullable','string','in:cash,check,card,bank_transfer,other'],'payment_date'=>['nullable','date'],'reference_number'=>['nullable','string'],'notes'=>['nullable','string'],'replacement_file'=>['nullable','file','max:10240'],'edit_reason'=>['required','string']]; }
public function toDTO(): EditPaymentData { $v=$this->validated(); return new EditPaymentData(isset($v['amount_minor']) ? new MoneyData((int)$v['amount_minor'], strtoupper($v['currency'])) : null, isset($v['payment_method']) ? PaymentMethod::from($v['payment_method']) : null, isset($v['payment_date']) ? new DateTimeImmutable($v['payment_date']) : null, $v['reference_number'] ?? null, $v['notes'] ?? null, $this->file('replacement_file'), $v['edit_reason']); }
}