diff --git a/app/Classes/Modules/Banks/ControllersLogic/DeleteBankLogic.php b/app/Classes/Modules/Banks/ControllersLogic/DeleteBankLogic.php index 37c80843..871520ae 100644 --- a/app/Classes/Modules/Banks/ControllersLogic/DeleteBankLogic.php +++ b/app/Classes/Modules/Banks/ControllersLogic/DeleteBankLogic.php @@ -8,9 +8,10 @@ use App\Classes\Modules\Banks\Services\FetchesBank; use App\Classes\Modules\Banks\Standards\Rules\CanDeleteBank; use App\Classes\Modules\Banks\Services\DeletesBank; use App\Classes\Modules\Banks\Services\CreatesBankLog; -use App\Http\Resources\BankResource; +use App\Classes\ValueObjects\Constants\RoleTypes; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; class DeleteBankLogic extends AbstractControllerLogic { @@ -66,20 +67,30 @@ class DeleteBankLogic extends AbstractControllerLogic */ public function logic(Request $request) : JsonResponse { - $this->canDeleteBank->passes(); - $bank = $this->fetchesBank->execute(['id' => $request->route('id')]); + $proceed = false; if($bank->default){ - throw new RequestValidationException('You can\'t delete bank account when it set to default'); + $isAuthorized = in_array(Auth::user()->type, RoleTypes::ADMIN_ROLES); + if($isAuthorized) { + $banks = $bank->company->banks()->where('default', 1)->get(); + if(count($banks) > 1) { + //User should be able to delete themselves, but sometimes there are more than 1 bank set as default (different type, why??!), we need to allow admin to do the delete + $proceed = true; + } + else{ + $proceed = false; + } + } + + if(!$proceed){ + throw new RequestValidationException('You can\'t delete bank account when it set to default'); + } } $bank = $this->deletesBank->execute($bank); - -// $bankLog = $this->createsBankLog->execute($bank); - + // $bankLog = $this->createsBankLog->execute($bank); return $this->response([]); } - -} \ No newline at end of file +} diff --git a/resources/assets/vue/components/companies/elements/CompanyBankAccountComponent.vue b/resources/assets/vue/components/companies/elements/CompanyBankAccountComponent.vue index 1b911592..615e3f2f 100644 --- a/resources/assets/vue/components/companies/elements/CompanyBankAccountComponent.vue +++ b/resources/assets/vue/components/companies/elements/CompanyBankAccountComponent.vue @@ -51,6 +51,13 @@ +