38 lines
1.4 KiB
PHP
38 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Requests;
|
|
|
|
use App\Enums\PurchasingRole;
|
|
use App\Models\Supplier;
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
use Illuminate\Validation\Rule;
|
|
|
|
class SaveSupplierRequest extends FormRequest
|
|
{
|
|
public function authorize(): bool
|
|
{
|
|
return $this->user()?->hasFunctions([PurchasingRole::Procurement]) ?? false;
|
|
}
|
|
|
|
/** @return array<string, mixed> */
|
|
public function rules(): array
|
|
{
|
|
$supplier = $this->route('supplier');
|
|
$uniqueNuit = Rule::unique('suppliers')->where('tenant_id', $this->user()?->tenant_id);
|
|
if ($supplier instanceof Supplier) {
|
|
$uniqueNuit->ignore($supplier->id);
|
|
}
|
|
|
|
return [
|
|
'name' => 'required|string|max:200',
|
|
'nuit' => ['required', 'regex:/^\d{9}$/', $uniqueNuit],
|
|
'contact' => 'required|string|max:200', 'email' => 'required|email|max:200',
|
|
'phone' => 'required|string|max:50', 'address' => 'required|string|max:500',
|
|
'category' => 'required|string|max:200', 'beneficiaries' => 'required|string|min:3|max:2000',
|
|
'document_references' => 'required|string|min:5|max:3000', 'diligence_notes' => 'required|string|min:10|max:3000',
|
|
'blocked' => 'required|boolean', 'next_review' => 'required|date_format:Y-m-d|after_or_equal:today',
|
|
'version' => $supplier instanceof Supplier ? 'required|integer|min:1' : 'prohibited',
|
|
];
|
|
}
|
|
}
|