mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal.git
synced 2026-08-19 04:24:12 +00:00
Added contract entity, address to Orders
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Addresses\Processors;
|
||||
|
||||
use App\Classes\Modules\Addresses\Services\CreatesOrderAddress;
|
||||
use App\Classes\Modules\Addresses\Services\FetchesAddress;
|
||||
use App\Classes\Modules\Addresses\Standards\Rules\CanCreateAddress;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use App\Models\Order;
|
||||
|
||||
class CreateOrderAddressProcessor
|
||||
{
|
||||
|
||||
/** @var CanCreateAddress */
|
||||
private $canCreateAddress;
|
||||
|
||||
/** @var CreatesAddress */
|
||||
private $createsOrderAddress;
|
||||
|
||||
private $fetchesAddress;
|
||||
|
||||
/**
|
||||
* CreateAddressProcessor constructor.
|
||||
* @param CanCreateAddress $canCreateAddress
|
||||
* @param CreatesAddress $CreatesAddress
|
||||
*/
|
||||
public function __construct(CanCreateAddress $canCreateAddress, CreatesOrderAddress $createsOrderAddress, FetchesAddress $fetchesAddress)
|
||||
{
|
||||
$this->fetchesAddress = $fetchesAddress;
|
||||
$this->canCreateAddress = $canCreateAddress;
|
||||
$this->createsOrderAddress = $createsOrderAddress;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param EmploymentObject $object
|
||||
* @return Model
|
||||
* @throws \App\Classes\Exceptions\AccessForbiddenException
|
||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||
* @throws \App\Classes\Exceptions\RequestValidationException
|
||||
*/
|
||||
public function execute(int $address_id, Order $order): Model {
|
||||
|
||||
$address = $this->fetchesAddress->getRepository()->whereIn('id',[$address_id])->first();
|
||||
|
||||
|
||||
// $this->canCreateAddress->passes($object);
|
||||
|
||||
//Fetches Address & duplicate
|
||||
|
||||
return $this->createsOrderAddress->execute($address, $order);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Addresses\Services;
|
||||
|
||||
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
||||
use App\Classes\General\Eloquent\AbstractUpdateRelationshipRecord;
|
||||
use App\Classes\Modules\Schedules\DataTransferObjects\ScheduleObject;
|
||||
use App\Models\Order;
|
||||
use App\Models\Address;
|
||||
|
||||
class CreatesOrderAddress extends AbstractUpdateRelationshipRecord
|
||||
{
|
||||
|
||||
public function execute(Address $address, Order $order) {
|
||||
|
||||
$model = new Address();
|
||||
$model->street_one = $address->street_one;
|
||||
$model->street_two = $address->street_two;
|
||||
$model->country_id = $address->country_id;
|
||||
$model->state_id = $address->state_id;
|
||||
$model->district_id = $address->district_id;
|
||||
$model->postcode = $address->postcode;
|
||||
|
||||
return $this->handler($order->addresses(), $model);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\DataTransferObjects;
|
||||
|
||||
|
||||
use App\Classes\General\Interfaces\DataTransferObject;
|
||||
|
||||
class OrderRoleObject implements DataTransferObject
|
||||
{
|
||||
private $order_id;
|
||||
|
||||
private $company_module_id;
|
||||
|
||||
private $role_hash_id;
|
||||
|
||||
private $role_signature;
|
||||
|
||||
public function __construct(int $order_id, int $company_module_id, ?string $role_hash_id, ?string $role_signature)
|
||||
{
|
||||
$this->order_id = $order_id;
|
||||
$this->company_module_id = $company_module_id;
|
||||
$this->role_hash_id = $role_hash_id;
|
||||
$this->role_signature = $role_signature;
|
||||
}
|
||||
|
||||
public function getOrderId(): int
|
||||
{
|
||||
return $this->order_id;
|
||||
}
|
||||
|
||||
public function getCompanyModuleId(): int
|
||||
{
|
||||
return $this->company_module_id;
|
||||
}
|
||||
|
||||
public function getRoleHashId(): ?string
|
||||
{
|
||||
return $this->role_hash_id;
|
||||
}
|
||||
|
||||
public function getRoleSignature(): ?string
|
||||
{
|
||||
return $this->role_signature;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\Processors;
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderRoleObject;
|
||||
use App\Classes\Modules\Orders\Services\CreatesOrderRole;
|
||||
use App\Classes\Modules\Orders\Services\FetchesOrder;
|
||||
use App\Classes\Modules\Orders\Standards\Rules\CanCreateOrderRole;
|
||||
use App\Classes\Modules\Unity\Processors\CreateContractEntityProcessor;
|
||||
use App\Classes\ValueObjects\Constants\OrderStatus;
|
||||
use App\Classes\ValueObjects\Constants\OrderSteps;
|
||||
use App\Classes\ValueObjects\Constants\OrderType;
|
||||
use App\Classes\Modules\Companies\Services\FetchesCompany;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class CreateOrderRoleProcessor
|
||||
{
|
||||
private $canCreateOrderRole;
|
||||
|
||||
private $createsOrderRole;
|
||||
|
||||
private $fetchesCompany;
|
||||
|
||||
private $unityCreateContractEntity;
|
||||
|
||||
public function __construct(CanCreateOrderRole $canCreateOrderRole, CreatesOrderRole $createsOrderRole, FetchesCompany $fetchesCompany, CreateContractEntityProcessor $unityCreateContractEntity)
|
||||
{
|
||||
$this->canCreateOrderRole = $canCreateOrderRole;
|
||||
$this->createsOrderRole = $createsOrderRole;
|
||||
$this->fetchesCompany = $fetchesCompany;
|
||||
$this->unityCreateContractEntity = $unityCreateContractEntity;
|
||||
}
|
||||
|
||||
public function execute(Request $request, int $orderId, string $contract_reference_no){
|
||||
|
||||
$companies = $this->fetchesCompany->getRepository()->whereIn('id',[1, $request->get('warehouse_id')])->get();
|
||||
|
||||
$cief_company = $companies[0]->id == 1 ? $companies[0] : $companies[1];
|
||||
$warehouse_company = $companies[0]->id != 1 ? $companies[0] : $companies[1];
|
||||
|
||||
$cief_company_module = $cief_company->companyModule()->first();
|
||||
$contractEntities[] = $this->unityCreateContractEntity->execute( $contract_reference_no, [$cief_company_module->unity_hash_id]);
|
||||
$contractEntities[0]->{"company_module_id"} = $cief_company_module->id;
|
||||
|
||||
$warehouse_company_module = $warehouse_company->companyModule()->first();
|
||||
$contractEntities[] = $this->unityCreateContractEntity->execute( $contract_reference_no, [$warehouse_company_module->unity_hash_id]);
|
||||
$contractEntities[1]->{"company_module_id"} = $warehouse_company_module->id;
|
||||
|
||||
foreach($contractEntities as $entity){
|
||||
$order_role_object = new OrderRoleObject($orderId, $entity->company_module_id, $entity->hash_id, $entity->entity_signature_hash_id);
|
||||
|
||||
$this->canCreateOrderRole->passes($order_role_object);
|
||||
|
||||
$this->createsOrderRole->execute($order_role_object);
|
||||
}
|
||||
|
||||
return $contractEntities;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\Services;
|
||||
|
||||
use App\Classes\General\Eloquent\AbstractUpdateRecord;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderRoleObject;
|
||||
use App\Models\OrderRole;
|
||||
|
||||
class CreatesOrderRole extends AbstractUpdateRecord
|
||||
{
|
||||
|
||||
/**
|
||||
* @param OrderObject $object
|
||||
* @return \Illuminate\Database\Eloquent\Model
|
||||
* @throws \App\Classes\Exceptions\MalformedRequestException
|
||||
*/
|
||||
public function execute(OrderRoleObject $object)
|
||||
{
|
||||
$model = new OrderRole();
|
||||
$model->order_id = $object->getOrderId();
|
||||
$model->company_module_id = $object->getCompanyModuleId();
|
||||
$model->role_hash_id = $object->getRoleHashId();
|
||||
$model->role_signature = $object->getRoleSignature();
|
||||
|
||||
return $this->handler($model);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\Standards\Rules;
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractRule;
|
||||
use App\Classes\Modules\Orders\Standards\Validators\OrderRoleValidation;
|
||||
|
||||
class CanCreateOrderRole extends AbstractRule
|
||||
{
|
||||
private $orderRoleValidation;
|
||||
|
||||
public function __construct(OrderRoleValidation $orderRoleValidation)
|
||||
{
|
||||
$this->orderRoleValidation = $orderRoleValidation;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
protected function authorized(): bool
|
||||
{
|
||||
// TODO Set Authorization rules
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function validators($object): bool
|
||||
{
|
||||
return $this->orderRoleValidation->validate($object);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param CompanyObject $object
|
||||
* @return bool
|
||||
*/
|
||||
protected function criteria($object): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Orders\Standards\Validators;
|
||||
|
||||
use App\Classes\General\Abstracts\AbstractValidation;
|
||||
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
|
||||
|
||||
class OrderRoleValidation extends AbstractValidation
|
||||
{
|
||||
/**
|
||||
* @param OrderObject $object
|
||||
* @return array
|
||||
*/
|
||||
protected function data($object): array
|
||||
{
|
||||
return [
|
||||
'order_id' => $object->getOrderId(),
|
||||
'company_module_id' => $object->getCompanyModuleId(),
|
||||
'role_hash_id' => $object->getRoleHashId(),
|
||||
'role_signature' => $object->getRoleSignature(),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $type
|
||||
* @return array
|
||||
*/
|
||||
protected function rules(?string $type = 'POST'): array
|
||||
{
|
||||
return [
|
||||
'order_id' => 'required|exists:orders,id',
|
||||
'company_module_id' => 'required|exists:company_modules,id',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function messages(): array
|
||||
{
|
||||
return [];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Unity\Processors;
|
||||
|
||||
use Config;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use App\Classes\Modules\Unity\Services\CreatesEntitySignature;
|
||||
|
||||
class CreateEntitySignatureProcessor
|
||||
{
|
||||
private $createsEntitySignature;
|
||||
|
||||
public function __construct(CreatesEntitySignature $createsEntitySignature)
|
||||
{
|
||||
$this->createsEntitySignature = $createsEntitySignature;
|
||||
}
|
||||
|
||||
public function execute(string $entity_hash_id){
|
||||
return $this->createsEntitySignature->execute($entity_hash_id);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace App\Classes\Modules\Unity\Services;
|
||||
|
||||
use Config;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use App\Classes\Modules\Unity\Services\GetAccessToken;
|
||||
|
||||
class CreatesEntitySignature
|
||||
{
|
||||
private $getAccessToken;
|
||||
|
||||
private $createEntitySignatureEndpoint;
|
||||
|
||||
public function __construct(GetAccessToken $getAccessToken)
|
||||
{
|
||||
$this->createEntitySignatureEndpoint = Config::get('unity.url').Config::get('unity.endpoint.create_entity_signature');
|
||||
$this->getAccessToken = $getAccessToken;
|
||||
}
|
||||
|
||||
public function execute(string $entity_hash_id){
|
||||
|
||||
$accesToken=$this->getAccessToken->execute();
|
||||
|
||||
$response = Http::withToken($accesToken)->post($this->createEntitySignatureEndpoint,['entity_id'=>[$entity_hash_id], 'type'=>'1'])->object();
|
||||
|
||||
return (isset($response->data)) ? $response->data : null;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class ModifyOrderRoles extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('order_roles', function (Blueprint $table) {
|
||||
$table->dropColumn('role');
|
||||
$table->string('role_hash_id',200)->nullable(true)->after('company_module_id');
|
||||
$table->string('role_signature',200)->nullable(true)->after('role_hash_id');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user