'Admin 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 { Log::info($request->input('employeeId')); try { if (!$authUser = User::find($request->input('employeeId'))) { throw new ResourceNotFoundException('User not found.'); } $user = $authUser->replicate(); $user->email = $request->input('email'); $user->status = ApprovalStatus::PENDING_VERIFICATION; $user->save(); } catch (QueryException $e) { throw new ResourceConflictException('Email already exists.'); } Log::info($request->input('email')); if ($company = $authUser->companyModule()->first()) { $this->assignEmployeeProcessor->execute(new EmploymentObject($company, $user)); } $this->generateEmailVerificationAttemptProcessor->execute($user); return $this->resourceResponse(new UserResource($user)); } }