mirror of
https://gitlab.com/uldvstar/exchange-2.0.git
synced 2026-08-19 12:34:24 +00:00
159 lines
5.2 KiB
PHP
159 lines
5.2 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\Modules\Accounts\ControllersLogic;
|
|
|
|
use App\Http\Resources\UserResource;
|
|
|
|
use App\Classes\General\Abstracts\AbstractControllersLogic;
|
|
|
|
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 AbstractControllersLogic
|
|
{
|
|
/**
|
|
* @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;
|
|
|
|
|
|
/**
|
|
* UpdateUserLogic constructor.
|
|
* @param FetchesUser $fetchesUser
|
|
* @param CanUpdateCompany $canUpdateCompany
|
|
* @param UpdatesCompany $updatesCompany
|
|
* @param CanCreateDocument $canCreateDocument
|
|
* @param CreatesDocument $createsDocument
|
|
* @param CanCreateFile $canCreateFile
|
|
* @param CreatesFile $createsFile
|
|
* @param Convert64ToFile $convert64ToFile
|
|
*/
|
|
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) {
|
|
throw new ErrorException($exception->getMessage(), $exception->getCode());
|
|
}
|
|
|
|
}
|
|
} |