Files
exchange-2.0/app/Classes/Modules/Accounts/ControllersLogic/AddNewMemberLogic.php
T
2021-09-11 13:15:25 +08:00

76 lines
2.5 KiB
PHP

<?php
namespace App\Classes\Modules\Accounts\ControllersLogic;
use App\Classes\Exceptions\ErrorException;
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\Classes\ValueObjects\Constants\RoleTypes;
use App\Models\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Auth;
class AddNewMemberLogic extends AbstractControllerLogic
{
/**
* @var AssignEmployeeProcessor
*/
private $assignEmployeeProcessor;
/** @var CreateUserProcessor */
private $createUserProcessor;
/**
* @var GenerateEmailVerificationAttemptProcessor
*/
private $generateEmailVerificationAttemptProcessor;
public function notification(): array
{
return [
'title' => 'Updated Email',
'message' => 'Successfully updated email'
];
}
public function __construct(CreateUserProcessor $createUserProcessor, AssignEmployeeProcessor $assignEmployeeProcessor, GenerateEmailVerificationAttemptProcessor $generateEmailVerificationAttemptProcessor)
{
$this->createUserProcessor = $createUserProcessor;
$this->assignEmployeeProcessor = $assignEmployeeProcessor;
$this->generateEmailVerificationAttemptProcessor = $generateEmailVerificationAttemptProcessor;
}
public function logic(Request $request): JsonResponse
{
$new_email = $request->input('name');
$user = Auth::user();
$company = $user->company()->first();
$user->email = $new_email;
request()->request->add([
'name' => $user->name,
'email' => $new_email,
'password' => $user->getAuthPassword(),
'password_confirmation' => $user->getAuthPassword()
]);
/** @var User $user */
$user = $this->createUserProcessor->execute($request, RoleTypes::USER, ApprovalStatus::PENDING_VERIFICATION);
$Object = new EmploymentObject($company, $user);
$this->assignEmployeeProcessor->execute($Object);
$this->generateEmailVerificationAttemptProcessor->execute($user);
return $this->response([
'message' => 'test'
]);
}
}