mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/portal.git
synced 2026-08-19 04:23:59 +00:00
big commit
This commit is contained in:
@@ -89,7 +89,7 @@ class ScaffoldGeneratorCommand extends BaseCommand
|
||||
*/
|
||||
protected function checkIsThereAnyDataToGenerate()
|
||||
{
|
||||
if (count($this->commandData->fields) > 1) {
|
||||
if (count($this->commandData->fields) > 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
[
|
||||
{
|
||||
"name": "name",
|
||||
"dbType": "string",
|
||||
"htmlType": "text",
|
||||
"validations": "required",
|
||||
"searchable": true,
|
||||
"fillable": true,
|
||||
"primary": false,
|
||||
"inForm": true,
|
||||
"inIndex": true
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\General\Eloquent;
|
||||
|
||||
use App\Classes\Exceptions\MalformedRequestException;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOneOrMany;
|
||||
use Illuminate\Database\QueryException;
|
||||
|
||||
abstract class AbstractUpdateRelationshipRecord
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* @param HasOneOrMany $relation
|
||||
* @param Model $model
|
||||
* @return Model
|
||||
* @throws MalformedRequestException
|
||||
*/
|
||||
public function handler(HasOneOrMany $relation, Model $model){
|
||||
try{
|
||||
|
||||
if($relation->save($model)){
|
||||
return $model;
|
||||
}
|
||||
|
||||
} catch (QueryException $exception){
|
||||
throw new MalformedRequestException('Unable to update the record due to unexpected error');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\General\Eloquent\Filters;
|
||||
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
|
||||
class CompanyId implements Filter
|
||||
{
|
||||
|
||||
/**
|
||||
* @param Builder $builder
|
||||
* @param $value
|
||||
* @return Builder|mixed
|
||||
*/
|
||||
public static function apply(Builder $builder, $value)
|
||||
{
|
||||
return $builder->where('company_id', $value);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\General\Interfaces;
|
||||
|
||||
|
||||
use Illuminate\Database\Eloquent\Relations\MorphMany;
|
||||
|
||||
interface Documentable
|
||||
{
|
||||
|
||||
public function documents(): morphMany;
|
||||
|
||||
}
|
||||
@@ -5,15 +5,33 @@ namespace App\Classes\Modules\Addresses\ControllersLogic;
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||
use App\Classes\Modules\Addresses\Services\CreatesAddress;
|
||||
use App\Classes\Modules\Addresses\Services\ResetsAddressDefault;
|
||||
use App\Classes\Modules\Addresses\Services\SetsAddressDefault;
|
||||
use App\Classes\Modules\Addresses\Standards\Rules\CanCreateAddress;
|
||||
use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject;
|
||||
use App\Http\Resources\AddressResource;
|
||||
use App\Models\Address;
|
||||
use ErrorException;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class CreateAddressLogic extends AbstractControllerLogic
|
||||
{
|
||||
/**
|
||||
* CreateAddressLogic constructor.
|
||||
* @param CanCreateAddress $canCreateAddress
|
||||
* @param CreatesAddress $createsAddress
|
||||
* @param ResetsAddressDefault $resetsAddressDefault
|
||||
* @param SetsAddressDefault $setsAddressDefault
|
||||
*/
|
||||
public function __construct(CanCreateAddress $canCreateAddress, CreatesAddress $createsAddress, ResetsAddressDefault $resetsAddressDefault, SetsAddressDefault $setsAddressDefault)
|
||||
{
|
||||
$this->canCreateAddress = $canCreateAddress;
|
||||
$this->createsAddress = $createsAddress;
|
||||
$this->resetsAddressDefault = $resetsAddressDefault;
|
||||
$this->setsAddressDefault = $setsAddressDefault;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return array
|
||||
@@ -31,16 +49,12 @@ class CreateAddressLogic extends AbstractControllerLogic
|
||||
/** @var CreatesAddress */
|
||||
private $createsAddress;
|
||||
|
||||
/**
|
||||
* CreateAddressControllerLogic constructor.
|
||||
* @param CanCreateAddress $canCreateAddress
|
||||
* @param CreatesAddress $createsAddress
|
||||
*/
|
||||
public function __construct(CanCreateAddress $canCreateAddress, CreatesAddress $createsAddress)
|
||||
{
|
||||
$this->canCreateAddress = $canCreateAddress;
|
||||
$this->createsAddress = $createsAddress;
|
||||
}
|
||||
/** @var ResetsAddressDefault */
|
||||
private $resetsAddressDefault;
|
||||
|
||||
/** @var SetsAddressDefault */
|
||||
private $setsAddressDefault;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
@@ -56,8 +70,13 @@ class CreateAddressLogic extends AbstractControllerLogic
|
||||
|
||||
$this->canCreateAddress->passes($object);
|
||||
|
||||
/** @var Address $query */
|
||||
$query = $this->createsAddress->execute($object);
|
||||
|
||||
$this->resetsAddressDefault->execute($query);
|
||||
|
||||
$this->setsAddressDefault->execute($query);
|
||||
|
||||
return $this->resourceResponse(new AddressResource($query));
|
||||
|
||||
} catch (\Exception $exception){
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Addresses\ControllersLogic;
|
||||
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||
use App\Classes\Modules\Addresses\Services\CreatesAddress;
|
||||
use App\Classes\Modules\Addresses\Services\FetchesAddress;
|
||||
use App\Classes\Modules\Addresses\Services\ResetsAddressDefault;
|
||||
use App\Classes\Modules\Addresses\Services\SetsAddressDefault;
|
||||
use App\Classes\Modules\Addresses\Standards\Rules\CanCreateAddress;
|
||||
use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject;
|
||||
use App\Http\Resources\AddressResource;
|
||||
use App\Models\Address;
|
||||
use ErrorException;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class SetAddressDefaultLogic extends AbstractControllerLogic
|
||||
{
|
||||
/**
|
||||
* SetAddressDefaultLogic constructor.
|
||||
* @param FetchesAddress $fetchesAddress
|
||||
* @param ResetsAddressDefault $resetsAddressDefault
|
||||
* @param SetsAddressDefault $setsAddressDefault
|
||||
*/
|
||||
public function __construct(FetchesAddress $fetchesAddress, ResetsAddressDefault $resetsAddressDefault, SetsAddressDefault $setsAddressDefault)
|
||||
{
|
||||
$this->fetchesAddress = $fetchesAddress;
|
||||
$this->resetsAddressDefault = $resetsAddressDefault;
|
||||
$this->setsAddressDefault = $setsAddressDefault;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function notification():array {
|
||||
return [
|
||||
'title' => 'Set Default Address',
|
||||
'message' => 'You have successfully updated your default address'
|
||||
];
|
||||
}
|
||||
|
||||
/** @var FetchesAddress */
|
||||
private $fetchesAddress;
|
||||
|
||||
/** @var ResetsAddressDefault */
|
||||
private $resetsAddressDefault;
|
||||
|
||||
/** @var SetsAddressDefault */
|
||||
private $setsAddressDefault;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @return JsonResponse
|
||||
* @throws ErrorException
|
||||
*/
|
||||
public function logic(Request $request) : JsonResponse
|
||||
{
|
||||
try {
|
||||
|
||||
$address = $this->fetchesAddress->execute(['id' => $request->route('id')]);
|
||||
|
||||
$this->resetsAddressDefault->execute($address);
|
||||
|
||||
$this->setsAddressDefault->execute($address);
|
||||
|
||||
return $this->resourceResponse(new AddressResource($address));
|
||||
|
||||
} catch (\Exception $exception){
|
||||
throw new ErrorException($exception->getMessage(), $exception->getCode());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Addresses\Services;
|
||||
|
||||
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
||||
use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject;
|
||||
use App\Models\Address;
|
||||
|
||||
class ResetsAddressDefault
|
||||
{
|
||||
|
||||
/**
|
||||
* @param Address $model
|
||||
* @return void
|
||||
*/
|
||||
public function execute(Address $model) {
|
||||
$model->company->addresses()->update([
|
||||
'default' => false,
|
||||
'billing' => false
|
||||
]);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Addresses\Services;
|
||||
|
||||
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
||||
use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject;
|
||||
use App\Models\Address;
|
||||
|
||||
class SetsAddressDefault extends AbstractUpdateRecord
|
||||
{
|
||||
|
||||
/**
|
||||
* @param Address $model
|
||||
* @return void
|
||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||
*/
|
||||
public function execute(Address $model) {
|
||||
$model->default = true;
|
||||
$model->billing = true;
|
||||
|
||||
$this->handler($model);
|
||||
|
||||
}
|
||||
}
|
||||
+100
@@ -0,0 +1,100 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Companies\ControllersLogic;
|
||||
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||
use App\Classes\Modules\Accounts\Services\FetchesUser;
|
||||
use App\Classes\Modules\Companies\Processors\CreateCompanyProcessor;
|
||||
use App\Classes\Modules\Companies\Services\FetchesCompany;
|
||||
use App\Classes\Modules\Companies\Services\UpdatesCompanyStatus;
|
||||
use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject;
|
||||
use App\Classes\Modules\Documents\Services\CreatesDocument;
|
||||
use App\Classes\Modules\Documents\Services\CreatesFile;
|
||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||
use App\Classes\ValueObjects\Constants\CompanyTypes;
|
||||
use App\Classes\ValueObjects\Constants\DocumentType;
|
||||
use App\Classes\ValueObjects\Constants\OwnerType;
|
||||
use App\Http\Resources\CompanyResource;
|
||||
use App\Http\Resources\DocumentResource;
|
||||
use App\Models\Document;
|
||||
use ErrorException;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class UpdateCompanyIdentificationDocumentLogic extends AbstractControllerLogic
|
||||
{
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function notification():array {
|
||||
return [
|
||||
'title' => 'Company Identification',
|
||||
'message' => 'You have successfully created a new Company Identification Document'
|
||||
];
|
||||
}
|
||||
|
||||
/** @var FetchesUser */
|
||||
private $fetchesUser;
|
||||
|
||||
/** @var FetchesCompany */
|
||||
private $fetchesCompany;
|
||||
|
||||
/** @var CreatesDocument */
|
||||
private $createsDocument;
|
||||
|
||||
/** @var CreatesFile */
|
||||
private $createsFile;
|
||||
|
||||
/** @var UpdatesCompanyStatus */
|
||||
private $updatesCompanyStatus;
|
||||
|
||||
/**
|
||||
* UpdateCompanyIdentificationDocumentLogic constructor.
|
||||
* @param FetchesUser $fetchesUser
|
||||
* @param FetchesCompany $fetchesCompany
|
||||
* @param CreatesDocument $createsDocument
|
||||
* @param CreatesFile $createsFile
|
||||
* @param UpdatesCompanyStatus $updatesCompanyStatus
|
||||
*/
|
||||
public function __construct(FetchesUser $fetchesUser, FetchesCompany $fetchesCompany, CreatesDocument $createsDocument, CreatesFile $createsFile, UpdatesCompanyStatus $updatesCompanyStatus)
|
||||
{
|
||||
$this->fetchesUser = $fetchesUser;
|
||||
$this->fetchesCompany = $fetchesCompany;
|
||||
$this->createsDocument = $createsDocument;
|
||||
$this->createsFile = $createsFile;
|
||||
$this->updatesCompanyStatus = $updatesCompanyStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @return JsonResponse
|
||||
* @throws ErrorException
|
||||
*/
|
||||
public function logic(Request $request) : JsonResponse
|
||||
{
|
||||
try {
|
||||
|
||||
$company = $this->fetchesCompany->execute(['id' => $request->route('id')]);
|
||||
|
||||
$object = new DocumentObject(
|
||||
$company->type === CompanyTypes::COMPANY_BUSINESS ? DocumentType::SSM_REGISTRATION: DocumentType::IDENTITY_CARD,
|
||||
$request->input('files'), $request->input('reference'));
|
||||
|
||||
/** @var Document $document */
|
||||
$document = $this->createsDocument->execute($company, $object);
|
||||
|
||||
$this->createsFile->execute($document, $object);
|
||||
|
||||
$this->updatesCompanyStatus->execute($company, ApprovalStatus::PENDING_VERIFICATION);
|
||||
|
||||
return $this->resourceResponse(new DocumentResource($document));
|
||||
|
||||
} catch (\Exception $exception){
|
||||
throw new ErrorException($exception->getMessage(), $exception->getCode());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Companies\Services;
|
||||
|
||||
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
||||
use App\Classes\Modules\Companies\DataTransferObjects\CompanyObject;
|
||||
use App\Models\Company;
|
||||
|
||||
class UpdatesCompanyStatus extends AbstractUpdateRecord
|
||||
{
|
||||
|
||||
/**
|
||||
* @param Company $model
|
||||
* @param int $status
|
||||
* @return \Illuminate\Database\Eloquent\Model
|
||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||
*/
|
||||
public function execute(Company $model, int $status)
|
||||
{
|
||||
|
||||
$model->status = $status;
|
||||
return $this->handler($model);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Documents\ControllersLogic;
|
||||
|
||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||
use App\Http\Resources\DocumentResource;
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||
|
||||
use App\Classes\Modules\Documents\Services\FetchesDocument;
|
||||
|
||||
use App\Classes\Modules\Documents\Standards\Rules\CanUpdateDocument;
|
||||
use App\Classes\Modules\Documents\Services\ApprovesDocument;
|
||||
use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject;
|
||||
|
||||
use ErrorException;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class ApproveDocumentLogic extends AbstractControllerLogic
|
||||
{
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function notification():array {
|
||||
return [
|
||||
'title' => 'Approve Document',
|
||||
'message' => 'You have successfully approved the Document'
|
||||
];
|
||||
}
|
||||
|
||||
/** @var CanUpdateDocument */
|
||||
private $canUpdateDocument;
|
||||
|
||||
/** @var ApprovesDocument */
|
||||
private $approvesDocument;
|
||||
|
||||
/** @var FetchesDocument */
|
||||
private $fetchesDocument;
|
||||
|
||||
/**
|
||||
* UpdateStandardSegmentConstantLogic constructor.
|
||||
* @param CanUpdateDocument $canUpdateDocument
|
||||
* @param ApprovesDocument $approvesDocument
|
||||
* @param FetchesDocument $fetchesDocument
|
||||
*/
|
||||
public function __construct(
|
||||
canUpdateDocument $canUpdateDocument,
|
||||
ApprovesDocument $approvesDocument,
|
||||
FetchesDocument $fetchesDocument
|
||||
)
|
||||
{
|
||||
$this->canUpdateDocument = $canUpdateDocument;
|
||||
$this->approvesDocument = $approvesDocument;
|
||||
$this->fetchesDocument = $fetchesDocument;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @return JsonResponse
|
||||
* @throws ErrorException
|
||||
*/
|
||||
public function logic(Request $request) : JsonResponse
|
||||
{
|
||||
try {
|
||||
|
||||
$document = $this->fetchesDocument->execute(['id' => $request->route('id')]);
|
||||
|
||||
$this->canUpdateDocument->passes($document);
|
||||
|
||||
$document_query = $this->approvesDocument->execute($document);
|
||||
|
||||
|
||||
return $this->resourceResponse(new DocumentResource($document_query));
|
||||
|
||||
} catch (\Exception $exception){
|
||||
throw new ErrorException($exception->getMessage(), $exception->getCode());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Documents\ControllersLogic;
|
||||
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||
use App\Classes\Modules\Documents\Services\ListsDocuments;
|
||||
use App\Classes\Modules\Documents\Standards\Rules\CanListDocuments;
|
||||
use App\Http\Resources\DocumentResource;
|
||||
use ErrorException;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ListDocumentLogic extends AbstractControllerLogic
|
||||
{
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function notification():array {
|
||||
return [
|
||||
'title' => 'Retrieved Document',
|
||||
'message' => 'You have successfully retrieved a list of Document'
|
||||
];
|
||||
}
|
||||
|
||||
/** @var CanListDocuments */
|
||||
private $canListDocuments;
|
||||
|
||||
/** @var ListsDocuments */
|
||||
private $listsDocuments;
|
||||
|
||||
/**
|
||||
* ListStandardSegmentLogic constructor.
|
||||
* @param CanListDocuments $canListDocuments
|
||||
* @param ListsDocuments $listsDocuments
|
||||
*/
|
||||
public function __construct(CanListDocuments $canListDocuments, ListsDocuments $listsDocuments)
|
||||
{
|
||||
$this->canListDocuments = $canListDocuments;
|
||||
$this->listsDocuments = $listsDocuments;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @return JsonResponse
|
||||
* @throws ErrorException
|
||||
*/
|
||||
public function logic(Request $request) : JsonResponse
|
||||
{
|
||||
try {
|
||||
|
||||
$this->canListDocuments->passes();
|
||||
|
||||
$query = $this->listsDocuments->execute($this->listsDocuments->deserializeFilters($request->input('filters')));
|
||||
|
||||
return $this->collectionResponse(DocumentResource::collection($query));
|
||||
|
||||
} catch (\Exception $exception){
|
||||
throw new ErrorException($exception->getMessage(), $exception->getCode());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Documents\DataTransferObjects;
|
||||
|
||||
use App\Classes\Interfaces\DataTransferObject;
|
||||
use App\Classes\Modules\Documents\Services\ConvertsBase64ToFile;
|
||||
|
||||
class DocumentObject implements DataTransferObject
|
||||
{
|
||||
|
||||
/** @var string */
|
||||
private $document_type;
|
||||
|
||||
/** @var array */
|
||||
private $files;
|
||||
|
||||
/** @var string|null */
|
||||
private $reference;
|
||||
|
||||
/**
|
||||
* DocumentObject constructor.
|
||||
* @param string $document_type
|
||||
* @param array $files
|
||||
* @param null|string $reference
|
||||
*/
|
||||
public function __construct(string $document_type, array $files, ?string $reference = null)
|
||||
{
|
||||
$this->document_type = $document_type;
|
||||
$this->files = $files;
|
||||
$this->reference = $reference;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getDocumentType(): string
|
||||
{
|
||||
return $this->document_type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string|null
|
||||
*/
|
||||
public function getReference(): string
|
||||
{
|
||||
return $this->reference;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||
*/
|
||||
public function getFiles(): array
|
||||
{
|
||||
return (new ConvertsBase64ToFile())->convert($this->files);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Documents\DataTransferObjects;
|
||||
|
||||
use App\Classes\Exceptions\MalformedRequestException;
|
||||
use App\Classes\Interfaces\DataTransferObject;
|
||||
use App\Classes\ValueObjects\Constants\File;
|
||||
use Illuminate\Support\Str;
|
||||
use Intervention\Image\ImageManager;
|
||||
|
||||
class FileObject implements DataTransferObject
|
||||
{
|
||||
/** @var string */
|
||||
private $data;
|
||||
|
||||
/**
|
||||
* FileInfoObject constructor.
|
||||
* @param string $data
|
||||
*/
|
||||
public function __construct(string $data)
|
||||
{
|
||||
$this->data = $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Intervention\Image\Image|string
|
||||
* @throws MalformedRequestException
|
||||
*/
|
||||
public function getData()
|
||||
{
|
||||
return $this->getExtension() === 'pdf' ? $this->data : (new imageManager())->make($this->data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getFileName(): string
|
||||
{
|
||||
return (string) Str::uuid();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getMimeType(): string
|
||||
{
|
||||
return finfo_file(finfo_open(), $this->data, FILEINFO_MIME_TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
* @throws MalformedRequestException
|
||||
*/
|
||||
public function getExtension(): string
|
||||
{
|
||||
if(array_key_exists($this->getMimeType(), File::EXTENSION)){
|
||||
return File::EXTENSION[$this->getMimeType()];
|
||||
}
|
||||
|
||||
throw new MalformedRequestException('Failed to save file due to Unknown file extension');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
* @throws MalformedRequestException
|
||||
*/
|
||||
public function getDecodedData(): string
|
||||
{
|
||||
return $this->getExtension() === 'pdf' ?
|
||||
base64_decode((explode('base64,', $this->getData()))[1]):
|
||||
$this->getData()->encode('data-url')->encoded;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $data
|
||||
*/
|
||||
public function setData(string $data): void
|
||||
{
|
||||
$this->data = $data;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Documents\Services;
|
||||
|
||||
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
||||
use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject;
|
||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||
use App\Models\Document;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class ApprovesDocument extends AbstractUpdateRecord
|
||||
{
|
||||
|
||||
/**
|
||||
* @param Document $model
|
||||
* @return \Illuminate\Database\Eloquent\Model
|
||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||
*/
|
||||
public function execute(Document $model)
|
||||
{
|
||||
$model->status = ApprovalStatus::ACTIVE;
|
||||
$model->approved_by = Auth()->user()->id;
|
||||
$model->approved_date = Carbon::now();
|
||||
|
||||
return $this->handler($model);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,128 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Documents\Services;
|
||||
|
||||
use App\Classes\Exceptions\MalformedRequestException;
|
||||
use App\Classes\Modules\Documents\DataTransferObjects\FileObject;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class ConvertsBase64ToFile
|
||||
{
|
||||
|
||||
/** @var string|null */
|
||||
private $path;
|
||||
|
||||
/** @var array */
|
||||
private $filesInfo;
|
||||
|
||||
/**
|
||||
* ConvertsBase64ToFile constructor.
|
||||
* @param null|string $path
|
||||
*/
|
||||
public function __construct(?string $path = 'documents')
|
||||
{
|
||||
$this->path = $path;
|
||||
$this->filesInfo = [];
|
||||
|
||||
File::isDirectory(storage_path($this->path)) or
|
||||
File::makeDirectory(storage_path($this->path), 0777, true, true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param array $files
|
||||
* @return array
|
||||
* @throws MalformedRequestException
|
||||
*/
|
||||
public function convert($files = []){
|
||||
foreach ($files as $file) {
|
||||
|
||||
$object = new FileObject($file);
|
||||
$object->getExtension() === 'pdf' ? $this->generatePDF($object) : $this->generateImage($object);
|
||||
|
||||
}
|
||||
|
||||
return $this->filesInfo;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FileObject $file
|
||||
* @throws MalformedRequestException
|
||||
*/
|
||||
private function generatePDF(FileObject $file){
|
||||
|
||||
$filePath = $this->generateFile($file);
|
||||
$this->updateFiles($file, [ 'original' => [ 'file' => $filePath ] ]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FileObject $file
|
||||
* @throws MalformedRequestException
|
||||
*/
|
||||
private function generateImage(FileObject $file){
|
||||
|
||||
$fileInfo = [];
|
||||
|
||||
foreach (['original' => null, 'large' => 800, 'medium' => 480, 'small' => 320] as $size => $value) {
|
||||
$suffix = $size !== 'original' ? '_'.$size : '';
|
||||
|
||||
if($size !== 'original') {
|
||||
$thumbnail = $file->getData()->widen($value, function ($constraint) {
|
||||
|
||||
$constraint->upsize();
|
||||
|
||||
})->heighten($value, function ($constraint) {
|
||||
|
||||
$constraint->upsize();
|
||||
|
||||
});
|
||||
|
||||
$file->setData($thumbnail->encode('data-url')->encoded);
|
||||
}
|
||||
|
||||
|
||||
$filePath = $this->generateFile($file, $suffix);
|
||||
|
||||
$fileInfo[] = [ $size => [ 'file' => $filePath, 'width' => $file->getData()->width(), 'height' => $file->getData()->height() ]];
|
||||
|
||||
|
||||
}
|
||||
|
||||
$this->updateFiles($file, $fileInfo);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FileObject $file
|
||||
* @param string $suffix
|
||||
* @return string
|
||||
* @throws MalformedRequestException
|
||||
*/
|
||||
private function generateFile(FileObject $file, string $suffix = '') {
|
||||
|
||||
$filePath = storage_path($this->path.'/'.$file->getFileName().$suffix.'.'.$file->getExtension());
|
||||
|
||||
Storage::put($filePath, $file->getDecodedData());
|
||||
|
||||
return $filePath;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FileObject $file
|
||||
* @param array $fileInfo
|
||||
* @throws MalformedRequestException
|
||||
*/
|
||||
private function updateFiles(FileObject $file, array $fileInfo){
|
||||
$this->filesInfo[] = json_encode([
|
||||
'path' => $this->path,
|
||||
'filename' => $file->getFileName().'.'.$file->getExtension(),
|
||||
'mime_type' => $file->getMimeType(),
|
||||
'extension' => $file->getExtension(),
|
||||
'file_info' => $fileInfo
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Documents\Services;
|
||||
|
||||
use App\Classes\General\Eloquent\AbstractUpdateRelationshipRecord;
|
||||
use App\Classes\General\Interfaces\Documentable;
|
||||
use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject;
|
||||
use App\Models\Document;
|
||||
|
||||
class CreatesDocument extends AbstractUpdateRelationshipRecord
|
||||
{
|
||||
/**
|
||||
* @param Documentable $documentable
|
||||
* @param DocumentObject $object
|
||||
* @return \Illuminate\Database\Eloquent\Model
|
||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||
*/
|
||||
public function execute(Documentable $documentable, DocumentObject $object)
|
||||
{
|
||||
$model = new Document();
|
||||
$model->document_type = $object->getDocumentType();
|
||||
$model->reference = $object->getReference();
|
||||
|
||||
return $this->handler($documentable->documents(), $model);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Documents\Services;
|
||||
|
||||
use App\Classes\General\Eloquent\AbstractUpdateRelationshipRecord;
|
||||
use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject;
|
||||
use App\Models\Document;
|
||||
use App\Models\File;
|
||||
|
||||
class CreatesFile extends AbstractUpdateRelationshipRecord
|
||||
{
|
||||
/**
|
||||
* @param Document $document
|
||||
* @param DocumentObject $object
|
||||
* @return array
|
||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||
*/
|
||||
public function execute(Document $document, DocumentObject $object)
|
||||
{
|
||||
$models = [];
|
||||
|
||||
foreach ($object->getFiles() as $file) {
|
||||
|
||||
$model = new File(['file' => $file]);
|
||||
$models[] = $this->handler($document->files(), $model);
|
||||
|
||||
}
|
||||
|
||||
return $models;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Documents\Services;
|
||||
|
||||
|
||||
use App\Classes\General\Eloquent\AbstractFetchRecord;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use App\Models\Document;
|
||||
|
||||
class FetchesDocument extends AbstractFetchRecord
|
||||
{
|
||||
|
||||
/** @var Document */
|
||||
private $repository;
|
||||
|
||||
/**
|
||||
* FetchesUser constructor.
|
||||
* @param Document $repository
|
||||
*/
|
||||
public function __construct(Document $repository)
|
||||
{
|
||||
$this->repository = $repository;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return Builder
|
||||
*/
|
||||
public function getRepository(): Builder
|
||||
{
|
||||
return $this->repository->newQuery();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Documents\Services;
|
||||
|
||||
|
||||
use App\Classes\General\Eloquent\AbstractListRecord;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use App\Models\Document;
|
||||
|
||||
class ListsDocuments extends AbstractListRecord
|
||||
{
|
||||
|
||||
/** @var Document */
|
||||
private $repository;
|
||||
|
||||
/**
|
||||
* ListsDocuments constructor.
|
||||
* @param Document $repository
|
||||
*/
|
||||
public function __construct(Document $repository)
|
||||
{
|
||||
$this->repository = $repository;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return Builder
|
||||
*/
|
||||
function getRepository(): Builder
|
||||
{
|
||||
return $this->repository->newQuery();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Documents\Standards\Rules;
|
||||
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractRule;
|
||||
use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject;
|
||||
use App\Classes\Modules\Documents\Standards\Validators\DocumentValidation;
|
||||
|
||||
class CanCreateDocument extends AbstractRule
|
||||
{
|
||||
|
||||
/** @var DocumentValidation */
|
||||
private $documentValidation;
|
||||
|
||||
/**
|
||||
* CanCreateAddress constructor.
|
||||
* @param DocumentValidation $documentValidation
|
||||
*/
|
||||
public function __construct(DocumentValidation $documentValidation)
|
||||
{
|
||||
$this->documentValidation = $documentValidation;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
protected function authorized(): bool
|
||||
{
|
||||
// TODO Set Authorization rules
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param DocumentObject $object
|
||||
* @return bool
|
||||
* @throws \App\Classes\Exceptions\RequestValidationException
|
||||
*/
|
||||
protected function validators($object): bool
|
||||
{
|
||||
return $this->documentValidation->validate($object);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param DocumentObject $object
|
||||
* @return bool
|
||||
*/
|
||||
protected function criteria($object): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Documents\Standards\Rules;
|
||||
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractRule;
|
||||
use App\Classes\Modules\Documents\DataTransferObjects\FileObject;
|
||||
use App\Classes\Modules\Documents\Standards\Validators\FileValidation;
|
||||
|
||||
class CanCreateFile extends AbstractRule
|
||||
{
|
||||
|
||||
/** @var FileValidation */
|
||||
private $fileValidation;
|
||||
|
||||
/**
|
||||
* CanCreateFile constructor.
|
||||
* @param FileValidation $fileValidation
|
||||
*/
|
||||
public function __construct(FileValidation $fileValidation)
|
||||
{
|
||||
$this->fileValidation = $fileValidation;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
protected function authorized(): bool
|
||||
{
|
||||
// TODO Set Authorization rules
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FileObject $object
|
||||
* @return bool
|
||||
* @throws \App\Classes\Exceptions\RequestValidationException
|
||||
*/
|
||||
protected function validators($object): bool
|
||||
{
|
||||
return $this->fileValidation->validate($object);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FileObject $object
|
||||
* @return bool
|
||||
*/
|
||||
protected function criteria($object): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Documents\Standards\Rules;
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractRule;
|
||||
use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject;
|
||||
|
||||
class CanListDocuments extends AbstractRule
|
||||
{
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
protected function authorized(): bool
|
||||
{
|
||||
// TODO Set Authorization rules
|
||||
|
||||
if (!\Auth::user()->can('view document')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param DocumentObject $object
|
||||
* @return bool
|
||||
*/
|
||||
protected function validators($object): bool
|
||||
{
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param DocumentObject $object
|
||||
* @return bool
|
||||
*/
|
||||
protected function criteria($object): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Documents\Standards\Rules;
|
||||
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractRule;
|
||||
use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject;
|
||||
use App\Classes\Modules\Documents\Standards\Validators\DocumentValidation;
|
||||
|
||||
class CanUpdateDocument extends AbstractRule
|
||||
{
|
||||
|
||||
/** @var DocumentValidation */
|
||||
private $documentValidation;
|
||||
|
||||
/**
|
||||
* CanCreateAddress constructor.
|
||||
* @param DocumentValidation $documentValidation
|
||||
*/
|
||||
public function __construct(DocumentValidation $documentValidation)
|
||||
{
|
||||
$this->documentValidation = $documentValidation;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
protected function authorized(): bool
|
||||
{
|
||||
// TODO Set Authorization rules
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param DocumentObject $object
|
||||
* @return bool
|
||||
* @throws \App\Classes\Exceptions\RequestValidationException
|
||||
*/
|
||||
protected function validators($object): bool
|
||||
{
|
||||
return $this->documentValidation->validate($object);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param DocumentObject $object
|
||||
* @return bool
|
||||
*/
|
||||
protected function criteria($object): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Documents\Standards\Validators;
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractValidation;
|
||||
use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject;
|
||||
|
||||
class DocumentValidation extends AbstractValidation
|
||||
{
|
||||
/**
|
||||
* @param DocumentObject $object
|
||||
* @return array
|
||||
*/
|
||||
protected function data($object): array
|
||||
{
|
||||
return [
|
||||
'owner_id' => $object->getOwnerId(),
|
||||
'owner_type' => $object->getOwnerType(),
|
||||
'document_type' => $object->getDocumentType(),
|
||||
'reference' => $object->getReference(),
|
||||
'status' => $object->getStatus(),
|
||||
'approved_by' => $object->getApprovedBy(),
|
||||
'issued_date' => $object->getIssuedDate(),
|
||||
'expired_date' => $object->getExpiredDate(),
|
||||
'approved_date' => $object->getApprovedDate()
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function rules(): array
|
||||
{
|
||||
return [
|
||||
'owner_id' => 'required',
|
||||
'owner_type' => 'required',
|
||||
'document_type' => 'required',
|
||||
'reference' => 'required',
|
||||
'status' => '',
|
||||
'issued_date' => '',
|
||||
'expired_date' => '',
|
||||
'approved_date' => '',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function messages(): array
|
||||
{
|
||||
return [];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Documents\Standards\Validators;
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractValidation;
|
||||
use App\Classes\Modules\Documents\DataTransferObjects\FileObject;
|
||||
|
||||
class FileValidation extends AbstractValidation
|
||||
{
|
||||
/**
|
||||
* @param FileObject $object
|
||||
* @return array
|
||||
*/
|
||||
protected function data($object): array
|
||||
{
|
||||
return [
|
||||
'document_id' => $object->getDocumentId(),
|
||||
'file' => $object->getFile(),
|
||||
'file_type' => $object->getFileType()
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function rules(): array
|
||||
{
|
||||
return [
|
||||
'document_id' => 'required',
|
||||
'file' => 'required',
|
||||
'file_type' => 'required'
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function messages(): array
|
||||
{
|
||||
return [];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\ControllersLogic;
|
||||
|
||||
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\PackagesListObject;
|
||||
|
||||
interface createPackagesListLogic
|
||||
{
|
||||
|
||||
public function execute(){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\DataTransferObjects;
|
||||
|
||||
|
||||
class ItemObject
|
||||
{
|
||||
|
||||
/** @var string */
|
||||
private $description;
|
||||
|
||||
/** @var string */
|
||||
private $unitOfMeasurment;
|
||||
|
||||
/** @var float */
|
||||
private $quantity;
|
||||
|
||||
/** @var double */
|
||||
private $price;
|
||||
|
||||
/** @var string */
|
||||
private $currency;
|
||||
|
||||
/**
|
||||
* ItemObject constructor.
|
||||
* @param string $description
|
||||
* @param string $unitOfMeasurment
|
||||
* @param float $quantity
|
||||
* @param float $price
|
||||
* @param string $currency
|
||||
*/
|
||||
public function __construct(string $description, string $unitOfMeasurment, float $quantity, float $price, string $currency)
|
||||
{
|
||||
$this->description = $description;
|
||||
$this->unitOfMeasurment = $unitOfMeasurment;
|
||||
$this->quantity = $quantity;
|
||||
$this->price = $price;
|
||||
$this->currency = $currency;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getDescription(): string
|
||||
{
|
||||
return $this->description;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getUnitOfMeasurment(): string
|
||||
{
|
||||
return $this->unitOfMeasurment;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
*/
|
||||
public function getQuantity(): float
|
||||
{
|
||||
return $this->quantity;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
*/
|
||||
public function getPrice(): float
|
||||
{
|
||||
return $this->price;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getCurrency(): string
|
||||
{
|
||||
return $this->currency;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\DataTransferObjects;
|
||||
|
||||
|
||||
class PackageObject
|
||||
{
|
||||
|
||||
/** @var int */
|
||||
private $type;
|
||||
|
||||
/** @var float */
|
||||
private $width;
|
||||
|
||||
/** @var float */
|
||||
private $height;
|
||||
|
||||
/** @var float */
|
||||
private $lenght;
|
||||
|
||||
/** @var array */
|
||||
private $items;
|
||||
|
||||
/**
|
||||
* PackageObject constructor.
|
||||
* @param int $type
|
||||
* @param float $width
|
||||
* @param float $height
|
||||
* @param float $lenght
|
||||
* @param array $items
|
||||
*/
|
||||
public function __construct(int $type, float $width, float $height, float $lenght, array $items)
|
||||
{
|
||||
$this->type = $type;
|
||||
$this->width = $width;
|
||||
$this->height = $height;
|
||||
$this->lenght = $lenght;
|
||||
$this->items = $items;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getType(): int
|
||||
{
|
||||
return $this->type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
*/
|
||||
public function getWidth(): float
|
||||
{
|
||||
return $this->width;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
*/
|
||||
public function getHeight(): float
|
||||
{
|
||||
return $this->height;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
*/
|
||||
public function getLenght(): float
|
||||
{
|
||||
return $this->lenght;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getItems(): array
|
||||
{
|
||||
return $this->items;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\DataTransferObjects;
|
||||
|
||||
|
||||
class PackagesListObject
|
||||
{
|
||||
|
||||
/** @var int */
|
||||
private $orderId;
|
||||
|
||||
/** @var array */
|
||||
private $packages;
|
||||
|
||||
/**
|
||||
* PackagesListObject constructor.
|
||||
* @param int $orderId
|
||||
* @param array $packages
|
||||
*/
|
||||
public function __construct(int $orderId, array $packages)
|
||||
{
|
||||
$this->orderId = $orderId;
|
||||
$this->packages = $packages;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getOrderId(): int
|
||||
{
|
||||
return $this->orderId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getPackages(): array
|
||||
{
|
||||
return $this->packages;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\ValueObjects\Constants;
|
||||
|
||||
final class ApprovalStatus {
|
||||
|
||||
public const PENDING_SUBMISSION = 0;
|
||||
|
||||
public const PENDING_VERIFICATION = 1;
|
||||
|
||||
public const APPROVED = 2;
|
||||
|
||||
public const COMPLETED = 3;
|
||||
|
||||
public const REJECTED = 4;
|
||||
|
||||
public const SUSPENDED = 5;
|
||||
|
||||
public const EXPIRED = 6;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\ValueObjects\Constants;
|
||||
|
||||
final class DocumentType {
|
||||
public const SSM_REGISTRATION = 'SSM_REGISTRATION';
|
||||
public const IDENTITY_CARD = 'IDENTITY_CARD';
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\ValueObjects\Constants;
|
||||
|
||||
|
||||
class File
|
||||
{
|
||||
|
||||
public const EXTENSION = [
|
||||
'image/gif' => 'gif',
|
||||
'image/png' => 'png',
|
||||
'image/jpeg' => 'jpeg',
|
||||
'application/pdf' => 'pdf',
|
||||
];
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\ValueObjects\Constants;
|
||||
|
||||
final class OwnerType {
|
||||
public const COMPANY = 1;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Addresses;
|
||||
|
||||
use App\Classes\Modules\Addresses\ControllersLogic\CreateAddressLogic;
|
||||
use App\Classes\Modules\Addresses\ControllersLogic\SetAddressDefaultLogic;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class SetAddressDefaultController
|
||||
{
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param SetAddressDefaultLogic $logic
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function set(Request $request, SetAddressDefaultLogic $logic): JsonResponse {
|
||||
return $logic->execute($request);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Companies;
|
||||
|
||||
use App\Classes\Modules\Companies\ControllersLogic\UpdateCompanyIdentificationDocumentLogic;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class UpdateCompanyIdentificationDocumentController
|
||||
{
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param UpdateCompanyIdentificationDocumentLogic $logic
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function update(Request $request, UpdateCompanyIdentificationDocumentLogic $logic): JsonResponse {
|
||||
return $logic->execute($request);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -11,6 +11,7 @@ use App\Models\Company;
|
||||
use App\Models\CompanyConnections;
|
||||
use App\Models\Order;
|
||||
use Illuminate\Http\Request;
|
||||
use Barryvdh\DomPDF\PDF;
|
||||
|
||||
class OrderController
|
||||
{
|
||||
@@ -26,8 +27,8 @@ class OrderController
|
||||
$order->company_id = $company->id;
|
||||
$order->order_number = $generatesUniqueOrderNumber->execute();
|
||||
$order->forwarder_id = 1;
|
||||
$order->address_id = $company->addresses()->first()->id;
|
||||
$order->contact_id = $company->contacts()->first()->id;
|
||||
$order->address_id = $company->addresses->first()->id;
|
||||
$order->contact_id = $company->contacts->first()->id;
|
||||
$order->current_step = 'MS_WAREHOUSE_RECEIVING';
|
||||
$order->multiple_batch = false;
|
||||
$order->complete = false;
|
||||
@@ -59,7 +60,7 @@ class OrderController
|
||||
HttpStatus::OK_WITH_MESSAGE, json_decode(OrderResource::collection($orders)->response()->getContent(), true)))->handler();
|
||||
}
|
||||
|
||||
public function download(String $orderId){
|
||||
public function download(String $orderId, PDF $pdf){
|
||||
/** @var Order $order */
|
||||
$order = order::findOrFail($orderId);
|
||||
/** @var Company $warehouse */
|
||||
@@ -78,7 +79,7 @@ class OrderController
|
||||
|
||||
return view('pages.pdf.qr', $data);
|
||||
|
||||
return $this->pdf->loadView('pages.pdf.qr', $data)->stream();
|
||||
return $pdf->loadView('pages.pdf.qr', $data)->download();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,271 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Classes\Modules\Accounts\ControllersLogic\CheckEmailLogic;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class TestController
|
||||
{
|
||||
|
||||
public function index(){
|
||||
$cookies = $this->getToken();
|
||||
$ch = curl_init();
|
||||
|
||||
curl_setopt($ch, CURLOPT_URL, 'http://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage');
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"controller":"WarehouseList","view":"grid1","request":{"PageSize":10000000, "Filter":["ParcelDate:>%js%\"2020-01-10T00:00:00.000\"\u0000"]}}');
|
||||
curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
|
||||
|
||||
$headers = array();
|
||||
$headers[] = 'Connection: keep-alive';
|
||||
$headers[] = 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36';
|
||||
$headers[] = 'X-Requested-With: XMLHttpRequest';
|
||||
$headers[] = 'Content-Type: application/json; charset=UTF-8';
|
||||
$headers[] = 'Accept: */*';
|
||||
$headers[] = 'Origin: http://portalvt.azurewebsites.net';
|
||||
$headers[] = 'Referer: http://portalvt.azurewebsites.net/Pages/WarehouseList.aspx';
|
||||
$headers[] = 'Accept-Language: en-US,en;q=0.9';
|
||||
$headers[] = 'Cookie: '.implode('; ', $cookies);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
||||
|
||||
$result = curl_exec($ch);
|
||||
if (curl_errno($ch)) {
|
||||
echo 'Error:' . curl_error($ch);
|
||||
}
|
||||
curl_close($ch);
|
||||
dd(json_decode($result));
|
||||
}
|
||||
private function getToken(){
|
||||
$cookies = $this->getCookies();
|
||||
|
||||
$ch = curl_init();
|
||||
|
||||
curl_setopt($ch, CURLOPT_URL, 'http://portalvt.azurewebsites.net/Services/DataControllerService.asmx/Login');
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"username":"CIEF","password":"0122120880","createPersistentCookie":true}');
|
||||
curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
|
||||
|
||||
$headers = array();
|
||||
$headers[] = 'Connection: keep-alive';
|
||||
$headers[] = 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36';
|
||||
$headers[] = 'X-Requested-With: XMLHttpRequest';
|
||||
$headers[] = 'Content-Type: application/json; charset=UTF-8';
|
||||
$headers[] = 'Accept: */*';
|
||||
$headers[] = 'Origin: http://portalvt.azurewebsites.net';
|
||||
$headers[] = 'Referer: http://portalvt.azurewebsites.net/Login.aspx?ReturnUrl=%2fPages%2fHome.aspx';
|
||||
$headers[] = 'Accept-Language: en-US,en;q=0.9';
|
||||
$headers[] = 'Cookie: '.implode('; ', $cookies);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
||||
|
||||
$result = curl_exec($ch);
|
||||
if (curl_errno($ch)) {
|
||||
echo 'Error:' . curl_error($ch);
|
||||
}
|
||||
curl_close($ch);
|
||||
$cookies[] = 'AppVTCC='.json_decode($result)->d->Token;
|
||||
return $cookies;
|
||||
|
||||
}
|
||||
|
||||
private function getCookies(){
|
||||
$cookies = [];
|
||||
$curl_handle = curl_init('http://portalvt.azurewebsites.net/Login.aspx');
|
||||
|
||||
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, false);
|
||||
|
||||
curl_setopt($curl_handle, CURLOPT_HEADER, true);
|
||||
|
||||
|
||||
$data = curl_exec($curl_handle);
|
||||
|
||||
$responseHeader= substr($data,0, intval(curl_getinfo($curl_handle, CURLINFO_HEADER_SIZE)));
|
||||
|
||||
$endPosition = 0;
|
||||
while(true) {
|
||||
$startPosition = strpos($responseHeader, 'Set-Cookie: ', $endPosition);
|
||||
if (!$startPosition){break;}
|
||||
$startPosition += 12;
|
||||
$endPosition = strpos($responseHeader, ';', $startPosition);
|
||||
$cookies[] = substr($responseHeader,$startPosition,$endPosition-$startPosition);
|
||||
}
|
||||
|
||||
return $cookies;
|
||||
}
|
||||
|
||||
public function index2() {
|
||||
// curl 'http://portalvt.azurewebsites.net/Services/DataControllerService.asmx/Login' \
|
||||
// -H 'Connection: keep-alive' \
|
||||
// -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36' \
|
||||
// -H 'X-Requested-With: XMLHttpRequest' \
|
||||
// -H 'Content-Type: application/json; charset=UTF-8' \
|
||||
// -H 'Accept: */*' \
|
||||
// -H 'Origin: http://portalvt.azurewebsites.net' \
|
||||
// -H 'Referer: http://portalvt.azurewebsites.net/Login.aspx?ReturnUrl=%2fPages%2fHome.aspx' \
|
||||
// -H 'Accept-Language: en-US,en;q=0.9' \
|
||||
// -H 'Cookie: ASP.NET_SessionId=cxe2tgbsi03jtg2p0nlfdcrl; ARRAffinity=2950dd3bc3c86410bd48fe08ed3595e06670f25d93c162510d25040b02f01a67' \
|
||||
// --data-binary '{"username":"CIEF","password":"0122120880","createPersistentCookie":true}' \
|
||||
// --compressed \
|
||||
// --insecure
|
||||
|
||||
header('Content-Type: text/plain; charset=utf-8');
|
||||
|
||||
|
||||
|
||||
$post = array('createPersistentCookie'=>true,
|
||||
'username'=>'CIEF',
|
||||
'password'=>'0122120880');
|
||||
$request = array();
|
||||
$request[] = 'Connection: keep-alive';
|
||||
$request[] = 'Pragma: no-cache';
|
||||
$request[] = 'Cache-Control: no-cache';
|
||||
$request[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8';
|
||||
$request[] = 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36';
|
||||
$request[] = 'DNT: 1';
|
||||
$request[] = 'http://portalvt.azurewebsites.net/Login.aspx?ReturnUrl=%2fPages%2fHome.aspx';
|
||||
$request[] = 'Accept-Encoding: gzip, deflate';
|
||||
$request[] = 'Accept-Language: en-US,en;q=0.8';
|
||||
$request[] = 'Content-Type:multipart/form-data';
|
||||
|
||||
|
||||
$url = 'http://portalvt.azurewebsites.net/Login.aspx';
|
||||
$ch = curl_init($url);
|
||||
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
|
||||
|
||||
curl_setopt($ch, CURLOPT_POST, true);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $request);
|
||||
curl_setopt($ch, CURLOPT_ENCODING,"");
|
||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
|
||||
curl_setopt($ch, CURLOPT_TIMEOUT,10);
|
||||
curl_setopt($ch, CURLOPT_FAILONERROR,true);
|
||||
curl_setopt($ch, CURLOPT_ENCODING,"");
|
||||
|
||||
curl_setopt($ch, CURLOPT_VERBOSE, true);
|
||||
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
|
||||
curl_setopt($ch, CURLOPT_HEADER, true);
|
||||
|
||||
|
||||
$data = curl_exec($ch);
|
||||
|
||||
if (curl_errno($ch)){
|
||||
$data .= 'Retreive Base Page Error: ' . curl_error($ch);
|
||||
var_dump($data);
|
||||
}
|
||||
else {
|
||||
$info = rawurldecode(var_export(curl_getinfo($ch),true));
|
||||
|
||||
|
||||
|
||||
$skip = intval(curl_getinfo($ch, CURLINFO_HEADER_SIZE));
|
||||
$responseHeader= substr($data,0,$skip);
|
||||
|
||||
// The folowing line is for debug
|
||||
// echo "$info\n$responseHeader\n$data\n\n";
|
||||
|
||||
|
||||
|
||||
// Get the cookies:
|
||||
$e = 0;
|
||||
while(true){
|
||||
$s = strpos($responseHeader,'Set-Cookie: ',$e);
|
||||
if (!$s){break;}
|
||||
$s += 12;
|
||||
$e = strpos($responseHeader,';',$s);
|
||||
$cookie = substr($responseHeader,$s,$e-$s) ;
|
||||
$s = strpos($cookie,'=');
|
||||
$key = substr($cookie,0,$s);
|
||||
$value = substr($cookie,$s);
|
||||
$cookies[$key] = $value;
|
||||
}
|
||||
|
||||
// Create cookie for subsequent Requests:
|
||||
|
||||
$cookie = '';
|
||||
$show = '';
|
||||
$head = '';
|
||||
$delim = '';
|
||||
foreach ($cookies as $k => $v){
|
||||
$cookie .= "$delim$k$v";
|
||||
$delim = '; ';
|
||||
}
|
||||
}
|
||||
|
||||
var_dump($cookies);
|
||||
$request = array();
|
||||
$request[] = 'Host: portalvt.azurewebsites.net';
|
||||
$request[] = 'Connection: keep-alive';
|
||||
$request[] = 'Pragma: no-cache';
|
||||
$request[] = 'Cache-Control: no-cache';
|
||||
$request[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8';
|
||||
$request[] = 'User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36';
|
||||
$request[] = 'DNT: 1';
|
||||
$request[] = 'Referer: http://portalvt.azurewebsites.net/Login.aspx?ReturnUrl=%2fPages%2fHome.aspx';
|
||||
$request[] = 'Accept-Encoding: gzip, deflate';
|
||||
$request[] = 'Accept-Language: en-US,en;q=0.8';
|
||||
|
||||
|
||||
$url = 'http://portalvt.azurewebsites.net/Login.aspx';
|
||||
$ch = curl_init($url);
|
||||
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
|
||||
|
||||
curl_setopt($ch, CURLOPT_POST, false);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $request);
|
||||
curl_setopt($ch, CURLOPT_ENCODING,"");
|
||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
|
||||
curl_setopt($ch, CURLOPT_TIMEOUT,10);
|
||||
curl_setopt($ch, CURLOPT_FAILONERROR,true);
|
||||
curl_setopt($ch, CURLOPT_ENCODING,"");
|
||||
|
||||
curl_setopt($ch, CURLOPT_VERBOSE, true);
|
||||
curl_setopt($ch, CURLINFO_HEADER_OUT, false);
|
||||
curl_setopt($ch, CURLOPT_HEADER, true);
|
||||
curl_setopt($ch, CURLOPT_COOKIESESSION , true );
|
||||
curl_setopt($ch, CURLOPT_COOKIE, $cookie );
|
||||
|
||||
$data = curl_exec($ch);
|
||||
$skip = intval(curl_getinfo($ch, CURLINFO_HEADER_SIZE));
|
||||
echo substr($data,$skip); //do not transmit header
|
||||
|
||||
|
||||
// if (curl_errno($ch)){
|
||||
// $data .= 'Retreive Base Page Error: ' . curl_error($ch);
|
||||
// var_dump($data);
|
||||
// }
|
||||
// else {
|
||||
// $info = rawurldecode(var_export(curl_getinfo($ch), true));
|
||||
//
|
||||
// // Get the cookies:
|
||||
//
|
||||
// $skip = intval(curl_getinfo($ch, CURLINFO_HEADER_SIZE));
|
||||
// $responseHeader = substr($data, 0, $skip);
|
||||
//
|
||||
// echo "$info\n$responseHeader\n$data\n\n";
|
||||
//
|
||||
// $e = 0;
|
||||
// while (true) {
|
||||
// $s = strpos($responseHeader, 'Set-Cookie: ', $e);
|
||||
// if (!$s) {
|
||||
// break;
|
||||
// }
|
||||
// $s += 12;
|
||||
// $e = strpos($responseHeader, ';', $s);
|
||||
// $cookie = substr($responseHeader, $s, $e - $s);
|
||||
// $s = strpos($cookie, '=');
|
||||
// $key = substr($cookie, 0, $s);
|
||||
// $value = substr($cookie, $s);
|
||||
// $cookies[$key] = $value;
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
|
||||
class invoiceClass
|
||||
{
|
||||
$user = User::fetch();
|
||||
public function execute(){
|
||||
|
||||
$company = $user->company();
|
||||
$price = $company->price();
|
||||
$order = Order::fetch();
|
||||
$items = $order->items();
|
||||
|
||||
$deliveryAddress = address();
|
||||
|
||||
$invoice = Invoice::create([
|
||||
$order,
|
||||
$items
|
||||
]);
|
||||
|
||||
|
||||
$convertToPdf = $invoice->pdf();
|
||||
|
||||
$email = email()->pdf();
|
||||
|
||||
solid
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
|
||||
class preformaClass
|
||||
{
|
||||
|
||||
public function execute(){
|
||||
$user = User::fetch();
|
||||
$company = $user->company();
|
||||
$price = $company->price();
|
||||
$order = Order::fetch();
|
||||
$items = $order->items();
|
||||
|
||||
$deliveryAddress = address();
|
||||
|
||||
$invoice = Performa::create([
|
||||
$order,
|
||||
$items
|
||||
]);
|
||||
|
||||
$convertToPdf = $invoice->pdf();
|
||||
|
||||
$email = email()->pdf();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use App\Classes\ValueObjects\Constants\AccountStatus;
|
||||
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
||||
use App\Models\CompanyConnections;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
@@ -22,9 +23,10 @@ class CompanyResource extends JsonResource
|
||||
'marking' => CompanyConnections::where('module_one', $this->modules->first()->id)->first()->marking,
|
||||
'name' => $this->name,
|
||||
'type' => $this->type,
|
||||
'status' => AccountStatus::STATUS[$this->status],
|
||||
'status' => $this->status,
|
||||
'delivery_address' => new AddressResource($this->deliveryAddress),
|
||||
'contact' => new ContactResource($this->contacts->first())
|
||||
'contact' => new ContactResource($this->contacts->first()),
|
||||
'total_orders' => count($this->orders)
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class DocumentResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'document_type' => $this->document_type,
|
||||
'reference' => $this->reference,
|
||||
'status' => (int) $this->status,
|
||||
'approved_by' => (int) $this->approved_by,
|
||||
'files' => $this->files()->get()
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
|
||||
@@ -29,12 +30,12 @@ class Address extends AbstractModel
|
||||
|
||||
protected $dates = ['deleted_at'];
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasOne
|
||||
**/
|
||||
public function company(): HasOne
|
||||
/**
|
||||
* @return BelongsTo
|
||||
*/
|
||||
public function company(): BelongsTo
|
||||
{
|
||||
return $this->hasOne(Company::class, 'company_id', 'id');
|
||||
return $this->BelongsTo(Company::class, 'company_id', 'id');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+19
-2
@@ -2,10 +2,11 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Models\AbstractModel as Model;
|
||||
use App\Classes\General\Interfaces\Documentable;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\Relations\HasManyThrough;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphMany;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
|
||||
|
||||
@@ -17,7 +18,7 @@ use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
* @property string name
|
||||
* @property integer type
|
||||
*/
|
||||
class Company extends AbstractModel
|
||||
class Company extends AbstractModel implements Documentable
|
||||
{
|
||||
|
||||
use SoftDeletes;
|
||||
@@ -74,6 +75,22 @@ class Company extends AbstractModel
|
||||
return $this->hasManyThrough(Company::class, CompanyConnections::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return MorphMany
|
||||
*/
|
||||
public function documents(): morphMany
|
||||
{
|
||||
return $this->morphMany(Document::class, 'owner');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return HasMany
|
||||
*/
|
||||
public function orders(): hasMany
|
||||
{
|
||||
return $this->hasMany(Order::class);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Carbon\Traits\Timestamp;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphTo;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
|
||||
use Illuminate\Database\Eloquent\Relations\hasMany;
|
||||
|
||||
/**
|
||||
* Class Document
|
||||
* @package App\Models
|
||||
* @version August 4, 2020, 4:36 am
|
||||
*
|
||||
* @property int owner_id
|
||||
* @property int owner_type
|
||||
* @property int document_type
|
||||
* @property string reference
|
||||
* @property int status
|
||||
* @property \App\Models\User approved_by
|
||||
* @property timestamp issued_date
|
||||
* @property timestamp expired_date
|
||||
* @property timestamp approved_date
|
||||
*/
|
||||
class Document extends AbstractModel
|
||||
{
|
||||
use SoftDeletes;
|
||||
|
||||
protected $table = 'documents';
|
||||
|
||||
protected $dates = ['deleted_at'];
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\MorphTo
|
||||
*/
|
||||
public function owner(): morphTo
|
||||
{
|
||||
return $this->morphTo();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return hasMany
|
||||
*/
|
||||
public function files(): hasMany
|
||||
{
|
||||
return $this->hasMany(File::class, 'document_id');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
|
||||
/**
|
||||
* Class File
|
||||
* @package App\Models
|
||||
* @version August 4, 2020, 4:36 am
|
||||
*
|
||||
* @property \App\Models\Document document_id
|
||||
* @property text file
|
||||
* @property int file_type_id
|
||||
*/
|
||||
class File extends AbstractModel
|
||||
{
|
||||
use SoftDeletes;
|
||||
|
||||
protected $table = 'files';
|
||||
|
||||
protected $fillable = ['file'];
|
||||
|
||||
protected $dates = ['deleted_at'];
|
||||
|
||||
public function getFileAttribute($value)
|
||||
{
|
||||
return $value ? json_decode($value) : [];
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@ class PasswordReset extends AbstractModel
|
||||
{
|
||||
protected $table = 'password_resets';
|
||||
|
||||
protected $fillable = ['token'];
|
||||
/**
|
||||
* @param $query
|
||||
* @return mixed
|
||||
|
||||
+12
-1
@@ -2,8 +2,10 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Classes\General\Interfaces\Documentable;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphMany;
|
||||
use Tymon\JWTAuth\Contracts\JWTSubject;
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
use Illuminate\Auth\Authenticatable;
|
||||
@@ -18,7 +20,8 @@ class User extends AbstractModel implements
|
||||
JWTSubject,
|
||||
AuthenticatableContract,
|
||||
AuthorizableContract,
|
||||
CanResetPasswordContract
|
||||
CanResetPasswordContract,
|
||||
documentable
|
||||
{
|
||||
use Notifiable, Authenticatable, Authorizable, CanResetPassword, MustVerifyEmail;
|
||||
|
||||
@@ -62,4 +65,12 @@ class User extends AbstractModel implements
|
||||
return $this->hasMany(Order::class, 'user_id', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return MorphMany
|
||||
*/
|
||||
public function documents(): morphMany
|
||||
{
|
||||
return $this->morphMany(Document::class, 'owner');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user