Browse Source

fix att perfil cliente

Gustavo Zanatta 4 days ago
parent
commit
387f38859c
2 changed files with 34 additions and 4 deletions
  1. 8 1
      app/Http/Requests/UpdateMeRequest.php
  2. 26 3
      app/Http/Requests/UserRequest.php

+ 8 - 1
app/Http/Requests/UpdateMeRequest.php

@@ -17,7 +17,14 @@ class UpdateMeRequest extends FormRequest
     {
         return [
             'name'          => 'sometimes|string|nullable|max:255',
-            'email'         => ['sometimes', 'email', 'nullable', Rule::unique('users', 'email')->ignore(Auth::id())],
+            'email'         => [
+                'sometimes',
+                'email',
+                'nullable',
+                Rule::unique('users', 'email')
+                    ->where('type', Auth::user()?->type?->value)
+                    ->ignore(Auth::id()),
+            ],
             'phone'         => 'sometimes|string|nullable',
             'language'      => 'sometimes|string|nullable',
             'document'      => 'sometimes|string|nullable',

+ 26 - 3
app/Http/Requests/UserRequest.php

@@ -5,6 +5,7 @@ namespace App\Http\Requests;
 use App\Enums\GenderEnum;
 use App\Enums\LanguageEnum;
 use App\Enums\UserTypeEnum;
+use App\Models\User;
 use Illuminate\Foundation\Http\FormRequest;
 use Illuminate\Validation\Rule;
 
@@ -19,7 +20,9 @@ class UserRequest extends FormRequest
             'email' => [
                 'sometimes',
                 'email',
-                Rule::unique('users', 'email')->ignore($this->route('id')),
+                Rule::unique('users', 'email')
+                    ->where('type', $this->emailUniqueType())
+                    ->ignore($this->route('id')),
             ],
 
             'password' => 'sometimes|string|nullable',
@@ -31,8 +34,12 @@ class UserRequest extends FormRequest
         ];
 
         if ($this->isMethod('post')) {
-            $rules['name']     = 'required|string|max:255';
-            $rules['email']    = 'required|email|unique:users,email';
+            $rules['name']  = 'required|string|max:255';
+            $rules['email'] = [
+                'required',
+                'email',
+                Rule::unique('users', 'email')->where('type', $this->emailUniqueType()),
+            ];
             $rules['password'] = 'required|string|min:6';
 
             if (! $this->has('language')) {
@@ -42,4 +49,20 @@ class UserRequest extends FormRequest
 
         return $rules;
     }
+
+    private function emailUniqueType(): string
+    {
+        if ($this->filled('type')) {
+            return $this->input('type');
+        }
+
+        $id   = $this->route('id');
+        $type = $id ? User::query()->whereKey($id)->value('type') : null;
+
+        if ($type instanceof UserTypeEnum) {
+            $type = $type->value;
+        }
+
+        return $type ?? UserTypeEnum::USER->value;
+    }
 }