From a7fa1097b7c6de60254ca64aef7cec5ca465e50a Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Wed, 20 May 2026 09:14:06 +0330 Subject: [PATCH] create user gateway controller --- .../ExpertManagementController.php | 1 - backend/app/Enums/BusinessTypeEnum.php | 23 +++++ .../GatewayManagementController.php | 87 +++++++++++++++++++ .../User/Requests/Gateway/StoreRequest.php | 36 ++++++++ .../User/Requests/Gateway/UpdateRequest.php | 32 +++++++ backend/routes/expert.php | 3 + backend/routes/web.php | 13 +++ 7 files changed, 194 insertions(+), 1 deletion(-) create mode 100644 backend/app/User/Controllers/GatewayManagementController.php create mode 100644 backend/app/User/Requests/Gateway/StoreRequest.php create mode 100644 backend/app/User/Requests/Gateway/UpdateRequest.php diff --git a/backend/app/Admin/Controllers/ExpertManagementController.php b/backend/app/Admin/Controllers/ExpertManagementController.php index a3e0c989..f0edad53 100755 --- a/backend/app/Admin/Controllers/ExpertManagementController.php +++ b/backend/app/Admin/Controllers/ExpertManagementController.php @@ -4,7 +4,6 @@ namespace App\Admin\Controllers; use App\Admin\Requests\ExpertManagement\StoreRequest; use App\Admin\Requests\ExpertManagement\UpdateRequest; -use App\Admin\Resources\ExpertManagementResource; use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; use App\Models\City; diff --git a/backend/app/Enums/BusinessTypeEnum.php b/backend/app/Enums/BusinessTypeEnum.php index dcd453de..232cc49f 100644 --- a/backend/app/Enums/BusinessTypeEnum.php +++ b/backend/app/Enums/BusinessTypeEnum.php @@ -40,4 +40,27 @@ enum BusinessTypeEnum: int self::OTHER => 'other', }; } + + public function name($id): string + { + $mapArray = [ + 1 => 'medical', + 2 => 'legal', + 3 => 'engineering', + 4 => 'education', + 5 => 'consulting', + 6 => 'beauty', + 7 => 'technical_services', + 8 => 'financial', + 9 => 'real_estate', + 10 => 'restaurant', + 11 => 'shop', + 12 => 'transportation', + 13 => 'art', + 14 => 'sport', + 15 => 'other', + ]; + + return $mapArray[$id]; + } } diff --git a/backend/app/User/Controllers/GatewayManagementController.php b/backend/app/User/Controllers/GatewayManagementController.php new file mode 100644 index 00000000..41d62b8c --- /dev/null +++ b/backend/app/User/Controllers/GatewayManagementController.php @@ -0,0 +1,87 @@ +where('user_id', '=', Auth::guard('web')->id()), + $request, + allowedFilters: ['*'], + allowedSortings: ['*'], + allowedSelects: ['id', 'name', 'domain', 'tax_id', 'bank_name', 'account_holder', 'iban', 'business_type_id', 'business_type_name'], + ); + } + + public function store(StoreRequest $request): JsonResponse + { + $user = Auth::guard('web')->user(); + + $logo = $request->has('logo') ? FileFacade::save($request->file('logo'), "{$user->id}") : null; + + UserGateway::query()->create([ + 'user_id' => $user->id, + 'username' => $user->username, + 'name' => $request->name, + 'domain' => $request->domain, + 'tax_id' => $request->tax_id, + 'bank_name' => $request->bank_name, + 'account_holder' => $request->account_holder, + 'iban' => $request->iban, + 'business_type_id' => $request->business_type_id, + 'business_type_name' => BusinessTypeEnum::name($request->business_type_id), + 'logo' => $logo, + ]); + + return $this->successResponse(); + } + + public function show(UserGateway $gateway): JsonResponse + { + return $this->successResponse($gateway); + } + + public function update(UpdateRequest $request, UserGateway $gateway): JsonResponse + { + $logo = null; + $user = Auth::guard('web')->user(); + + if ($request->has('logo')) + { + FileFacade::delete($gateway->logo, true); + $logo = FileFacade::save(request()->file('logo'), "{$user->id}"); + } + + $gateway->update([ + 'name' => $request->name, + 'domain' => $request->domain, + 'business_type_id' => $request->business_type_id, + 'business_type_name' => BusinessTypeEnum::name($request->business_type_id), + 'logo' => $logo, + ]); + + return $this->successResponse(); + } + + public function destroy(UserGateway $gateway): JsonResponse + { + $gateway->delete(); + return $this->successResponse(); + } +} diff --git a/backend/app/User/Requests/Gateway/StoreRequest.php b/backend/app/User/Requests/Gateway/StoreRequest.php new file mode 100644 index 00000000..2dcc0faa --- /dev/null +++ b/backend/app/User/Requests/Gateway/StoreRequest.php @@ -0,0 +1,36 @@ + + */ + public function rules(): array + { + return [ + 'name' => 'required|string|max:255', + 'domain' => 'required|string|max:255', + 'tax_id' => 'required|string', + 'bank_name' => 'required|string|max:255', + 'account_holder' => 'required|string', + 'iban' => 'required|string|max:255', + 'logo' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048', + 'business_type_id' => 'required|string|exists:business_types,id', + ]; + } +} diff --git a/backend/app/User/Requests/Gateway/UpdateRequest.php b/backend/app/User/Requests/Gateway/UpdateRequest.php new file mode 100644 index 00000000..30db4db1 --- /dev/null +++ b/backend/app/User/Requests/Gateway/UpdateRequest.php @@ -0,0 +1,32 @@ + + */ + public function rules(): array + { + return [ + 'name' => 'required|string|max:255', + 'domain' => 'required|string|max:255', + 'business_type_id' => 'required|string|exists:business_types,id', + 'logo' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048', + ]; + } +} diff --git a/backend/routes/expert.php b/backend/routes/expert.php index 50400564..3597a42f 100755 --- a/backend/routes/expert.php +++ b/backend/routes/expert.php @@ -38,6 +38,7 @@ Route::prefix('user_management') Route::post('/{user}', 'update')->name('update'); Route::delete('/{user}', 'destroy')->name('destroy'); }); + Route::prefix('roles') ->name('roles.') ->middleware(['auth:expert', 'permission:role-management']) @@ -49,6 +50,7 @@ Route::prefix('roles') Route::post('/{role}', 'update')->name('update'); Route::delete('/{role}', 'destroy')->name('destroy'); }); + Route::prefix('permissions') ->name('permissions.') ->middleware(['auth:expert', 'permission:permission-management']) @@ -60,6 +62,7 @@ Route::prefix('permissions') Route::post('/{permission}', 'update')->name('update'); Route::delete('/{permission}', 'destroy')->name('destroy'); }); + Route::prefix('expert') ->name('expert.') ->middleware(['auth:expert', 'permission:expert-management']) diff --git a/backend/routes/web.php b/backend/routes/web.php index 28784019..b4048d81 100755 --- a/backend/routes/web.php +++ b/backend/routes/web.php @@ -5,6 +5,7 @@ use App\Admin\Controllers\PermissionManagementController; use App\Admin\Controllers\RoleManagementController; use App\Admin\Controllers\UserManagementController; use App\User\Controllers\AuthController; +use App\User\Controllers\GatewayManagementController; use App\User\Controllers\ProfileController; use Illuminate\Support\Facades\Route; @@ -26,3 +27,15 @@ Route::prefix('profile') Route::post('edit', 'edit')->name('edit'); Route::post('change_password', 'changePassword')->name('changePassword'); }); + +Route::prefix('user_gateway') + ->name('userGateway.') + ->middleware(['auth']) + ->controller(GatewayManagementController::class) + ->group(function () { + Route::get('/', 'index')->name('index'); + Route::post('/', 'store')->name('store'); + Route::get('/{gateway}', 'show')->name('show'); + Route::post('/{gateway}', 'update')->name('update'); + Route::delete('/{gateway}', 'destroy')->name('destroy'); + }); -- 2.49.1