Files
izyim/app/Classes/Modules/Orders/Processors/WarehousePackOrder.php
Omair Saleh 43a9e0ca03 large commit
2019-05-18 12:14:31 +08:00

46 lines
1.3 KiB
PHP

<?php
namespace App\Classes\Modules\Orders\Processors;
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
use App\Classes\Modules\Orders\Services\Processors\updatesStep;
use App\Classes\ValueObjects\Constants\HttpStatus;
use App\Models\PackingList;
use Illuminate\Http\JsonResponse;
class WarehousePackOrder
{
use updatesStep;
/**
* @param OrderObject $order
* @param StepObject $step
* @return JsonResponse
* @throws InternalServerErrorException
*/
public function execute(OrderObject $order, StepObject $step){
try {
$packingList = PackingList::where('order_id', $order->getOrderId())->firstOrFail();
if($packingList->confirmed) {
$this->completeStep($order, $step);
return new JsonResponse(null, HttpStatus::REQUEST_ACCEPTED);
}
return new JsonResponse(['message' => 'Failed to update order step because packing list is in complete'], HttpStatus::VALIDATION_FAILED);
} catch (\Exception $exception) {
throw new InternalServerErrorException("Failed to update order step because {$exception->getMessage()}");
}
}
}