Files
omair saleh 8a28eb1790 Revert "Merge branch 'dashboardReport' into 'master'"
This reverts merge request !5
2019-03-19 09:57:38 +00:00

68 lines
2.7 KiB
PHP

<?php
namespace App\Classes\Modules\ControllersLogic\Companies;
use App\Classes\Modules\Companies\Exceptions\CannotListCompanyOrderCategoryException;
use App\Classes\Modules\Companies\Services\ListsCompanyCancelledOrders;
use App\Classes\Modules\Companies\Services\ListsCompanyCompleteOrders;
use App\Classes\Modules\Companies\Services\FetchCompanyOrderCategorySteps;
use App\Classes\Modules\Companies\Services\ListsCompanyOrdersCategory;
use App\Classes\Modules\ControllerLogic\Exceptions\InternalServerErrorException;
use App\Classes\ValueObjects\Constants\OrderSteps;
class ListCompanyOrderLogic
{
/** @var FetchCompanyOrderCategorySteps */
private $fetchCompanyOrderCategorySteps;
/** @var ListsCompanyCompleteOrders */
private $listsCompanyCompleteOrders;
/** @var ListsCompanyCancelledOrders */
private $listCompanyCancelledOrders;
/** @var ListsCompanyOrdersCategory */
private $listCompanyOrdersCategory;
/**
* ListCompanyOrderLogic constructor.
* @param FetchCompanyOrderCategorySteps $fetchCompanyOrderCategorySteps
* @param ListsCompanyCompleteOrders $listsCompanyCompleteOrders
* @param ListsCompanyCancelledOrders $listCompanyCancelledOrders
* @param ListsCompanyOrdersCategory $listCompanyOrdersCategory
*/
public function __construct(FetchCompanyOrderCategorySteps $fetchCompanyOrderCategorySteps, ListsCompanyCompleteOrders $listsCompanyCompleteOrders, ListsCompanyCancelledOrders $listCompanyCancelledOrders, ListsCompanyOrdersCategory $listCompanyOrdersCategory)
{
$this->fetchCompanyOrderCategorySteps = $fetchCompanyOrderCategorySteps;
$this->listsCompanyCompleteOrders = $listsCompanyCompleteOrders;
$this->listCompanyCancelledOrders = $listCompanyCancelledOrders;
$this->listCompanyOrdersCategory = $listCompanyOrdersCategory;
}
/**
* @param int $id
* @param string $category
* @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
* @throws InternalServerErrorException
*/
public function execute(int $id, string $category){
try {
switch ($category){
case OrderSteps::COMPANY_COMPLETE_CATEGORY:
return $this->listsCompanyCompleteOrders->execute($id);
case OrderSteps::COMPANY_CANCEL_CATEGORY:
return $this->listCompanyCancelledOrders->execute($id);
default:
return $this->listCompanyOrdersCategory->execute($id, $this->fetchCompanyOrderCategorySteps->execute($category));
}
} catch (CannotListCompanyOrderCategoryException $exception){
throw new InternalServerErrorException('Cannot list company\'s order in category because'.$exception);
}
}
}