Files
shipping-portal/app/Classes/Modules/OrderSteps/Processors/GenerateOrderStepsProcessor.php
T
2021-07-22 13:00:11 +08:00

69 lines
2.4 KiB
PHP

<?php
namespace App\Classes\Modules\OrderSteps\Processors;
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
use App\Classes\Modules\Orders\Processors\UpdatesOrderCurrentStepProcessor;
use App\Classes\Modules\OrderSteps\Processors\UpdateOrderStepsProcessor;
use App\Classes\Modules\Orders\Services\FetchesOrder;
use App\Classes\Modules\OrderSteps\Services\FetchesOrderSteps;
use App\Classes\Modules\Orders\Services\UpdatesCurrentStep;
use App\Classes\Modules\Orders\Standards\Rules\CanUpdateCurrentStep;
use App\Classes\Modules\OrderSteps\DataTransferObjects\OrderStepsObject;
use App\Classes\Modules\OrderSteps\Services\CreatesManyOrderSteps;
use App\Classes\ValueObjects\Constants\OrderStatus;
use App\Classes\ValueObjects\Constants\OrderSteps;
use App\Classes\Modules\Unity\Processors\GetContractObligationsProcessor;
use App\Models\Order;
use App\Models\OrderStep;
use App\Classes\Jobs\UnityLogin;
use Config;
use Illuminate\Support\Facades\Http;
class GenerateOrderStepsProcessor
{
private $updatesOrderCurrentStep;
private $createsManyOrderStep;
private $updateOrderStepProcessors;
private $getUnityContractObligationsProcessor;
public function __construct(UpdatesOrderCurrentStepProcessor $updatesOrderCurrentStep, CreatesManyOrderSteps $createsManyOrderStep, UpdateOrderStepsProcessor $updateOrderStepProcessors, GetContractObligationsProcessor $getUnityContractObligationsProcessor)
{
$this->updatesOrderCurrentStep = $updatesOrderCurrentStep;
$this->createsManyOrderStep = $createsManyOrderStep;
$this->updateOrderStepProcessors = $updateOrderStepProcessors;
$this->getUnityContractObligationsProcessor = $getUnityContractObligationsProcessor;
}
public function execute(Order $order){
$obligations = $this->getUnityContractObligationsProcessor->execute();
//TODO: Update Appointee ID to Entity User base on hash key
foreach($obligations as $step){
$orderSteps[] = new OrderStepsObject(
$order->id,
1,
$step->name,
true,
$step->sequence,
0,
0,
null
);
}
$this->createsManyOrderStep->execute($order, $orderSteps);
$this->updatesOrderCurrentStep->execute($order->id, OrderSteps::PACKING);
$this->updateOrderStepProcessors->execute(OrderSteps::PROCESSING);
}
}