From 2ce39cf6c45153032aa8245c144790b7eb134eb0 Mon Sep 17 00:00:00 2001 From: Mohammad Hafijul Islam Date: Mon, 5 Feb 2024 04:34:11 +0600 Subject: [PATCH] remit seeder update --- src/EventServiceProvider.php | 32 ++++++++++++++++ src/Events/.gitkeep | 0 src/Events/RemitTransferFailed.php | 37 +++++++++++++++++++ src/Events/RemitTransferRejected.php | 37 +++++++++++++++++++ src/Events/RemitTransferRequested.php | 37 +++++++++++++++++++ src/Events/RemitTransferVendorAssigned.php | 37 +++++++++++++++++++ .../Controllers/BankTransferController.php | 35 ++++++++++-------- src/RemitServiceProvider.php | 1 + 8 files changed, 200 insertions(+), 16 deletions(-) create mode 100644 src/EventServiceProvider.php delete mode 100644 src/Events/.gitkeep create mode 100644 src/Events/RemitTransferFailed.php create mode 100644 src/Events/RemitTransferRejected.php create mode 100644 src/Events/RemitTransferRequested.php create mode 100644 src/Events/RemitTransferVendorAssigned.php diff --git a/src/EventServiceProvider.php b/src/EventServiceProvider.php new file mode 100644 index 0000000..0634424 --- /dev/null +++ b/src/EventServiceProvider.php @@ -0,0 +1,32 @@ +> + */ + protected $listen = [ + RemitTransferFailed::class => [ + + ], + RemitTransferRequested::class => [ + + ], + RemitTransferVendorAssigned::class => [ + + ], + RemitTransferRejected::class => [ + + ], + ]; +} diff --git a/src/Events/.gitkeep b/src/Events/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/Events/RemitTransferFailed.php b/src/Events/RemitTransferFailed.php new file mode 100644 index 0000000..0e6c4ad --- /dev/null +++ b/src/Events/RemitTransferFailed.php @@ -0,0 +1,37 @@ +transfer = $transfer; + } + + /** + * Get the channels the event should broadcast on. + * + * @return array + */ + public function broadcastOn(): array + { + return [ + new PrivateChannel('channel-name'), + ]; + } +} diff --git a/src/Events/RemitTransferRejected.php b/src/Events/RemitTransferRejected.php new file mode 100644 index 0000000..09e9b97 --- /dev/null +++ b/src/Events/RemitTransferRejected.php @@ -0,0 +1,37 @@ +transfer = $transfer; + } + + /** + * Get the channels the event should broadcast on. + * + * @return array + */ + public function broadcastOn(): array + { + return [ + new PrivateChannel('channel-name'), + ]; + } +} diff --git a/src/Events/RemitTransferRequested.php b/src/Events/RemitTransferRequested.php new file mode 100644 index 0000000..26b7d5c --- /dev/null +++ b/src/Events/RemitTransferRequested.php @@ -0,0 +1,37 @@ +transfer = $transfer; + } + + /** + * Get the channels the event should broadcast on. + * + * @return array + */ + public function broadcastOn(): array + { + return [ + new PrivateChannel('channel-name'), + ]; + } +} diff --git a/src/Events/RemitTransferVendorAssigned.php b/src/Events/RemitTransferVendorAssigned.php new file mode 100644 index 0000000..60a7de1 --- /dev/null +++ b/src/Events/RemitTransferVendorAssigned.php @@ -0,0 +1,37 @@ +transfer = $transfer; + } + + /** + * Get the channels the event should broadcast on. + * + * @return array + */ + public function broadcastOn(): array + { + return [ + new PrivateChannel('channel-name'), + ]; + } +} diff --git a/src/Http/Controllers/BankTransferController.php b/src/Http/Controllers/BankTransferController.php index 3062d5e..984396b 100644 --- a/src/Http/Controllers/BankTransferController.php +++ b/src/Http/Controllers/BankTransferController.php @@ -13,6 +13,7 @@ use Fintech\Core\Exceptions\StoreOperationException; use Fintech\Core\Exceptions\UpdateOperationException; use Fintech\Core\Traits\ApiResponseTrait; +use Fintech\Remit\Events\RemitTransferRequested; use Fintech\Remit\Facades\Remit; use Fintech\Remit\Http\Requests\ImportBankTransferRequest; use Fintech\Remit\Http\Requests\IndexBankTransferRequest; @@ -84,7 +85,7 @@ public function store(StoreBankTransferRequest $request): JsonResponse 'country_id' => $request->input('source_country_id', $depositor->profile?->country_id), ])->first(); - if (! $depositAccount) { + if (!$depositAccount) { throw new Exception("User don't have account deposit balance"); } @@ -93,8 +94,8 @@ public function store(StoreBankTransferRequest $request): JsonResponse 'country_id' => $request->input('source_country_id', $depositor->profile?->country_id), ])->first(); - if (! $masterUser) { - throw new Exception('Master User Account not found for '.$request->input('source_country_id', $depositor->profile?->country_id).' country'); + if (!$masterUser) { + throw new Exception('Master User Account not found for ' . $request->input('source_country_id', $depositor->profile?->country_id) . ' country'); } //set pre defined conditions of deposit @@ -125,7 +126,7 @@ public function store(StoreBankTransferRequest $request): JsonResponse $bankTransfer = Remit::bankTransfer()->create($inputs); - if (! $bankTransfer) { + if (!$bankTransfer) { throw (new StoreOperationException)->setModel(config('fintech.remit.bank_transfer_model')); } $order_data = $bankTransfer->order_data; @@ -140,12 +141,12 @@ public function store(StoreBankTransferRequest $request): JsonResponse ])->first(); //update User Account $depositedUpdatedAccount = $depositedAccount->toArray(); - $depositedUpdatedAccount['user_account_data']['spent_amount'] = (float) $depositedUpdatedAccount['user_account_data']['spent_amount'] + (float) $userUpdatedBalance['spent_amount']; - $depositedUpdatedAccount['user_account_data']['available_amount'] = (float) $userUpdatedBalance['current_amount']; + $depositedUpdatedAccount['user_account_data']['spent_amount'] = (float)$depositedUpdatedAccount['user_account_data']['spent_amount'] + (float)$userUpdatedBalance['spent_amount']; + $depositedUpdatedAccount['user_account_data']['available_amount'] = (float)$userUpdatedBalance['current_amount']; - $order_data['order_data']['previous_amount'] = (float) $depositedAccount->user_account_data['available_amount']; - $order_data['order_data']['current_amount'] = ((float) $order_data['order_data']['previous_amount'] + (float) $inputs['converted_currency']); - if (! Transaction::userAccount()->update($depositedAccount->getKey(), $depositedUpdatedAccount)) { + $order_data['order_data']['previous_amount'] = (float)$depositedAccount->user_account_data['available_amount']; + $order_data['order_data']['current_amount'] = ((float)$order_data['order_data']['previous_amount'] + (float)$inputs['converted_currency']); + if (!Transaction::userAccount()->update($depositedAccount->getKey(), $depositedUpdatedAccount)) { throw new Exception(__('User Account Balance does not update', [ 'current_status' => $bankTransfer->currentStatus(), 'target_status' => OrderStatus::Success->value, @@ -158,6 +159,8 @@ public function store(StoreBankTransferRequest $request): JsonResponse Remit::bankTransfer()->update($bankTransfer->getKey(), ['order_data' => $order_data, 'order_number' => $order_data['purchase_number']]); Transaction::orderQueue()->removeFromQueueUserWise($user_id ?? $depositor->getKey()); + event(new RemitTransferRequested('bank_deposit', $bankTransfer)); + DB::commit(); return $this->created([ @@ -190,7 +193,7 @@ public function show(string|int $id): BankTransferResource|JsonResponse $bankTransfer = Remit::bankTransfer()->find($id); - if (! $bankTransfer) { + if (!$bankTransfer) { throw (new ModelNotFoundException)->setModel(config('fintech.remit.bank_transfer_model'), $id); } @@ -218,13 +221,13 @@ public function update(UpdateBankTransferRequest $request, string|int $id): Json $bankTransfer = Remit::bankTransfer()->find($id); - if (! $bankTransfer) { + if (!$bankTransfer) { throw (new ModelNotFoundException)->setModel(config('fintech.remit.bank_transfer_model'), $id); } $inputs = $request->validated(); - if (! Remit::bankTransfer()->update($id, $inputs)) { + if (!Remit::bankTransfer()->update($id, $inputs)) { throw (new UpdateOperationException)->setModel(config('fintech.remit.bank_transfer_model'), $id); } @@ -256,11 +259,11 @@ public function destroy(string|int $id): JsonResponse $bankTransfer = Remit::bankTransfer()->find($id); - if (! $bankTransfer) { + if (!$bankTransfer) { throw (new ModelNotFoundException)->setModel(config('fintech.remit.bank_transfer_model'), $id); } - if (! Remit::bankTransfer()->destroy($id)) { + if (!Remit::bankTransfer()->destroy($id)) { throw (new DeleteOperationException())->setModel(config('fintech.remit.bank_transfer_model'), $id); } @@ -290,11 +293,11 @@ public function restore(string|int $id): JsonResponse $bankTransfer = Remit::bankTransfer()->find($id, true); - if (! $bankTransfer) { + if (!$bankTransfer) { throw (new ModelNotFoundException)->setModel(config('fintech.remit.bank_transfer_model'), $id); } - if (! Remit::bankTransfer()->restore($id)) { + if (!Remit::bankTransfer()->restore($id)) { throw (new RestoreOperationException())->setModel(config('fintech.remit.bank_transfer_model'), $id); } diff --git a/src/RemitServiceProvider.php b/src/RemitServiceProvider.php index 63bb896..71e5275 100644 --- a/src/RemitServiceProvider.php +++ b/src/RemitServiceProvider.php @@ -22,6 +22,7 @@ public function register() $this->app->register(RouteServiceProvider::class); $this->app->register(RepositoryServiceProvider::class); + $this->app->register(EventServiceProvider::class); } /**