Files
izyim/app/Classes/Modules/Orders/Services/ProcessesOrderStep.php
T
2019-03-19 17:11:21 +08:00

63 lines
2.2 KiB
PHP
Executable File

<?php
namespace App\Classes\Modules\Orders\Services;
use App\Classes\Constants;
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
use App\Classes\Modules\Orders\Services\Processors\ConfirmsOrder;
use App\Classes\Modules\Orders\Services\Processors\WarehousePackingOrder;
use App\Classes\Modules\Orders\Services\Processors\WarehouseReceivesOrder;
use Illuminate\Http\Request;
class ProcessesOrderStep
{
/** @var ConfirmsOrder */
private $confirmOrder;
/** @var WarehouseReceivesOrder */
private $warehouseReceivesOrder;
/** @var WarehousePackingOrder */
private $warehousePackingOrder;
/**
* StepProcessor constructor.
* @param ConfirmsOrder $confirmOrder
* @param WarehouseReceivesOrder $warehouseReceivesOrder
* @param WarehousePackingOrder $warehousePackingOrder
*/
public function __construct(ConfirmsOrder $confirmOrder, WarehouseReceivesOrder $warehouseReceivesOrder, WarehousePackingOrder $warehousePackingOrder)
{
$this->confirmOrder = $confirmOrder;
$this->warehouseReceivesOrder = $warehouseReceivesOrder;
$this->warehousePackingOrder = $warehousePackingOrder;
}
public function execute(OrderObject $order, StepObject $step, Request $request): bool{
switch ($step->getReferenceId()){
case Constants::ORDER_PROCESSING_STEP:
return $this->confirmOrder->execute($order, $request);
case Constants::ORDER_NO_WAREHOUSE_PENDING_SUPPLIER:
return true;
case Constants::ORDER_WAREHOUSE_RECEIVING_STEP:
return $this->warehouseReceivesOrder->execute($order, $request);
case Constants::ORDER_WAREHOUSE_PACKING_STEP:
return $this->warehousePackingOrder->execute($order);
case Constants::ORDER_SHIPPING_STEP:
return true;
case Constants::ORDER_WAREHOUSE_ARRIVAL_STEP:
return true;
case Constants::ORDER_WAREHOUSE_UNPACKING_STEP:
return true;
case Constants::ORDER_DELIVERY_STEP:
return true;
default:
return false;
}
}
}