admin suspend user's bank account - UI & API

This commit is contained in:
edmondlang
2022-03-14 11:55:49 +08:00
parent 991ba93c71
commit 7c362c93c3
8 changed files with 180 additions and 12 deletions
@@ -39,7 +39,6 @@ class UpdateBankLogic extends AbstractControllerLogic
/** @var FetchesBank */
private $fetchesBank;
/**
* UpdateBankLogic constructor.
* @param CanUpdateBank $canUpdateBank
@@ -66,11 +65,18 @@ class UpdateBankLogic extends AbstractControllerLogic
*/
public function logic(Request $request) : JsonResponse
{
$bankObject = new BankObject($request->input('company_id'), $request->input('country_id'),
$request->input('reference'), $request->input('bank_name'), $request->input('holder_name'),
$request->input('account_no'));
$bankObject = new BankObject(
$request->input('company_id'),
$request->input('account_type'),
$request->input('bank_name'),
$request->input('holder_name'),
$request->input('account_no'),
$request->input('bank_branch'),
$request->input('swift'),
$request->input('snap'),
$request->input('country_id'),
$request->input('reference')
);
$bank = $this->fetchesBank->execute(['id' => $request->route('id')]);
@@ -0,0 +1,62 @@
<?php
namespace App\Classes\Modules\Banks\ControllersLogic;
use App\Http\Resources\BankResource;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Modules\Banks\Services\FetchesBank;
use App\Classes\Modules\Banks\Services\UpdatesBankStatus;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class UpdateBankStatusLogic extends AbstractControllerLogic
{
/**
* @return array
*/
protected function notification():array {
return [
'title' => 'Update Bank Account Status',
'message' => 'You have successfully updated the Bank Account Status'
];
}
/** @var FetchesBank */
private $fetchesBank;
/** @var UpdatesBankStatus */
private $updatesBankStatus;
/**
* UpdateBankStatusLogic constructor.
* @param FetchesBank $fetchesBank
* @param UpdatesBankStatus $updatesBankStatus
*/
public function __construct(
FetchesBank $fetchesBank,
UpdatesBankStatus $updatesBankStatus
)
{
$this->fetchesBank = $fetchesBank;
$this->updatesBankStatus = $updatesBankStatus;
}
/**
* @param Request $request
* @return JsonResponse
* @throws \App\Classes\Exceptions\AccessForbiddenException
* @throws \App\Classes\Exceptions\MalformedRequestException
* @throws \App\Classes\Exceptions\RequestValidationException
*/
public function logic(Request $request) : JsonResponse
{
$bank = $this->fetchesBank->execute(['id' => $request->route('id')]);
$bank_query = $this->updatesBankStatus->execute($bank, $request->input('status'));
return $this->resourceResponse(new BankResource($bank_query));
}
}
@@ -23,7 +23,7 @@ class UpdatesBank extends AbstractUpdateRecord
$model->bank_branch = $object->getBankBranch();
$model->swift = $object->getSwift();
$model->snap = $object->getSnap();
$model->default = $object->getDefault();
$model->reference = $object->getReference();
return $this->handler($model);
}
@@ -0,0 +1,22 @@
<?php
namespace App\Classes\Modules\Banks\Services;
use App\Classes\General\Eloquent\AbstractUpdateRecord;
use App\Models\Bank;
class UpdatesBankStatus extends AbstractUpdateRecord
{
/**
* @param Bank $model
* @param int $status
* @return \Illuminate\Database\Eloquent\Model
* @throws \App\Classes\Exceptions\MalformedRequestException
*/
public function execute(Bank $model, int $status)
{
$model->status = $status;
return $this->handler($model);
}
}
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Controllers\Banks;
use App\Classes\Modules\Banks\ControllersLogic\UpdateBankStatusLogic;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class UpdateBankStatusController
{
/**
* @param Request $request
* @param UpdateBankStatusLogic $logic
* @return JsonResponse
*/
public function update(Request $request, UpdateBankStatusLogic $logic): JsonResponse {
return $logic->execute($request);
}
}
@@ -0,0 +1,45 @@
<template>
<div class="row text-center">
<div class="col">
<loading-component style="height: 300px; top: 0;" key="1" color="success" v-show="isLoading" ></loading-component>
<div class="row justify-content-center" v-show="!isLoading">
<div class="col">
<div class="row m-b-20">
<div class="col">
<h3 class="all-caps">Are you Sure?</h3>
<div class="fs-11">Are you sure you want to suspend this Bank Account?</div>
</div>
</div>
<div class="row">
<div class="col p-r-5">
<div class="btn btn-sm btn-success btn-block b-rad-none" data-dismiss="modal">Cancel</div>
</div>
<div class="col p-l-5">
<div class="btn btn-sm btn-danger btn-block b-rad-none" @click="submitForm()">Confirm</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import componentHandler from '../../../general/mixins/componentHandler';
import ModalFormHandler from '../../../general/mixins/modalFormHandler';
export default {
props: {
section: {
default: 'paymentProofSection'
}
},
methods: {
submitForm() {
this.parameters.status = 5;
this.submit(this.route('api.bank.status.update', this.data.recipient_bank_account.id), 'put', this.section, true, false);
}
},
mixins: [componentHandler, ModalFormHandler]
}
</script>
@@ -47,13 +47,24 @@
</div>
</div>
<bank-in-component :data="item"></bank-in-component>
<div class="row hide" v-if="item.status === 1 || item.status === 2">
<div class="col">
<span class="text-complete fs-10 pointer requestModal" data-type="topUpModal">Cancel this order?</span>
<div class="row">
<div class="col" v-if="item.recipient_bank_account.status === 5">
<div class="fs-9 bold text-warning">*This Bank Account has been suspended. Please notify customer to update their Bank Account.*</div>
</div>
<div class="col" v-if="item.recipient_bank_account.status !== 5">
<span class="text-complete fs-10 pointer requestModal text-underline" data-type="suspendBankAccountModal">Suspend this Bank Account ?</span>
</div>
</div>
<modal-component type="topUpModal">
<delete-transaction-form-component :data="item" section="section" class="text-center"></delete-transaction-form-component>
<modal-component type="suspendBankAccountModal">
<suspend-bank-account-form-component :data="item" section="paymentProofSection"></suspend-bank-account-form-component>
</modal-component>
<div class="row hide" v-if="item.status === 1 || item.status === 2">
<div class="col">
<span class="text-complete fs-10 pointer requestModal" data-type="cancelOrderModal">Cancel this order?</span>
</div>
</div>
<modal-component type="cancelOrderModal">
<delete-transaction-form-component :data="item" section="paymentProofSection" class="text-center"></delete-transaction-form-component>
</modal-component>
</div>
</div>
+2
View File
@@ -8,4 +8,6 @@ Route::group(['prefix' => 'bank', 'as' => 'bank.', 'namespace' => 'Banks'], func
Route::put('/update/{id}', 'UpdateBankController@update')->name('update');
Route::put('/{id}/default', 'SetBankToDefaultController@update')->name('default');
Route::delete('/delete/{id}', 'DeleteBankController@delete')->name('delete');
Route::put('/update/{id}/status', 'UpdateBankStatusController@update')->name('status.update');
});