update admin setting - change email address

This commit is contained in:
edmondlang
2021-11-28 14:51:06 +08:00
parent 86401cdad6
commit a56b5c64ba
4 changed files with 103 additions and 1 deletions
@@ -0,0 +1,78 @@
<?php
namespace App\Classes\Modules\Accounts\ControllersLogic;
use App\Classes\Exceptions\ResourceConflictException;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Accounts\Processors\CreateUserProcessor;
use App\Classes\Modules\Accounts\Processors\GenerateEmailVerificationAttemptProcessor;
use App\Classes\Modules\Companies\DataTransferObjects\EmploymentObject;
use App\Classes\Modules\Companies\Processors\AssignEmployeeProcessor;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Http\Resources\UserResource;
use Illuminate\Database\QueryException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class AddNewMemberLogic extends AbstractControllerLogic
{
public function notification(): array
{
return [
'title' => '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));
}
}
@@ -0,0 +1,22 @@
<?php
namespace App\Http\Controllers\Companies;
use App\Classes\Modules\Accounts\ControllersLogic\AddNewMemberLogic;
use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class AddNewMemberController
{
/**
* @param Request $request
* @param AddNewMemberLogic $execute
* @return JsonResponse
*/
public function create(Request $request, AddNewMemberLogic $execute) : JsonResponse
{
return $execute->execute($request);
}
}
@@ -43,7 +43,7 @@
return {
error: '',
parameters: {
email: ''
email: this.data.email,
}
}
},
+2
View File
@@ -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');