From 6b5e4878fb156f03a16c439118f83109f744f951 Mon Sep 17 00:00:00 2001 From: Darko Gjorgjijoski Date: Fri, 3 Apr 2026 17:18:48 +0200 Subject: [PATCH] Consolidate Admin Settings controllers: merge Get/Update pairs Merge GetCompanySettingsController + UpdateCompanySettingsController into CompanySettingsController with show() and update() methods. Merge GetUserSettingsController + UpdateUserSettingsController into UserSettingsController with show() and update() methods. Absorb GetCompanyMailConfigurationController into CompanyMailConfigurationController as getDefaultConfig() method. Removes 5 single-action controllers, down to 4 Settings controllers. --- .../CompanyMailConfigurationController.php | 10 +++++++ ...ller.php => CompanySettingsController.php} | 18 +++++++----- .../GetCompanyMailConfigurationController.php | 25 ---------------- .../Settings/GetCompanySettingsController.php | 25 ---------------- .../Settings/GetUserSettingsController.php | 23 --------------- .../Settings/UpdateUserSettingsController.php | 27 ----------------- .../Admin/Settings/UserSettingsController.php | 29 +++++++++++++++++++ routes/api.php | 17 +++++------ 8 files changed, 56 insertions(+), 118 deletions(-) rename app/Http/Controllers/V1/Admin/Settings/{UpdateCompanySettingsController.php => CompanySettingsController.php} (71%) delete mode 100644 app/Http/Controllers/V1/Admin/Settings/GetCompanyMailConfigurationController.php delete mode 100644 app/Http/Controllers/V1/Admin/Settings/GetCompanySettingsController.php delete mode 100644 app/Http/Controllers/V1/Admin/Settings/GetUserSettingsController.php delete mode 100644 app/Http/Controllers/V1/Admin/Settings/UpdateUserSettingsController.php create mode 100644 app/Http/Controllers/V1/Admin/Settings/UserSettingsController.php diff --git a/app/Http/Controllers/V1/Admin/Settings/CompanyMailConfigurationController.php b/app/Http/Controllers/V1/Admin/Settings/CompanyMailConfigurationController.php index b03bee95..c1413a3e 100644 --- a/app/Http/Controllers/V1/Admin/Settings/CompanyMailConfigurationController.php +++ b/app/Http/Controllers/V1/Admin/Settings/CompanyMailConfigurationController.php @@ -12,6 +12,16 @@ use Mail; class CompanyMailConfigurationController extends Controller { + public function getDefaultConfig(Request $request): JsonResponse + { + $mailConfig = [ + 'from_name' => config('mail.from.name'), + 'from_mail' => config('mail.from.address'), + ]; + + return response()->json($mailConfig); + } + public function getMailConfig(Request $request): JsonResponse { $companyId = $request->header('company'); diff --git a/app/Http/Controllers/V1/Admin/Settings/UpdateCompanySettingsController.php b/app/Http/Controllers/V1/Admin/Settings/CompanySettingsController.php similarity index 71% rename from app/Http/Controllers/V1/Admin/Settings/UpdateCompanySettingsController.php rename to app/Http/Controllers/V1/Admin/Settings/CompanySettingsController.php index 1c4e2552..6b346968 100644 --- a/app/Http/Controllers/V1/Admin/Settings/UpdateCompanySettingsController.php +++ b/app/Http/Controllers/V1/Admin/Settings/CompanySettingsController.php @@ -3,21 +3,23 @@ namespace App\Http\Controllers\V1\Admin\Settings; use App\Http\Controllers\Controller; +use App\Http\Requests\GetSettingsRequest; use App\Http\Requests\UpdateSettingsRequest; use App\Models\Company; use App\Models\CompanySetting; use Illuminate\Http\JsonResponse; use Illuminate\Support\Arr; -class UpdateCompanySettingsController extends Controller +class CompanySettingsController extends Controller { - /** - * Handle the incoming request. - * - * @param \Illuminate\Http\UpdateSettingsRequest $request - * @return JsonResponse - */ - public function __invoke(UpdateSettingsRequest $request) + public function show(GetSettingsRequest $request): JsonResponse + { + $settings = CompanySetting::getSettings((array) $request->settings, $request->header('company')); + + return response()->json($settings); + } + + public function update(UpdateSettingsRequest $request): JsonResponse { $company = Company::find($request->header('company')); $this->authorize('manage company', $company); diff --git a/app/Http/Controllers/V1/Admin/Settings/GetCompanyMailConfigurationController.php b/app/Http/Controllers/V1/Admin/Settings/GetCompanyMailConfigurationController.php deleted file mode 100644 index c5cb1498..00000000 --- a/app/Http/Controllers/V1/Admin/Settings/GetCompanyMailConfigurationController.php +++ /dev/null @@ -1,25 +0,0 @@ - config('mail.from.name'), - 'from_mail' => config('mail.from.address'), - ]; - - return response()->json($mailConfig); - } -} diff --git a/app/Http/Controllers/V1/Admin/Settings/GetCompanySettingsController.php b/app/Http/Controllers/V1/Admin/Settings/GetCompanySettingsController.php deleted file mode 100644 index d531f721..00000000 --- a/app/Http/Controllers/V1/Admin/Settings/GetCompanySettingsController.php +++ /dev/null @@ -1,25 +0,0 @@ -settings, $request->header('company')); - - return response()->json($settings); - } -} diff --git a/app/Http/Controllers/V1/Admin/Settings/GetUserSettingsController.php b/app/Http/Controllers/V1/Admin/Settings/GetUserSettingsController.php deleted file mode 100644 index 2d82fbfb..00000000 --- a/app/Http/Controllers/V1/Admin/Settings/GetUserSettingsController.php +++ /dev/null @@ -1,23 +0,0 @@ -user(); - - return response()->json($user->getSettings((array) $request->settings)); - } -} diff --git a/app/Http/Controllers/V1/Admin/Settings/UpdateUserSettingsController.php b/app/Http/Controllers/V1/Admin/Settings/UpdateUserSettingsController.php deleted file mode 100644 index f0125d5a..00000000 --- a/app/Http/Controllers/V1/Admin/Settings/UpdateUserSettingsController.php +++ /dev/null @@ -1,27 +0,0 @@ -user(); - - $user->setSettings($request->settings); - - return response()->json([ - 'success' => true, - ]); - } -} diff --git a/app/Http/Controllers/V1/Admin/Settings/UserSettingsController.php b/app/Http/Controllers/V1/Admin/Settings/UserSettingsController.php new file mode 100644 index 00000000..6fc0cad0 --- /dev/null +++ b/app/Http/Controllers/V1/Admin/Settings/UserSettingsController.php @@ -0,0 +1,29 @@ +user(); + + return response()->json($user->getSettings((array) $request->settings)); + } + + public function update(UpdateSettingsRequest $request): JsonResponse + { + $user = $request->user(); + + $user->setSettings($request->settings); + + return response()->json([ + 'success' => true, + ]); + } +} diff --git a/routes/api.php b/routes/api.php index 5188a9bb..9b25b9ab 100644 --- a/routes/api.php +++ b/routes/api.php @@ -59,12 +59,9 @@ use App\Http\Controllers\V1\Admin\Role\RolesController; use App\Http\Controllers\V1\Admin\Settings\CompanyController; use App\Http\Controllers\V1\Admin\Settings\CompanyCurrencyCheckTransactionsController; use App\Http\Controllers\V1\Admin\Settings\CompanyMailConfigurationController; -use App\Http\Controllers\V1\Admin\Settings\GetCompanyMailConfigurationController; -use App\Http\Controllers\V1\Admin\Settings\GetCompanySettingsController; -use App\Http\Controllers\V1\Admin\Settings\GetUserSettingsController; +use App\Http\Controllers\V1\Admin\Settings\CompanySettingsController; use App\Http\Controllers\V1\Admin\Settings\TaxTypesController; -use App\Http\Controllers\V1\Admin\Settings\UpdateCompanySettingsController; -use App\Http\Controllers\V1\Admin\Settings\UpdateUserSettingsController; +use App\Http\Controllers\V1\Admin\Settings\UserSettingsController; use App\Http\Controllers\V1\Admin\Users\UsersController; use App\Http\Controllers\V1\Customer\Auth\ForgotPasswordController as AuthForgotPasswordController; use App\Http\Controllers\V1\Customer\Auth\ResetPasswordController as AuthResetPasswordController; @@ -385,9 +382,9 @@ Route::prefix('/v1')->group(function () { Route::put('/me', [CompanyController::class, 'updateProfile']); - Route::get('/me/settings', GetUserSettingsController::class); + Route::get('/me/settings', [UserSettingsController::class, 'show']); - Route::put('/me/settings', UpdateUserSettingsController::class); + Route::put('/me/settings', [UserSettingsController::class, 'update']); Route::post('/me/upload-avatar', [CompanyController::class, 'uploadAvatar']); @@ -395,9 +392,9 @@ Route::prefix('/v1')->group(function () { Route::post('/company/upload-logo', [CompanyController::class, 'uploadCompanyLogo']); - Route::get('/company/settings', GetCompanySettingsController::class); + Route::get('/company/settings', [CompanySettingsController::class, 'show']); - Route::post('/company/settings', UpdateCompanySettingsController::class); + Route::post('/company/settings', [CompanySettingsController::class, 'update']); Route::get('/settings', GetSettingsController::class); @@ -416,7 +413,7 @@ Route::prefix('/v1')->group(function () { Route::post('/mail/test', [MailConfigurationController::class, 'testEmailConfig']); - Route::get('/company/mail/config', GetCompanyMailConfigurationController::class); + Route::get('/company/mail/config', [CompanyMailConfigurationController::class, 'getDefaultConfig']); Route::get('/company/mail/company-config', [CompanyMailConfigurationController::class, 'getMailConfig']); Route::post('/company/mail/company-config', [CompanyMailConfigurationController::class, 'saveMailConfig']);