mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal.git
synced 2026-08-19 04:24:12 +00:00
126 lines
4.1 KiB
PHP
126 lines
4.1 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\Modules\Wac\ControllersLogic;
|
|
|
|
use App\Classes\Exceptions\RequestValidationException;
|
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
use App\Classes\Modules\Accounts\DataTransferObjects\RegistrationObject;
|
|
use App\Classes\Modules\Companies\DataTransferObjects\EmploymentObject;
|
|
use App\Classes\Modules\HelpMenu\Standards\Rules\CanFetchHelpMenuQuestion;
|
|
use App\Classes\Modules\HelpMenu\Processors\FetchFirstQuestionQAProcessor;
|
|
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
|
use App\Http\Resources\HelpMenuQuestionResource;
|
|
use App\Models\User;
|
|
use ErrorException;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Log;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use App\Classes\Modules\Companies\Processors\AssignEmployeeProcessor;
|
|
use App\Classes\Modules\Accounts\Services\CreatesUser;
|
|
use App\Classes\ValueObjects\Constants\RoleTypes;
|
|
|
|
class RegisterExchangeEmailLogic extends AbstractControllerLogic
|
|
{
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
protected function notification(): array
|
|
{
|
|
return [
|
|
'title' => '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);
|
|
}
|
|
}
|