From 9ab439c5d018b8bbe85591d86df23268d20d6e82 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sun, 13 Jul 2025 09:44:22 +0330 Subject: [PATCH] add change avatar --- .../Admin/RoleManagementController.php | 12 ++------ .../Admin/UserManagementController.php | 20 +++---------- app/Http/Controllers/CallController.php | 23 +++++++-------- app/Http/Controllers/ProfileController.php | 17 ++++++++++- app/Http/Requests/Auth/LoginRequest.php | 2 +- app/Http/Requests/Call/UpdateRequest.php | 29 +++++-------------- .../Requests/Profile/ChangeAvatarRequest.php | 28 ++++++++++++++++++ .../{ => Profile}/ChangePasswordRequest.php | 2 +- routes/web.php | 1 + 9 files changed, 72 insertions(+), 62 deletions(-) create mode 100644 app/Http/Requests/Profile/ChangeAvatarRequest.php rename app/Http/Requests/{ => Profile}/ChangePasswordRequest.php (94%) diff --git a/app/Http/Controllers/Admin/RoleManagementController.php b/app/Http/Controllers/Admin/RoleManagementController.php index 8f9fec0..5b2c6f3 100644 --- a/app/Http/Controllers/Admin/RoleManagementController.php +++ b/app/Http/Controllers/Admin/RoleManagementController.php @@ -21,18 +21,12 @@ class RoleManagementController extends Controller */ public function index(Request $request): JsonResponse { - $columns = array('id', 'name', 'name_fa'); - - $allowedFilters = $columns; - $allowedSortings = $columns; - $allowedRelations = array('permissions:id,name_fa'); - $data = DataTableFacade::run( Role::query(), $request, - allowedFilters: $allowedFilters, - allowedSortings: $allowedSortings, - allowedRelations: $allowedRelations + allowedFilters: array('id', 'name', 'name_fa'), + allowedSortings: array('id', 'name', 'name_fa'), + allowedRelations: array('permissions:id,name_fa') ); return response()->json($data); diff --git a/app/Http/Controllers/Admin/UserManagementController.php b/app/Http/Controllers/Admin/UserManagementController.php index e5b4e48..dbb0292 100644 --- a/app/Http/Controllers/Admin/UserManagementController.php +++ b/app/Http/Controllers/Admin/UserManagementController.php @@ -23,22 +23,15 @@ class UserManagementController extends Controller public function index(Request $request): JsonResponse { - $columns = array('id', 'full_name', 'username', 'province_id', 'phone_number', 'national_id', 'telephone_id'); - - $allowedFilters = $columns; - - $allowedSortings = $columns; - - $allowedRelations = array('roles:id,name_fa'); - $query = User::query()->where('username', "<>", "witel"); $data = DataTableFacade::run( $query, $request, - allowedFilters: $allowedFilters, - allowedSortings: $allowedSortings, - allowedRelations: $allowedRelations); + allowedFilters: array('id', 'full_name', 'username', 'province_id', 'phone_number', 'national_id', 'telephone_id'), + allowedSortings: array('id', 'full_name', 'username', 'province_id', 'phone_number', 'national_id', 'telephone_id'), + allowedRelations: array('roles:id,name_fa') + ); return response()->json($data); } @@ -83,10 +76,6 @@ class UserManagementController extends Controller DB::transaction(function () use ($request, $user) { $province = Province::query()->find($request->province_id); - $avatar = $request->avatar ? - $user->storeFile($request->file('avatar'), $request->username) - : null; - $user->update([ 'full_name' => $request->full_name, 'username' => $request->username, @@ -96,7 +85,6 @@ class UserManagementController extends Controller 'phone_number' => $request->phone_number, 'province_id' => $province->id, 'province_fa' => $province->name, - 'avatar' => $avatar, 'email' => $request->email, ]); diff --git a/app/Http/Controllers/CallController.php b/app/Http/Controllers/CallController.php index 58a0b64..315ddf8 100644 --- a/app/Http/Controllers/CallController.php +++ b/app/Http/Controllers/CallController.php @@ -36,7 +36,7 @@ class CallController extends Controller { $call = DB::transaction(function () use ($request) { - $operator = User::query()->where('telephone_id', $request->extension)->first(); + $operator = User::query()->where('telephone_id', '=', $request->extension)->first(); $call = Call::query()->create([ 'telephone_id' => $request->extension, @@ -46,7 +46,7 @@ class CallController extends Controller 'operator_full_name' => $operator->full_name ]); - CallHistory::recordHistory($call, CallEvents::CALL_CREATED); + CallHistory::recordHistory($call, CallEvents::CALL_CREATED->value); return $call; }); @@ -63,17 +63,17 @@ class CallController extends Controller } catch (NotificationServerNotRespondingException $exception) { - CallHistory::recordHistory($call, CallEvents::NOTIFICATION_SERVER_NOT_RESPONDING); + CallHistory::recordHistory($call, CallEvents::NOTIFICATION_SERVER_NOT_RESPONDING->value); throw $exception; } catch (OperatorOfflineException $exception) { - CallHistory::recordHistory($call, CallEvents::OPERATOR_IS_OFFLINE); + CallHistory::recordHistory($call, CallEvents::OPERATOR_IS_OFFLINE->value); throw $exception; } catch (OperatorNotConnectedException $exception) { - CallHistory::recordHistory($call, CallEvents::OPERATOR_COULD_NOT_CONNECT); + CallHistory::recordHistory($call, CallEvents::OPERATOR_COULD_NOT_CONNECT->value); throw $exception; } } @@ -81,11 +81,11 @@ class CallController extends Controller public function update(UpdateRequest $request, Call $call): JsonResponse { DB::transaction(function () use ($request, $call) { - $operator = User::query()->where('telephone_id', $call->telephone_id)->first(); + $operator = User::query()->where('telephone_id', '=', $call->telephone_id)->first(); $category = Category::query()->where([ - ['category_id', $request->category_id], - ['subcategory_id', $request->subcategory_id] + ['category_id', '=', $request->category_id], + ['subcategory_id', '=', $request->subcategory_id] ])->first(); $call->update([ @@ -101,7 +101,7 @@ class CallController extends Controller 'description' => $request->description, ]); - $event_id = CallEvents::OPERATOR_STORED_CALL_DATA; + $event_id = CallEvents::OPERATOR_STORED_CALL_DATA->value; $event_name = Event::query()->find($event_id)->first()->name; @@ -123,9 +123,8 @@ class CallController extends Controller $size = $request->size ?? config('global_variables.MAX_RECORDS_COUNT'); $calls_data = Call::query() - ->when($phone_number, function ($query) use ($phone_number) { - return $query->where('caller_phone_number', $phone_number); - })->orderBy('created_at', 'DESC') + ->when($phone_number, fn($query, $phone_number) => $query->where('phone_number', '=', $phone_number)) + ->orderBy('created_at', 'DESC') ->limit($size) ->get(); diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index f052b03..414652b 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -2,7 +2,9 @@ namespace App\Http\Controllers; -use App\Http\Requests\ChangePasswordRequest; +use App\Facades\File\FileFacade; +use App\Http\Requests\Profile\ChangeAvatarRequest; +use App\Http\Requests\Profile\ChangePasswordRequest; use App\Http\Resources\Admin\UserResource; use App\Http\Traits\ApiResponse; use App\Models\User; @@ -31,6 +33,19 @@ class ProfileController extends Controller return $this->successResponse(); } + public function changeAvatar(ChangeAvatarRequest $request): JsonResponse + { + $user = auth()->user(); + if ($user->avatar){ + FileFacade::delete($user->avatar, true); + } + $user->update([ + 'avatar' => FileFacade::save($request->file('avatar'), 'users/avatars/' . $request->username) + ]); + + return $this->successResponse(); + } + public function online(Request $request): JsonResponse { User::query()->where('telephone_id', '=', $request->telephone_id)->update([ diff --git a/app/Http/Requests/Auth/LoginRequest.php b/app/Http/Requests/Auth/LoginRequest.php index b1de752..3c57153 100644 --- a/app/Http/Requests/Auth/LoginRequest.php +++ b/app/Http/Requests/Auth/LoginRequest.php @@ -25,7 +25,7 @@ class LoginRequest extends FormRequest public function rules(): array { return [ - 'username' => 'required|exists:users,username', + 'username' => 'required|exists:users,username', 'password' => 'required|string', 'telephone_id' => 'required|string' ]; diff --git a/app/Http/Requests/Call/UpdateRequest.php b/app/Http/Requests/Call/UpdateRequest.php index bb3a13c..25cfd37 100644 --- a/app/Http/Requests/Call/UpdateRequest.php +++ b/app/Http/Requests/Call/UpdateRequest.php @@ -14,12 +14,7 @@ class UpdateRequest extends FormRequest */ public function authorize(): bool { - $operator_telephone_id = auth()->user()->telephone_id; - - if ($operator_telephone_id == $this->call->telephone_id) { - return true; - } - return false; + return auth()->user()->telephone_id == $this->call->telephone_id; } /** @@ -40,7 +35,12 @@ class UpdateRequest extends FormRequest { return [ function (Validator $validator) { - if ($this->somethingElseIsInvalid()) { + $condition = Category::query()->where([ + ['category_id', '=', $this->category_id], + ['subcategory_id', '=', $this->subcategory_id] + ])->exists(); + + if (!$condition) { $validator->errors()->add( 'category', __('messages.combination_of_category_and_subcategory_does_not_exist') @@ -49,19 +49,4 @@ class UpdateRequest extends FormRequest } ]; } - - private function somethingElseIsInvalid(): bool - { - $category_id = $this->category_id; - $subcategory_id = $this->subcategory_id; - - if ($category_id && $subcategory_id) { - return !Category::query()->where([ - ['category_id', $category_id], - ['subcategory_id', $subcategory_id] - ])->exists(); - } - - return false; - } } diff --git a/app/Http/Requests/Profile/ChangeAvatarRequest.php b/app/Http/Requests/Profile/ChangeAvatarRequest.php new file mode 100644 index 0000000..0736c39 --- /dev/null +++ b/app/Http/Requests/Profile/ChangeAvatarRequest.php @@ -0,0 +1,28 @@ +|string> + */ + public function rules(): array + { + return [ + 'avatar' => 'required|image|mimes:jpeg,png,jpg,gif|max:2048', + ]; + } +} diff --git a/app/Http/Requests/ChangePasswordRequest.php b/app/Http/Requests/Profile/ChangePasswordRequest.php similarity index 94% rename from app/Http/Requests/ChangePasswordRequest.php rename to app/Http/Requests/Profile/ChangePasswordRequest.php index da65623..aa89bbe 100644 --- a/app/Http/Requests/ChangePasswordRequest.php +++ b/app/Http/Requests/Profile/ChangePasswordRequest.php @@ -1,6 +1,6 @@ group(function () { ->group(function () { Route::get('/info', 'info')->name('info'); Route::post('/change_password', 'changePassword')->name('changePassword'); + Route::post('/change_avatar', 'changeAvatar')->name('changeAvatar'); Route::get('/permissions', 'permissions')->name('permissions'); });