'Delete Currency', 'message' => 'You have successfully deleted the Currency' ]; } /** @var CanDeleteCurrency */ private $canDeleteCurrency; /** @var DeletesCurrency */ private $deletesCurrency; /** @var FetchesCurrency */ private $fetchesCurrency; /** * DeleteCurrencyLogic constructor. * @param CanDeleteCurrency $canDeleteCurrency * @param DeletesCurrency $deletesCurrency * @param FetchesCurrency $fetchesCurrency */ public function __construct( CanDeleteCurrency $canDeleteCurrency, DeletesCurrency $deletesCurrency, FetchesCurrency $fetchesCurrency ) { $this->canDeleteCurrency = $canDeleteCurrency; $this->deletesCurrency = $deletesCurrency; $this->fetchesCurrency = $fetchesCurrency; } /** * @param Request $request * @return JsonResponse * @throws ErrorException */ public function logic(Request $request) : JsonResponse { try { DB::beginTransaction(); $currency_query = $this->fetchesCurrency->execute(['id' => $request->route('id')]); $this->canDeleteCurrency->passes(); $this->deletesCurrency->execute($currency_query); DB::commit(); return $this->resourceResponse(new CurrencyResource($currency_query)); } catch (\Exception $exception){ throw new ErrorException($exception->getMessage(), $exception->getCode()); } } }