Răsfoiți Sursa

fix: update unique validation rules for document number and email to exclude trashed records

alvesantos 2 săptămâni în urmă
părinte
comite
4ee95d456f

+ 3 - 2
app/Http/Requests/StudentRegistrationDraftRequest.php

@@ -4,6 +4,7 @@
 
 use App\ValueObjects\Cpf;
 use Illuminate\Foundation\Http\FormRequest;
+use Illuminate\Validation\Rule;
 
 class StudentRegistrationDraftRequest extends FormRequest
 {
@@ -24,9 +25,9 @@ public function rules(): array
             'registration_draft_token' => 'sometimes|nullable|uuid',
             'name'                     => 'required|string|max:255',
             'birth_date'               => 'required|date',
-            'document_number'          => ['sometimes', 'nullable', 'string', 'max:20', Cpf::rule(), 'unique:students,document_number'],
+            'document_number'          => ['sometimes', 'nullable', 'string', 'max:20', Cpf::rule(), Rule::unique('students', 'document_number')->withoutTrashed()],
             'gender'                   => 'sometimes|nullable|string|in:no_preference,male,female,other',
-            'email'                    => 'sometimes|nullable|email|unique:students,email',
+            'email'                    => ['sometimes', 'nullable', 'email', Rule::unique('students', 'email')->withoutTrashed()],
             'phone'                    => 'sometimes|nullable|string|max:20',
             'postal_code'              => 'sometimes|nullable|string|max:10',
             'street'                   => 'sometimes|nullable|string|max:255',

+ 8 - 3
app/Http/Requests/StudentRequest.php

@@ -53,10 +53,15 @@ public function rules(): array
                 'string',
                 'max:20',
                 Cpf::rule(),
-                Rule::unique('students', 'document_number'),
+                Rule::unique('students', 'document_number')->withoutTrashed(),
             ];
 
-            $rules['email'] = 'sometimes|nullable|email|unique:students,email';
+            $rules['email'] = [
+                'sometimes',
+                'nullable',
+                'email',
+                Rule::unique('students', 'email')->withoutTrashed(),
+            ];
 
             $rules['responsible'] = [
                 'nullable',
@@ -88,7 +93,7 @@ public function rules(): array
                 'string',
                 'max:20',
                 Cpf::rule(),
-                Rule::unique('students', 'document_number')->ignore($this->route('id')),
+                Rule::unique('students', 'document_number')->ignore($this->route('id'))->withoutTrashed(),
             ];
         }
 

+ 3 - 2
app/Services/StudentRegistrationDraftService.php

@@ -8,6 +8,7 @@
 use Illuminate\Support\Facades\Cache;
 use Illuminate\Support\Facades\Validator;
 use Illuminate\Support\Str;
+use Illuminate\Validation\Rule;
 use Illuminate\Validation\ValidationException;
 
 class StudentRegistrationDraftService
@@ -323,8 +324,8 @@ private function reservationKeys(array $data): array
     private function validateDatabaseUniques(array $data): void
     {
         Validator::make($data, [
-            'document_number' => 'sometimes|nullable|unique:students,document_number',
-            'email'           => 'sometimes|nullable|unique:students,email',
+            'document_number' => ['sometimes', 'nullable', Rule::unique('students', 'document_number')->withoutTrashed()],
+            'email'           => ['sometimes', 'nullable', Rule::unique('students', 'email')->withoutTrashed()],
         ])->validate();
     }