'Credit into Company Wallet', 'message' => 'You have successfully credit company wallet' ]; } /** @var FetchesCompany */ private $fetchesCompany; /** @var GeneratesWalletCode */ private $generatesWalletCode; /** @var CreatesWallet */ private $createsWallet; /** @var GeneratesTransactionBillNumber */ private $generatesTransactionBillNumber; /** @var CreatesTransaction */ private $createsTransaction; /** @var UpdatesWallet */ private $updatesWallet; /** @var CreditWalletProcessor */ private $creditWalletProcessor; /** * CreateWalletLogic constructor. * @param FetchesCompany $fetchesCompany * @param GeneratesWalletCode $generatesWalletCode * @param CreatesWallet $createsWallet * @param GeneratesTransactionBillNumber $generatesTransactionBillNumber * @param CreatesTransaction $createsTransaction * @param UpdatesWallet $updatesWallet * @param CreditWalletProcessor $creditWalletProcessor */ public function __construct( FetchesCompany $fetchesCompany, GeneratesWalletCode $generatesWalletCode, CreatesWallet $createsWallet, GeneratesTransactionBillNumber $generatesTransactionBillNumber, CreatesTransaction $createsTransaction, UpdatesWallet $updatesWallet, CreditWalletProcessor $creditWalletProcessor ) { $this->fetchesCompany = $fetchesCompany; $this->generatesWalletCode = $generatesWalletCode; $this->createsWallet = $createsWallet; $this->generatesTransactionBillNumber = $generatesTransactionBillNumber; $this->createsTransaction = $createsTransaction; $this->updatesWallet = $updatesWallet; $this->creditWalletProcessor = $creditWalletProcessor; } /** * @param Request $request * @return JsonResponse * @throws \App\Classes\Exceptions\MalformedRequestException */ public function logic(Request $request) : JsonResponse { $amount = floatval(str_replace(',', '', $request->input('amount'))); $company = $this->fetchesCompany->execute(['id' => $request->input('company_id')]); $reference = $request->input('reference'); $type = $request->input('transaction_type'); $wallet = $this->creditWalletProcessor->execute($company, $type, $amount, $reference); return $this->resourceResponse(new WalletResource($wallet)); } }