From e05a801fff875752d5ddaf5ef3f74873ff4e84b2 Mon Sep 17 00:00:00 2001 From: CheeSiong Date: Mon, 4 Jan 2021 20:47:35 +0800 Subject: [PATCH] Update To Default Company Bank --- .../General/Eloquent/Filters/CompanyId.php | 20 +++ .../General/Eloquent/Filters/DefaultType.php | 20 +++ .../General/Eloquent/Filters/NotId.php | 20 +++ .../UpdateToDefaultCompanyBankLogic.php | 118 ++++++++++++++++++ .../Services/ListsCompanyBank.php | 33 +++++ .../Services/UpdatesToDefaultCompanyBank.php | 23 ++++ .../UpdatesToNonDefaultCompanyBank.php | 23 ++++ .../ValueObjects/Constants/DefaultType.php | 8 ++ .../UpdateToDefaultCompanyBankController.php | 20 +++ database/seeds/CompanyBanksTableSeeder.php | 1 + routes/api.php | 2 - routes/company_bank.php | 3 + 12 files changed, 289 insertions(+), 2 deletions(-) create mode 100644 app/Classes/General/Eloquent/Filters/CompanyId.php create mode 100644 app/Classes/General/Eloquent/Filters/DefaultType.php create mode 100644 app/Classes/General/Eloquent/Filters/NotId.php create mode 100644 app/Classes/Modules/CompanyBanks/ControllersLogic/UpdateToDefaultCompanyBankLogic.php create mode 100644 app/Classes/Modules/CompanyBanks/Services/ListsCompanyBank.php create mode 100644 app/Classes/Modules/CompanyBanks/Services/UpdatesToDefaultCompanyBank.php create mode 100644 app/Classes/Modules/CompanyBanks/Services/UpdatesToNonDefaultCompanyBank.php create mode 100644 app/Classes/ValueObjects/Constants/DefaultType.php create mode 100644 app/Http/Controllers/CompanyBanks/UpdateToDefaultCompanyBankController.php diff --git a/app/Classes/General/Eloquent/Filters/CompanyId.php b/app/Classes/General/Eloquent/Filters/CompanyId.php new file mode 100644 index 00000000..379326cf --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/CompanyId.php @@ -0,0 +1,20 @@ +where('company_id', $value); + } + +} \ No newline at end of file diff --git a/app/Classes/General/Eloquent/Filters/DefaultType.php b/app/Classes/General/Eloquent/Filters/DefaultType.php new file mode 100644 index 00000000..c23ceaaf --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/DefaultType.php @@ -0,0 +1,20 @@ +where('default', $value); + } + +} \ No newline at end of file diff --git a/app/Classes/General/Eloquent/Filters/NotId.php b/app/Classes/General/Eloquent/Filters/NotId.php new file mode 100644 index 00000000..ea73b39c --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/NotId.php @@ -0,0 +1,20 @@ +where('id', '!=', $value); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/CompanyBanks/ControllersLogic/UpdateToDefaultCompanyBankLogic.php b/app/Classes/Modules/CompanyBanks/ControllersLogic/UpdateToDefaultCompanyBankLogic.php new file mode 100644 index 00000000..7b262260 --- /dev/null +++ b/app/Classes/Modules/CompanyBanks/ControllersLogic/UpdateToDefaultCompanyBankLogic.php @@ -0,0 +1,118 @@ + 'Updated Company Bank', + 'message' => 'You have successfully updated the Company Bank' + ]; + } + + /** @var CanUpdateCompanyBank */ + private $canUpdateCompanyBank; + + /** @var UpdatesToNonDefaultCompanyBank */ + private $updatesToNonDefaultCompanyBank; + + /** @var UpdatesToDefaultCompanyBank */ + private $updatesToDefaultCompanyBank; + + /** @var ListsCompanyBank */ + private $listsCompanyBank; + + /** @var FetchesCompanyBank */ + private $fetchesCompanyBank; + + /** + * UpdateToDefaultCompanyBankLogic constructor. + * @param CanUpdateCompanyBank $canUpdateCompanyBank + * @param UpdatesToDefaultCompanyBank $updatesToDefaultCompanyBank + * @param FetchesCompanyBank $fetchesCompanyBank + */ + public function __construct( + CanUpdateCompanyBank $canUpdateCompanyBank, + UpdatesToNonDefaultCompanyBank $updatesToNonDefaultCompanyBank, + UpdatesToDefaultCompanyBank $updatesToDefaultCompanyBank, + ListsCompanyBank $listsCompanyBank, + FetchesCompanyBank $fetchesCompanyBank + ) + { + $this->canUpdateCompanyBank = $canUpdateCompanyBank; + $this->updatesToNonDefaultCompanyBank = $updatesToNonDefaultCompanyBank; + $this->updatesToDefaultCompanyBank = $updatesToDefaultCompanyBank; + $this->listsCompanyBank = $listsCompanyBank; + $this->fetchesCompanyBank = $fetchesCompanyBank; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorExceptionn + */ + public function logic(Request $request) : JsonResponse + { + try { + DB::beginTransaction(); + + $company_bank_query = $this->fetchesCompanyBank->execute(['id' => $request->route('id')]); + + $default_list_company_bank = $this->listsCompanyBank->execute([ + 'not_id' => $company_bank_query->id, + 'company_id' => $company_bank_query->company_id, + 'default_type' => DefaultType::DEFAULT + ]); + + foreach ($default_list_company_bank as $key => $row) { + $this->updatesToNonDefaultCompanyBank->execute($row); + } + + $company_bank_object = new CompanyBankObject( + $company_bank_query->country_id, + $company_bank_query->company_id, + $request->input('bank_name'), + $request->input('holder_name'), + $request->input('account_no'), + $company_bank_query->type, + $company_bank_query->default + ); + $this->canUpdateCompanyBank->passes($company_bank_object); + + $company_bank_query = $this->updatesToDefaultCompanyBank->execute($company_bank_query); + + DB::commit(); + + return $this->resourceResponse(new CompanyBankResource($company_bank_query)); + + } catch (\Exception $exception){ + dd($exception); + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/CompanyBanks/Services/ListsCompanyBank.php b/app/Classes/Modules/CompanyBanks/Services/ListsCompanyBank.php new file mode 100644 index 00000000..e9420517 --- /dev/null +++ b/app/Classes/Modules/CompanyBanks/Services/ListsCompanyBank.php @@ -0,0 +1,33 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} \ No newline at end of file diff --git a/app/Classes/Modules/CompanyBanks/Services/UpdatesToDefaultCompanyBank.php b/app/Classes/Modules/CompanyBanks/Services/UpdatesToDefaultCompanyBank.php new file mode 100644 index 00000000..1b2e6545 --- /dev/null +++ b/app/Classes/Modules/CompanyBanks/Services/UpdatesToDefaultCompanyBank.php @@ -0,0 +1,23 @@ +default = DefaultType::DEFAULT; + + return $this->handler($model); + } +} \ No newline at end of file diff --git a/app/Classes/Modules/CompanyBanks/Services/UpdatesToNonDefaultCompanyBank.php b/app/Classes/Modules/CompanyBanks/Services/UpdatesToNonDefaultCompanyBank.php new file mode 100644 index 00000000..1554d423 --- /dev/null +++ b/app/Classes/Modules/CompanyBanks/Services/UpdatesToNonDefaultCompanyBank.php @@ -0,0 +1,23 @@ +default = DefaultType::NONDEFAULT; + + return $this->handler($model); + } +} \ No newline at end of file diff --git a/app/Classes/ValueObjects/Constants/DefaultType.php b/app/Classes/ValueObjects/Constants/DefaultType.php new file mode 100644 index 00000000..27d6ce92 --- /dev/null +++ b/app/Classes/ValueObjects/Constants/DefaultType.php @@ -0,0 +1,8 @@ +execute($request); + } + +} \ No newline at end of file diff --git a/database/seeds/CompanyBanksTableSeeder.php b/database/seeds/CompanyBanksTableSeeder.php index c583e8ab..7e77f6be 100644 --- a/database/seeds/CompanyBanksTableSeeder.php +++ b/database/seeds/CompanyBanksTableSeeder.php @@ -16,6 +16,7 @@ class CompanyBanksTableSeeder extends Seeder [ 'id' => 1, 'country_id' => 1, + 'company_id' => 1, 'bank_name' => '12345678', 'holder_name' => '12345678', 'account_no' => '12345678', diff --git a/routes/api.php b/routes/api.php index 5be35d8b..715f5d5b 100644 --- a/routes/api.php +++ b/routes/api.php @@ -33,8 +33,6 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function require __DIR__ . '/segment.php'; - require __DIR__ . '/company_bank.php'; - require __DIR__ . '/currency.php'; }); diff --git a/routes/company_bank.php b/routes/company_bank.php index daba8486..8cfc9802 100644 --- a/routes/company_bank.php +++ b/routes/company_bank.php @@ -7,6 +7,9 @@ Route::group(['namespace' => 'CompanyBanks'], function () { Route::group(['prefix' => 'company-bank'], function () { Route::post('/create', 'CreateCompanyBankController@create')->name('create'); Route::put('/update/{id}', 'UpdateCompanyBankController@update')->name('update'); + + Route::put('/update-to-default/{id}', 'UpdateToDefaultCompanyBankController@update')->name('update-to-default'); + Route::delete('/delete/{id}', 'DeleteCompanyBankController@delete')->name('delete'); }); });