user(); $provinces = Province::orderBy('name')->get(); $selectedProvinceId = old('province_id', $user->province_id); $cities = []; if ($selectedProvinceId) { $cities = City::where('province_id', $selectedProvinceId)->orderBy('name')->get(); } return view('account.edit-profile', compact('title', 'user', 'provinces', 'cities')); } public function update(EditProfileUpdateRequest $request) { $data = $request->validated(); $user = Auth::user(); DB::beginTransaction(); try { $user->update([ 'first_name' => $data['first_name'], 'last_name' => $data['last_name'], 'email' => $data['email'], 'mobile' => $data['mobile'], 'province_id' => $data['province_id'] ?? null, 'city_id' => $data['city_id'] ?? null, ]); if ($request->hasFile('avatar')) { $avatarFile = $request->file('avatar'); $imageName = $user->id . '_' . time() . rand(11111, 99999) . '.' . $avatarFile->extension(); $oldAvatar = UserAvatar::where('user_id', $user->id)->first(); if ($oldAvatar) { $oldFile = File::find($oldAvatar->file_id); deleteFile($oldFile); $oldAvatar->delete(); } $path = $avatarFile->storeAs('avatars', $imageName, 'public'); $file = File::create([ 'name' => $avatarFile->getClientOriginalName(), 'original_name' => $avatarFile->getClientOriginalName(), 'size' => $avatarFile->getSize(), 'extension' => $avatarFile->extension(), 'path' => $path ]); UserAvatar::create([ 'user_id' => $user->id, 'file_id' => $file->id, ]); } DB::commit(); return redirect()->back()->with('success', 'پروفایل با موفقیت ویرایش شد.'); } catch (\Exception $exception) { Log::error($exception); DB::rollBack(); return redirect()->back() ->withInput() ->with('error', 'خطایی در ویرایش پروفایل رخ داد. لطفاً دوباره تلاش کنید.'); } } public function changePassword(EditProfileChangePasswordRequest $request) { $user = Auth::user(); if (!Hash::check($request->current_password, $user->password)) { return back() ->withErrors([ 'current_password' => 'رمز عبور فعلی اشتباه است.', ]); } $user->update([ 'password' => Hash::make($request->new_password), ]); return back()->with('success', 'رمز عبور با موفقیت تغییر کرد.'); } }