WIP - Order steps & remaining APIs

This commit is contained in:
Fairuz
2021-07-22 14:28:02 +08:00
parent adf9896410
commit 3dfa087831
8 changed files with 56 additions and 47 deletions
@@ -57,8 +57,10 @@ class CreateCompanyLogic extends AbstractControllerLogic
$this->createCompanyModuleProcessor->execute($company , $request->input('business_type'));
//$unityEntity = $this->createUnityEntityProcessor->execute($company->name);
//TODO: Update company table with hash id
$unityEntity = $this->createUnityEntityProcessor->execute($company->name);
//$company->unity_hash_id = $unityEntity->hash_id;
//Update company table
return $this->resourceResponse(new CompanyResource($company));
}
@@ -35,9 +35,9 @@ class CreateOrderStepsProcessor
$this->fetchesOrderSteps = $fetchesOrderSteps;
}
public function execute(Model $order, string $currentStep){
public function execute(Model $order, string $currentStep, $appointee_id){
$order_steps_object = new OrderStepsObject($order->id, $order->company_module_id, $currentStep, true, 0, OrderStatus::PROCESSING, 0, null);
$order_steps_object = new OrderStepsObject($order->id, $appointee_id, $currentStep, true, 0, OrderStatus::PROCESSING, 0, null);
$this->canCreateOrderStep->passes($order_steps_object);
@@ -1,53 +1,40 @@
<?php
namespace App\Classes\Modules\Orders\Services\Steps;
namespace App\Classes\Modules\Orders\Processors;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
use App\Classes\Modules\Orders\Services\CreatesOrder;
use App\Classes\Modules\Orders\Services\FetchesOrder;
use App\Classes\Modules\OrderSteps\Services\FetchesOrderSteps;
use App\Classes\Modules\Orders\Standards\Rules\CanUpdateCurrentStep;
use App\Classes\Modules\OrderSteps\Processors\UpdateOrderStepsProcessor;
use App\Classes\Modules\Orders\Standards\Rules\CanConfirmOrder;
use App\Classes\Modules\OrderSteps\Processors\GenerateOrderStepsProcessor;
use App\Classes\ValueObjects\Constants\OrderStatus;
use App\Classes\ValueObjects\Constants\OrderSteps;
use App\Models\Order;
use App\Models\OrderStep;
use App\Classes\ValueObjects\Constants\OrderType;
use Illuminate\Http\Request;
class ConfirmOrderProcessor
{
private $canUpdateCurrentStep;
private $canConfirmOrder;
private $updatesCurrentStep;
private $generateOrderStepsProcessor;
private $fetchesOrder;
private $fetchesOrderSteps;
private $updateOrderStepProcessors;
public function __construct(CanUpdateCurrentStep $canUpdateCurrentStep, FetchesOrder $fetchesOrder, FetchesOrderSteps $fetchesOrderSteps, UpdatesOrderCurrentStep $updatesCurrentStep, UpdateOrderStepsProcessor $updateOrderStepProcessors)
public function __construct(CanConfirmOrder $canConfirmOrder, GenerateOrderStepsProcessor $generateOrderStepsProcessor, FetchesOrder $fetchesOrder)
{
$this->canUpdateCurrentStep = $canUpdateCurrentStep;
$this->updatesCurrentStep = $updatesCurrentStep;
$this->canConfirmOrder = $canConfirmOrder;
$this->generateOrderStepsProcessor = $generateOrderStepsProcessor;
$this->fetchesOrder = $fetchesOrder;
$this->fetchesOrderSteps = $fetchesOrderSteps;
$this->updateOrderStepProcessors = $updateOrderStepProcessors;
}
public function execute(int $orderId, string $currentStep){
public function execute(int $orderId){
$order_object = new OrderObject(0, '', '', 0, 0, $currentStep, $orderId);
$order_object = new OrderObject(0,'','',0,0, '',$orderId);
$this->canUpdateCurrentStep->passes($order_object);
$this->canConfirmOrder->passes($order_object);
$order = $this->fetchesOrder->execute(['id'=>$order_object->getId()]);
$order_steps = $this->fetchesOrderSteps->execute(['order_id'=>$order_object->getId(), 'status'=> OrderStatus::PROCESSING, 'order_by' => 'sequence', 'per_page' => 1]);
$order_object->setCurrentStep($currentStep);
$order = $this->updatesCurrentStep->execute($order, $order_object);
$this->updateOrderStepProcessors->execute($currentStep);
$this->generateOrderStepsProcessor->execute($order);
}
}
@@ -5,6 +5,7 @@ namespace App\Classes\Modules\Orders\Processors;
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
use App\Classes\Modules\Orders\Services\CreatesOrder;
use App\Classes\Modules\Orders\Standards\Rules\CanCreateOrder;
use App\Classes\Modules\Orders\Processors\ConfirmOrderProcessor;
use App\Classes\Modules\OrderSteps\Processors\CreateOrderStepsProcessor;
use App\Classes\ValueObjects\Constants\OrderStatus;
use App\Classes\ValueObjects\Constants\OrderSteps;
@@ -17,12 +18,15 @@ class CreateOrderProcessor
private $createsOrder;
private $confirmOrderProcessor;
private $createOrderStepsProcessor;
public function __construct(CanCreateOrder $canCreateOrder, CreatesOrder $createsOrder, CreateOrderStepsProcessor $createOrderStepsProcessor)
public function __construct(CanCreateOrder $canCreateOrder, CreatesOrder $createsOrder, CreateOrderStepsProcessor $createOrderStepsProcessor, ConfirmOrderProcessor $confirmOrderProcessor)
{
$this->canCreateOrder = $canCreateOrder;
$this->createsOrder = $createsOrder;
$this->confirmOrderProcessor = $confirmOrderProcessor;
$this->createOrderStepsProcessor = $createOrderStepsProcessor;
}
@@ -35,8 +39,12 @@ class CreateOrderProcessor
$order = $this->createsOrder->execute($order_object);
//Add processing to order step
$this->createOrderStepsProcessor->execute($order, OrderSteps::PROCESSING);
//Note: For processing apointee_id is CIEF Freight Forward , id is 1, reserved in company table
$this->createOrderStepsProcessor->execute($order, OrderSteps::PROCESSING, 1);
//Pre-approved order, no need Admin to process it
$this->confirmOrderProcessor->execute($order->id);
return $order;
}
}
}
@@ -15,7 +15,7 @@ class CreateEntityProcessor
$this->createsEntity = $createsEntity;
}
public function execute(){
return $this->createsEntity->execute();
public function execute($entity_name){
return $this->createsEntity->execute($entity_name);
}
}
@@ -24,7 +24,7 @@ class CreatesEntity
$response = Http::withToken($accesToken)->post($this->createEntityEndpoint,['name'=>$entity_name])->object();
return (isset($response->data)) ? $response->data : [];
return (isset($response->data)) ? $response->data : null;
}
}
+1 -1
View File
@@ -23,7 +23,7 @@ return [
'get_ob_endpoint' => env('UNITY_OB_LIST_ENDPOINT','contract-template-obligation/list'),
'create_entity_endpoint' => env('UNITY_CREATE_ENTITY_ENDPOINT','contract-template-obligation/list'),
'create_entity_endpoint' => env('UNITY_CREATE_ENTITY_ENDPOINT','entity/store'),
'default_auth' => env('UNITY_AUTH','login'),
+19 -7
View File
@@ -22,6 +22,13 @@ class CompaniesTableSeeder extends Seeder
{
$companies = [
[
'id' => 1, //Reserve ID
'name' => 'CIEF SDN BHD',
'reference' => 'CIEF',
'type' => CompanyType::COMPANY_BUSINESS,
'status' => ApprovalStatus::APPROVED,
],
[
'name' => 'Guang Zhou',
'reference' => 'guangzhouwarehouse',
@@ -42,13 +49,18 @@ class CompaniesTableSeeder extends Seeder
$company = Company::create($company);
CompanyModule::create(
[
'company_id' => $company->id,
'type' => BusinessType::WAREHOUSE,
'status' => ApprovalStatus::APPROVED,
]
);
$companyModule = [
'company_id' => $company->id,
'type' => BusinessType::WAREHOUSE,
'status' => ApprovalStatus::APPROVED,
];
if($company['reference']=='CIEF'){
$companyModule['id']= 1; //Reserve ID
$companyModule['type']=BusinessType::FREIGHT_FORWARDER;
}
CompanyModule::create($companyModule);
}
}
}