diff --git a/app/Http/Requests/Auth/User.php b/app/Http/Requests/Auth/User.php index 189aace21..89c734f49 100644 --- a/app/Http/Requests/Auth/User.php +++ b/app/Http/Requests/Auth/User.php @@ -6,6 +6,7 @@ use Illuminate\Foundation\Http\FormRequest; class User extends FormRequest { + /** * Determine if the user is authorized to make this request. * @@ -29,12 +30,22 @@ class User extends FormRequest $picture = 'mimes:' . config('filesystems.mimes') . '|between:0,' . config('filesystems.max_size') * 1024; } + $email = 'required|email'; + if ($this->getMethod() == 'PATCH') { // Updating user $id = is_numeric($this->user) ? $this->user : $this->user->getAttribute('id'); $password = ''; $companies = $this->user->can('read-common-companies') ? 'required' : ''; $roles = $this->user->can('read-auth-roles') ? 'required' : ''; + + if ($this->user->contact) { + $email .= '|unique:contacts,NULL,' + . $this->user->contact->id . ',id' + . ',company_id,' . company_id() + . ',type,customer' + . ',deleted_at,NULL'; + } } else { // Creating user $id = null; @@ -43,9 +54,11 @@ class User extends FormRequest $roles = 'required'; } + $email .= '|unique:users,email,' . $id . ',id,deleted_at,NULL'; + return [ 'name' => 'required|string', - 'email' => 'required|email|unique:users,email,' . $id . ',id,deleted_at,NULL', + 'email' => $email, 'password' => $password . 'confirmed', 'companies' => $companies, 'roles' => $roles, diff --git a/app/Http/Requests/Common/Contact.php b/app/Http/Requests/Common/Contact.php index 1c93fcb3c..c1cd8cb60 100644 --- a/app/Http/Requests/Common/Contact.php +++ b/app/Http/Requests/Common/Contact.php @@ -43,7 +43,15 @@ class Contact extends FormRequest } if (!empty($this->request->get('email'))) { - $email = 'email|unique:contacts,NULL,' . $id . ',id,company_id,' . $company_id . ',type,' . $type . ',deleted_at,NULL'; + $email .= 'email|unique:contacts,NULL,' + . $id . ',id' + . ',company_id,' . $company_id + . ',type,' . $type + . ',deleted_at,NULL'; + + if (isset($model) && $this->$model->user_id) { + $email .= '|unique:users,NULL,' . $this->$model->user_id . ',id,deleted_at,NULL'; + } } return [ diff --git a/app/Http/Requests/Portal/Profile.php b/app/Http/Requests/Portal/Profile.php index 097c501b9..4d7d375a0 100644 --- a/app/Http/Requests/Portal/Profile.php +++ b/app/Http/Requests/Portal/Profile.php @@ -31,9 +31,19 @@ class Profile extends FormRequest $picture = 'mimes:' . config('filesystems.mimes') . '|between:0,' . config('filesystems.max_size') * 1024; } + $email = 'required|email|unique:users,email,' . $id . ',id,deleted_at,NULL'; + + if (user()->contact) { + $email .= '|unique:contacts,NULL,' + . user()->contact->id . ',id' + . ',company_id,' . company_id() + . ',type,customer' + . ',deleted_at,NULL'; + } + return [ 'name' => 'required|string', - 'email' => 'required|email|unique:users,email,' . $id . ',id,deleted_at,NULL', + 'email' => $email, 'password' => 'confirmed', 'picture' => $picture, ]; diff --git a/app/Jobs/Auth/UpdateUser.php b/app/Jobs/Auth/UpdateUser.php index 15c66c0ca..9120a6d98 100644 --- a/app/Jobs/Auth/UpdateUser.php +++ b/app/Jobs/Auth/UpdateUser.php @@ -55,6 +55,10 @@ class UpdateUser extends Job if ($this->request->has('companies')) { $this->user->companies()->sync($this->request->get('companies')); } + + if ($this->user->contact) { + $this->user->contact->update($this->request->input()); + } }); return $this->user; diff --git a/app/Jobs/Common/UpdateContact.php b/app/Jobs/Common/UpdateContact.php index e0a58bdf9..a64a1a202 100644 --- a/app/Jobs/Common/UpdateContact.php +++ b/app/Jobs/Common/UpdateContact.php @@ -38,12 +38,14 @@ class UpdateContact extends Job \DB::transaction(function () { if ($this->request->get('create_user', 'false') === 'true') { $this->createUser(); + } elseif ($this->contact->user) { + $this->contact->user->update($this->request->all()); } // Upload logo if ($this->request->file('logo')) { $media = $this->getMedia($this->request->file('logo'), Str::plural($this->contact->type)); - + $this->contact->attachMedia($media, 'logo'); }