Files
izyim/app/Classes/Modules/ControllersLogic/Orders/CreateOrderLogic.php
T
2019-03-04 03:01:20 +08:00

44 lines
1.2 KiB
PHP

<?php
namespace App\Classes\Modules\ControllersLogic\Orders;
use App\Classes\Modules\Accounts\Exceptions\CannotCreateOrderException;
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
use App\Classes\Modules\Orders\DataTransferObjects\OrderObject;
use App\Classes\Modules\Orders\Services\CreatesOrder;
use Illuminate\Http\Request;
class CreateOrderLogic
{
/** @var CreatesOrder */
private $createOrder;
/**
* CreateOrderLogic constructor.
* @param CreatesOrder $createOrder
*/
public function __construct(CreatesOrder $createOrder)
{
$this->createOrder = $createOrder;
}
/**
* @param int $companyId
* @param Request $request
* @return \App\Models\Order|null
* @throws InternalServerErrorException
*/
public function execute(int $companyId, Request $request) {
try {
$order = new OrderObject($request->input('marking'), $companyId);
return $this->createOrder->execute($order);
} catch (CannotCreateOrderException $exception){
throw new InternalServerErrorException("Failed to create order because {$exception->getMessage()}");
}
}
}