New-Thanasoft/thanasoft-back/app/Http/Requests/UpdateContactRequest.php
2025-10-29 17:17:50 +03:00

72 lines
2.5 KiB
PHP

<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UpdateContactRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'client_id' => 'nullable|exists:clients,id',
'fournisseur_id' => 'nullable|exists:fournisseurs,id',
'first_name' => 'nullable|string|max:191',
'last_name' => 'nullable|string|max:191',
'email' => 'nullable|email|max:191',
'phone' => 'nullable|string|max:50',
'role' => 'nullable|string|max:191',
];
}
public function messages(): array
{
return [
'client_id.exists' => 'Le client sélectionné n\'existe pas.',
'fournisseur_id.exists' => 'Le fournisseur sélectionné n\'existe pas.',
'first_name.string' => 'Le prénom doit être une chaîne de caractères.',
'first_name.max' => 'Le prénom ne peut pas dépasser 191 caractères.',
'last_name.string' => 'Le nom doit être une chaîne de caractères.',
'last_name.max' => 'Le nom ne peut pas dépasser 191 caractères.',
'email.email' => 'L\'adresse email doit être valide.',
'email.max' => 'L\'adresse email ne peut pas dépasser 191 caractères.',
'phone.max' => 'Le téléphone ne peut pas dépasser 50 caractères.',
'role.max' => 'Le rôle ne peut pas dépasser 191 caractères.',
];
}
public function withValidator($validator)
{
$validator->after(function ($validator) {
// At least one of client_id or fournisseur_id must be provided
if (empty($this->client_id) && empty($this->fournisseur_id)) {
$validator->errors()->add(
'general',
'Le contact doit être associé à un client ou un fournisseur.'
);
}
if (empty($this->first_name) && empty($this->last_name) && empty($this->email) && empty($this->phone)) {
$validator->errors()->add(
'general',
'Au moins un champ (prénom, nom, email ou téléphone) doit être renseigné.'
);
}
});
}
}