From a56b5c64ba92684aedf31f4ea813510b5df9bf67 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Sun, 28 Nov 2021 14:51:06 +0800 Subject: [PATCH] update admin setting - change email address --- .../ControllersLogic/AddNewMemberLogic.php | 78 +++++++++++++++++++ .../Companies/AddNewMemberController.php | 22 ++++++ .../settings/forms/EditEmailFormComponent.vue | 2 +- routes/company.php | 2 + 4 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 app/Classes/Modules/Accounts/ControllersLogic/AddNewMemberLogic.php create mode 100644 app/Http/Controllers/Companies/AddNewMemberController.php diff --git a/app/Classes/Modules/Accounts/ControllersLogic/AddNewMemberLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/AddNewMemberLogic.php new file mode 100644 index 00000000..19dc5b59 --- /dev/null +++ b/app/Classes/Modules/Accounts/ControllersLogic/AddNewMemberLogic.php @@ -0,0 +1,78 @@ + 'Updated Email', + 'message' => 'Successfully updated email' + ]; + } + + /** + * @var AssignEmployeeProcessor + */ + private $assignEmployeeProcessor; + + /** + * @var GenerateEmailVerificationAttemptProcessor + */ + private $generateEmailVerificationAttemptProcessor; + + /** + * AddNewMemberLogic constructor. + * @param AssignEmployeeProcessor $assignEmployeeProcessor + * @param GenerateEmailVerificationAttemptProcessor $generateEmailVerificationAttemptProcessor + */ + public function __construct(AssignEmployeeProcessor $assignEmployeeProcessor, GenerateEmailVerificationAttemptProcessor $generateEmailVerificationAttemptProcessor) + { + $this->assignEmployeeProcessor = $assignEmployeeProcessor; + $this->generateEmailVerificationAttemptProcessor = $generateEmailVerificationAttemptProcessor; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws ResourceConflictException + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function logic(Request $request): JsonResponse + { + try { + $user = Auth::user()->replicate(); + $user->email = $request->input('email'); + $user->status = ApprovalStatus::PENDING_VERIFICATION; + $user->save(); + } catch (QueryException $exception){ + throw new ResourceConflictException('Unable to change your email address as it already exists'); + } + + if($company = Auth::user()->companyModule()->first()){ + $Object = new EmploymentObject($company, $user); + $this->assignEmployeeProcessor->execute($Object); + } + + $this->generateEmailVerificationAttemptProcessor->execute($user); + + return $this->resourceResponse(new UserResource($user)); + } +} diff --git a/app/Http/Controllers/Companies/AddNewMemberController.php b/app/Http/Controllers/Companies/AddNewMemberController.php new file mode 100644 index 00000000..6307ac37 --- /dev/null +++ b/app/Http/Controllers/Companies/AddNewMemberController.php @@ -0,0 +1,22 @@ +execute($request); + } +} diff --git a/resources/assets/vue/components/settings/forms/EditEmailFormComponent.vue b/resources/assets/vue/components/settings/forms/EditEmailFormComponent.vue index ca60b203..d44cd44f 100644 --- a/resources/assets/vue/components/settings/forms/EditEmailFormComponent.vue +++ b/resources/assets/vue/components/settings/forms/EditEmailFormComponent.vue @@ -43,7 +43,7 @@ return { error: '', parameters: { - email: '' + email: this.data.email, } } }, diff --git a/routes/company.php b/routes/company.php index e964d741..46a43be7 100644 --- a/routes/company.php +++ b/routes/company.php @@ -9,6 +9,8 @@ Route::group(['prefix' => 'company', 'as' => 'company.', 'namespace' => 'Compani Route::put('/update/{id}', 'UpdateCompanyController@update')->name('update'); Route::delete('/delete/{id}', 'DeleteCompanyController@destroy')->name('delete'); + Route::post('/team/create', 'AddNewMemberController@create')->name('team.create'); + Route::group(['prefix' => '{id}/segment', 'as' => 'segment.'], function () { Route::post('/assign', 'AssignCompanyToSegmentController@assign')->name('assign'); Route::delete('/detach/{segment_id}', 'RemoveCompanyFromSegmentController@detach')->name('detach');