'Register Exchange Email', 'message' => 'You have successfully registered an exchange email address' ]; } /** @var AssignEmployeeProcessor */ private $assignEmployeeProcessor; /** @var CreatesUser */ private $createsUser; /** * RegisterEmailLogic constructor. * @param AssignEmployeeProcessor $assignEmployeeProcessor */ public function __construct(AssignEmployeeProcessor $assignEmployeeProcessor, CreatesUser $createsUser) { $this->assignEmployeeProcessor = $assignEmployeeProcessor; $this->createsUser = $createsUser; } /** * @param Request $request * @return JsonResponse * @throws ErrorException */ public function logic(Request $request): JsonResponse { // Validate the request inputs $validator = Validator::make( $request->all(), [ 'izyim_email' => 'email|required', 'exchange_email' => 'email|required', ] ); if ($validator->fails()) { throw new RequestValidationException($validator->messages()->first()); } // Retrieve the validated emails from the request $izyimEmail = $request->input('izyim_email'); $exchangeEmail = $request->input('exchange_email'); // Check if both emails are the same if ($izyimEmail === $exchangeEmail) { return response()->json([ 'message' => 'Both emails are the same.', 'status' => 'ok', ], 200); } // Check if the exchange email already exists in the system $existingUser = User::where('email', $exchangeEmail)->first(); if ($existingUser) { return response()->json([ 'message' => 'The Exchange email already exists in the system.', 'status' => 'error', ], 400); } // Retrieve the izyim user $izyimUser = User::where('email', $izyimEmail)->first(); if (!$izyimUser) { return response()->json([ 'message' => 'The Izyim email not found in system.', 'status' => 'error', ], 404); } $newUser = new User(); $newUser->name = $izyimUser->name; $newUser->email = $exchangeEmail; $newUser->password = $izyimUser->password; $newUser->type = RoleTypes::USER; $newUser->status = ApprovalStatus::APPROVED; $newUser->save(); Log::channel('wac_webhook')->info('Wac created user: ' . $exchangeEmail); $companyModule = $izyimUser->companyModule->first(); $Object = new EmploymentObject($companyModule, $newUser); $this->assignEmployeeProcessor->execute($Object); return response()->json([ 'message' => 'Exchange email registered successfully.', 'status' => 'success', ], 201); } }