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

54 lines
1.5 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\ReceiveNoteObject;
use App\Classes\Modules\Orders\DataTransferObjects\StepObject;
use App\Classes\Modules\Orders\Services\Processors\updatesStep;
use App\Classes\Modules\Orders\Services\ReceiveNote\CreatesReceiveNote;
use App\Classes\ValueObjects\Constants\HttpStatus;
use Illuminate\Http\JsonResponse;
class WarehouseReceivesOrder
{
use updatesStep;
/** @var CreatesReceiveNote */
private $createsReceiveNote;
/**
* WarehouseReceivesOrder constructor.
*/
public function __construct()
{
$this->createsReceiveNote = new CreatesReceiveNote();
}
/**
* @param OrderObject $order
* @param StepObject $step
* @param ReceiveNoteObject $object
* @return JsonResponse
* @throws InternalServerErrorException
*/
public function execute(OrderObject $order, StepObject $step, ReceiveNoteObject $object){
try {
$this->createsReceiveNote->execute($order, $object);
$this->completeStep($order, $step);
return new JsonResponse(null, HttpStatus::RESOURCE_CREATED);
} catch (\Exception $exception){
throw new InternalServerErrorException("Failed to update order step because {$exception->getMessage()}");
}
}
}