new: Add classes required to upload identity document during account registration. #5

This commit is contained in:
weichien00
2021-07-03 00:58:24 +08:00
parent 9bcb45e5cc
commit aaf0ff7645
10 changed files with 533 additions and 0 deletions
@@ -0,0 +1,46 @@
<?php
namespace App\Classes\Modules\Documents\Processors;
use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject;
use App\Classes\Modules\Documents\Services\CreatesDocument;
use App\Classes\Modules\Documents\Services\CreatesFiles;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\CompanyType;
use App\Classes\ValueObjects\Constants\DocumentType;
use Illuminate\Http\Request;
use App\Models\Company;
class UploadIdentityDocumentProcessor
{
/**
* UploadIdentityDocumentProcessor constructor.
* @param CreatesDocument $createsDocument
* @param CreatesFiles $createsFile
*/
public function __construct(CreatesDocument $createsDocument, CreatesFiles $createsFile)
{
$this->createsDocument = $createsDocument;
$this->createsFile = $createsFile;
}
/**
* @param DocumentObject $object
* @return Array
* @throws \App\Classes\Exceptions\AccessForbiddenException
* @throws \App\Classes\Exceptions\MalformedRequestException
* @throws \App\Classes\Exceptions\RequestValidationException
*/
public function execute(Request $request, Company $company): Array {
$object = new DocumentObject($company->type === CompanyType::COMPANY_BUSINESS ?
DocumentType::SSM_REGISTRATION : DocumentType::IDENTITY_CARD, $request->input('files'),
$request->input('identification_no'), ApprovalStatus::PENDING_VERIFICATION, 'identifications');
/** @var Document $document */
$document = $this->createsDocument->execute($company, $object);
return $this->createsFile->execute($document, $object);
}
}