'Created Currency', 'message' => 'You have successfully created a new Currency' ]; } /** @var CanCreateCurrency */ private $canCreateCurrency; /** @var CreatesCurrency */ private $createsCurrency; /** @var CreatesCurrencyLog */ private $createsCurrencyLog; /** * CreateSegmentLogic constructor. * @param CanCreateCurrency $canCreateCurrency * @param CreatesCurrency $createsCurrency * @param CreatesCurrencyLog $createsCurrencyLog */ public function __construct( CanCreateCurrency $canCreateCurrency, CreatesCurrency $createsCurrency, CreatesCurrencyLog $createsCurrencyLog ) { $this->canCreateCurrency = $canCreateCurrency; $this->createsCurrency = $createsCurrency; $this->createsCurrencyLog = $createsCurrencyLog; } /** * @param Request $request * @return JsonResponse * @throws ErrorException */ public function logic(Request $request) : JsonResponse { try { DB::beginTransaction(); $currency_object = new CurrencyObject( $request->input('country_id'), $request->input('name'), $request->input('short_code'), $request->input('symbol'), number_format( (float) $request->input('selling'), 5, '.', '') ); $this->canCreateCurrency->passes($currency_object); $currency_query = $this->createsCurrency->execute($currency_object); $currency_log_query = $this->createsCurrencyLog->execute($currency_query); DB::commit(); return $this->resourceResponse(new CurrencyResource($currency_query)); } catch (\Exception $exception) { throw new ErrorException($exception->getMessage(), $exception->getCode()); } } }