'Created Wallet Transaction', 'message' => 'You have successfully created a wallet transaction' ]; } /** @var CreatesWalletTransaction */ private $createsWalletTransaction; /** @var GeneratesWalletTransactionBillNo */ private $generatesWalletTransactionBillNo; /** @var CanCreateWalletTransaction */ private $canCreateWalletTransaction; /** * CreateWalletLogic constructor. * @param CreatesWallet $createsWallet * @param GeneratesWalletCode $generatesWalletCode * @param CanCreateCompanyWallet $canCreateCompanyWallet */ public function __construct(CreatesWalletTransaction $createsWalletTransaction, GeneratesWalletTransactionBillNo $generatesWalletTransactionBillNo, CanCreateWalletTransaction $canCreateWalletTransaction) { $this->createsWalletTransaction = $createsWalletTransaction; $this->generatesWalletTransactionBillNo = $generatesWalletTransactionBillNo; $this->canCreateWalletTransaction = $canCreateWalletTransaction; } /** * @param Request $request * @return JsonResponse * @throws ErrorException */ public function logic(Request $request) : JsonResponse { try { DB::beginTransaction(); $object = new WalletTransactionObject( $request->route('id'), $this->generatesWalletTransactionBillNo->execute(),$request->input('trans_type'), number_format( (float) $request->input('amount'), 5, '.', ''), $request->input('currency_id') , number_format( (float) $request->input('original_amount'), 5, '.', ''), $request->input('original_currency_id'),number_format( (float) $request->input('currency_rate'), 5, '.', '') ); $this->canCreateWalletTransaction->passes($object); $wallet_transaction = $this->createsWalletTransaction->execute($object); DB::commit(); return $this->resourceResponse(new WalletTransactionResource($wallet_transaction)); } catch (\Exception $exception) { throw new ErrorException($exception->getMessage(), $exception->getCode()); } } }