diff --git a/laravel/app/Http/Controllers/Admin/UserManagementController.php b/laravel/app/Http/Controllers/Admin/UserManagementController.php index 920cc2b..5d70f97 100644 --- a/laravel/app/Http/Controllers/Admin/UserManagementController.php +++ b/laravel/app/Http/Controllers/Admin/UserManagementController.php @@ -5,16 +5,14 @@ namespace App\Http\Controllers\Admin; use App\Facades\DataTable\DataTableFacade; use App\Facades\File\FileFacade; use App\Http\Controllers\Controller; -use App\Http\Requests\Auth\LoginRequest; use App\Http\Requests\Admin\StoreRequest; use App\Http\Requests\Admin\UpdateRequest; -use App\Http\Resource\Admin\UserResource; +use App\Http\Resources\Admin\UserResource; use App\Http\Traits\ApiResponse; use App\Models\Province; use App\Models\User; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; @@ -87,11 +85,9 @@ class UserManagementController extends Controller $province = Province::query()->find($request->province_id); $avatar = $request->avatar ? - FileFacade::save($request->file('avatar'), 'users/avatars/' . $request->username) + $user->storeFile($request->file('avatar'), $request->username) : null; - $email = $request->email ?? null; - $user->update([ 'full_name' => $request->full_name, 'username' => $request->username, @@ -102,7 +98,7 @@ class UserManagementController extends Controller 'province_id' => $province->id, 'province_fa' => $province->name, 'avatar' => $avatar, - 'email' => $email, + 'email' => $request->email, 'telephone_id' => $request->telephone_id ]); @@ -120,14 +116,9 @@ class UserManagementController extends Controller } $user->syncRoles([]); - $user->delete(); }); return $this->successResponse(); } - - - - } diff --git a/laravel/app/Http/Controllers/ProfileController.php b/laravel/app/Http/Controllers/ProfileController.php index c657de4..882e4c6 100644 --- a/laravel/app/Http/Controllers/ProfileController.php +++ b/laravel/app/Http/Controllers/ProfileController.php @@ -3,7 +3,7 @@ namespace App\Http\Controllers; use App\Http\Requests\ChangePasswordRequest; -use App\Http\Resource\Admin\UserResource; +use App\Http\Resources\Admin\UserResource; use App\Http\Traits\ApiResponse; use Illuminate\Http\JsonResponse; use Illuminate\Support\Facades\Hash; @@ -20,7 +20,7 @@ class ProfileController extends Controller public function changePassword(ChangePasswordRequest $request): JsonResponse { $user = auth()->user(); - if (! Hash::check($request->curent_pasword, $user->passwored)){ + if (! Hash::check($request->current_password, $user->passwored)){ return $this->errorResponse(__('messages.wrong_current_password')); } $user->update([ @@ -29,5 +29,4 @@ class ProfileController extends Controller return $this->successResponse(); } - } diff --git a/laravel/app/Http/Resource/Admin/UserResource.php b/laravel/app/Http/Resources/Admin/UserResource.php similarity index 93% rename from laravel/app/Http/Resource/Admin/UserResource.php rename to laravel/app/Http/Resources/Admin/UserResource.php index 2689feb..9b97001 100644 --- a/laravel/app/Http/Resource/Admin/UserResource.php +++ b/laravel/app/Http/Resources/Admin/UserResource.php @@ -1,6 +1,6 @@ */ public function toArray(Request $request): array diff --git a/laravel/app/Models/User.php b/laravel/app/Models/User.php index 0bdf952..75dc3ad 100644 --- a/laravel/app/Models/User.php +++ b/laravel/app/Models/User.php @@ -3,6 +3,7 @@ namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; +use App\Facades\File\FileFacade; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; @@ -14,5 +15,14 @@ class User extends Authenticatable protected $guarded = []; - protected $hidden = ['password',]; + protected $hidden = ['password']; + + public function storeFile($file, $name) + { + if ($this->avatar) { + FileFacade::delete($this->avatar, true); + } + + return FileFacade::save($file, 'users/avatars/' . $name); + } } diff --git a/laravel/app/Services/Notification/Exceptions/NotificationServerNotRespondingException.php b/laravel/app/Services/Notification/Exceptions/NotificationServerNotRespondingException.php new file mode 100644 index 0000000..45117c8 --- /dev/null +++ b/laravel/app/Services/Notification/Exceptions/NotificationServerNotRespondingException.php @@ -0,0 +1,37 @@ +message = $message; + + parent::__construct($message, $code, $previous); + } + + /** + * Report the exception. + */ + public function report(): void + { + // ... + } + + /** + * Render the exception into an HTTP response. + */ + public function render(): JsonResponse + { + return response()->json([ + 'message' => $this->message + ], $this->code); + } +} diff --git a/laravel/app/Services/Notification/Exceptions/OperatorNotConnectedException.php b/laravel/app/Services/Notification/Exceptions/OperatorNotConnectedException.php new file mode 100644 index 0000000..39808d8 --- /dev/null +++ b/laravel/app/Services/Notification/Exceptions/OperatorNotConnectedException.php @@ -0,0 +1,40 @@ +message = $message; + + parent::__construct($message, $code, $previous); + } + + /** + * Report the exception. + */ + public function report(): void + { + Log::channel('notification_service') + ->error(OperatorNotConnectedException::class,[__('messages.operator_could_not_connect')] + ); + } + + /** + * Render the exception into an HTTP response. + */ + public function render(): JsonResponse + { + return response()->json([ + 'message' => $this->message + ], $this->code); + } +} diff --git a/laravel/app/Services/Notification/Exceptions/OperatorOfflineException.php b/laravel/app/Services/Notification/Exceptions/OperatorOfflineException.php new file mode 100644 index 0000000..6e4e1a3 --- /dev/null +++ b/laravel/app/Services/Notification/Exceptions/OperatorOfflineException.php @@ -0,0 +1,40 @@ +message = $message; + + parent::__construct($message, $code, $previous); + } + + /** + * Report the exception. + */ + public function report(): void + { + Log::channel('notification_service') + ->error(OperatorOfflineException::class, [__('messages.the_operator_is_offline')] + ); + } + + /** + * Render the exception into an HTTP response. + */ + public function render(): JsonResponse + { + return response()->json([ + 'message' => $this->message + ], $this->code); + } +} diff --git a/laravel/app/Services/Notification/NotificationService.php b/laravel/app/Services/Notification/NotificationService.php new file mode 100644 index 0000000..88b0f6d --- /dev/null +++ b/laravel/app/Services/Notification/NotificationService.php @@ -0,0 +1,47 @@ +post(config('global_variables.NOTIFICATION_SERVER_URL'), $data) + ->throwIfServerError(); + + $response_status = json_decode($response->body())->status; + + throw_if($response_status == 1, + new OperatorOfflineException(__('messages.the_operator_is_offline')) + ); + + throw_if($response_status == 2, + new OperatorNotConnectedException(__('messages.operator_could_not_connect')) + ); + } + catch (RequestException $exception) + { + Log::channel('notification_service') + ->error(RequestException::class, [ + $exception->getMessage(), + NotificationServerNotRespondingException::class, + __('messages.notification_server_is_down') + ]); + + throw_if($exception->response->serverError(), + new NotificationServerNotRespondingException(__('messages.notification_server_is_down')) + ); + } + } +}