mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0.git
synced 2026-08-19 04:23:55 +00:00
a2381e44a7
Update Company Service Class Create Documents Service Class Create File Service Class Base64 File Convert Service Class File Upload Storage Service Class
158 lines
5.2 KiB
PHP
158 lines
5.2 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\Modules\Accounts\ControllersLogic;
|
|
|
|
use App\Http\Resources\UserResource;
|
|
|
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
|
|
use App\Classes\Modules\Accounts\Services\FetchesUser;
|
|
|
|
use App\Classes\Modules\Companies\Standards\Rules\CanUpdateCompany;
|
|
use App\Classes\Modules\Companies\Services\UpdatesCompany;
|
|
use App\Classes\Modules\Companies\DataTransferObjects\CompanyObject;
|
|
|
|
use App\Classes\Modules\Documents\Standards\Rules\CanCreateDocument;
|
|
use App\Classes\Modules\Documents\Services\CreatesDocument;
|
|
use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject;
|
|
|
|
use App\Classes\Modules\Documents\Standards\Rules\CanCreateFile;
|
|
use App\Classes\Modules\Documents\Services\CreatesFile;
|
|
use App\Classes\Modules\Documents\Services\Convert64ToFile;
|
|
use App\Classes\Modules\Documents\DataTransferObjects\FileObject;
|
|
|
|
use App\Classes\ValueObjects\Constants\OwnerType;
|
|
use App\Classes\ValueObjects\Constants\DocumentType;
|
|
use App\Classes\ValueObjects\Constants\ObjectStatus;
|
|
use App\Classes\ValueObjects\Constants\FileType;
|
|
|
|
use ErrorException;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class UpdateUserLogic extends AbstractControllerLogic
|
|
{
|
|
/**
|
|
* @return array
|
|
*/
|
|
protected function notification():array {
|
|
return [
|
|
'title' => 'Update User',
|
|
'message' => 'You have successfully update a user'
|
|
];
|
|
}
|
|
|
|
/** @var FetchesUser */
|
|
private $fetchesUser;
|
|
|
|
/** @var CanUpdateCompany */
|
|
private $canUpdateCompany;
|
|
|
|
/** @var UpdatesCompany */
|
|
private $updatesCompany;
|
|
|
|
/** @var CanCreateDocument */
|
|
private $canCreateDocument;
|
|
|
|
/** @var CreatesDocument */
|
|
private $createsDocument;
|
|
|
|
/** @var CanCreateFile */
|
|
private $canCreateFIle;
|
|
|
|
/** @var CreatesFile */
|
|
private $createsFile;
|
|
|
|
/** @var Convert64ToFile */
|
|
private $convert64ToFile;
|
|
|
|
/**
|
|
* UpdateUserControllerLogic constructor.
|
|
* @param FetchesUser $fetchesUser
|
|
* @param CanUpdateCompany $canUpdateCompany
|
|
* @param UpdatesCompany $updatesCompany
|
|
* @param CanCreateDocument $canCreateDocument
|
|
* @param CreatesDocument $createsDocument
|
|
* @param CanCreateFile $canCreateFile
|
|
* @param CreatesFile $createsFile
|
|
*/
|
|
public function __construct(
|
|
FetchesUser $fetchesUser,
|
|
CanUpdateCompany $canUpdateCompany,
|
|
UpdatesCompany $updatesCompany,
|
|
CanCreateDocument $canCreateDocument,
|
|
CreatesDocument $createsDocument,
|
|
CanCreateFile $canCreateFile,
|
|
CreatesFile $createsFile,
|
|
Convert64ToFile $convert64ToFile
|
|
)
|
|
{
|
|
$this->fetchesUser = $fetchesUser;
|
|
$this->canUpdateCompany = $canUpdateCompany;
|
|
$this->updatesCompany = $updatesCompany;
|
|
$this->canCreateDocument = $canCreateDocument;
|
|
$this->createsDocument = $createsDocument;
|
|
$this->canCreateFile = $canCreateFile;
|
|
$this->createsFile = $createsFile;
|
|
$this->convert64ToFile = $convert64ToFile;
|
|
}
|
|
|
|
/**
|
|
* @param Request $request
|
|
* @return JsonResponse
|
|
* @throws ErrorException
|
|
*/
|
|
public function logic(Request $request) : JsonResponse
|
|
{
|
|
try {
|
|
DB::beginTransaction();
|
|
|
|
$user_query = $this->fetchesUser->execute(['id' => \Auth::user()->id]);
|
|
$company_query = $user_query->company()->first();
|
|
|
|
$company_object = new CompanyObject(
|
|
$request->input('company_name', $company_query->name),
|
|
$request->input('company_reference', $company_query->refence),
|
|
$request->input('type', $company_query->type)
|
|
);
|
|
$this->canUpdateCompany->passes($company_object);
|
|
$company_query = $this->updatesCompany->execute($company_query, $company_object);
|
|
|
|
$document_type = $company_query->type == 1 ? DocumentType::COMPANY_PUBLIC_SMS_REGISTER : DocumentType::COMPANY_PERSONAL_IC;
|
|
$document_object = new DocumentObject(
|
|
$user_query->id,
|
|
OwnerType::COMPANY,
|
|
$document_type,
|
|
$request->input('document_reference'),
|
|
ObjectStatus::PENDING,
|
|
null,
|
|
null,
|
|
null,
|
|
null
|
|
);
|
|
$this->canCreateDocument->passes($document_object);
|
|
$document_query = $this->createsDocument->execute($document_object);
|
|
|
|
$file = $this->convert64ToFile->convert($request->input('file'));
|
|
$file_type = $company_query->type == 1 ? FileType::COMPANY_PUBLIC_SMS_REGISTER : FileType::COMPANY_PERSONAL_IC;
|
|
|
|
$file_object = new FileObject(
|
|
$document_query->id,
|
|
!empty($file[0]) ? json_encode($file[0]) : null,
|
|
$file_type
|
|
);
|
|
$this->canCreateFile->passes($file_object);
|
|
$file_query = $this->createsFile->execute($file_object);
|
|
|
|
DB::commit();
|
|
|
|
return $this->resourceResponse(new UserResource(\Auth::user()));
|
|
|
|
} catch (\Exception $exception) {
|
|
dd($exception);
|
|
throw new ErrorException($exception->getMessage(), $exception->getCode());
|
|
}
|
|
|
|
}
|
|
} |