diff --git a/app/Http/Controllers/admin/UserController.php b/app/Http/Controllers/admin/UserController.php index c4174cd..b3e4eb4 100644 --- a/app/Http/Controllers/admin/UserController.php +++ b/app/Http/Controllers/admin/UserController.php @@ -1,45 +1,251 @@ paginate(15); + // چک دسترسی: فقط مدیرانی که مجوز «مشاهده کاربران» دارند + abort_unless(auth('admin')->user()->canManageUsers('view'), 403); + + $query = User::query(); + + // جستجوی کلی: نام / ایمیل / موبایل + if ($request->filled('search')) { + $query->where(function ($q) use ($request) { + $q->where('name', 'like', '%' . $request->search . '%') + ->orWhere('email', 'like', '%' . $request->search . '%') + ->orWhere('mobile', 'like', '%' . $request->search . '%'); + }); + } + + // فیلتر وضعیت + if ($request->filled('status')) { + $query->where('status', $request->status); + } + + // فیلتر تاریخ عضویت + if ($request->filled('from_date')) { + $query->whereDate('created_at', '>=', $request->from_date); + } + if ($request->filled('to_date')) { + $query->whereDate('created_at', '<=', $request->to_date); + } + + // withQueryString => فیلترها هنگام صفحه‌بندی حفظ می‌شوند + $users = $query->latest()->paginate(10)->withQueryString(); return view('admin.users.index', compact('users')); } - public function show(User $user) - { - return view('admin.users.show', compact('user')); - } - public function edit(User $user) { + abort_unless(auth('admin')->user()->canManageUsers('edit'), 403); + return view('admin.users.edit', compact('user')); } - public function update(UserStoreRequest $request, User $user) + public function update(UserUpdateRequest $request, User $user) { - $user->update($request->validated()); + abort_unless(auth('admin')->user()->canManageUsers('edit'), 403); - return redirect() - ->route('admin.users.index') - ->with('success', 'کاربر با موفقیت بروزرسانی شد.'); + $data = $request->validated(); + + // اگر رمز خالی بود تغییرش نده (گزینه‌ای) + unset($data['password']); + + $user->update($data); + + return redirect()->route('admin.users.index') + ->with('success', 'اطلاعات کاربر با موفقیت ویرایش شد.'); } public function destroy(User $user) { + abort_unless(auth('admin')->user()->canManageUsers('delete'), 403); + $user->delete(); - return redirect() - ->route('admin.users.index') + return redirect()->route('admin.users.index') ->with('success', 'کاربر با موفقیت حذف شد.'); } + + public function changePassword(User $user) + { + abort_unless(auth('admin')->user()->canManageUsers('password'), 403); + + return view('admin.users.change-password', compact('user')); + } + + public function updatePassword(UserPasswordUpdateRequest $request, User $user) + { + abort_unless(auth('admin')->user()->canManageUsers('password'), 403); + + $user->update([ + 'password' => Hash::make($request->password), + ]); + + return redirect()->route('admin.users.index') + ->with('success', 'رمز عبور کاربر با موفقیت تغییر کرد.'); + } } + +// +// +//namespace App\Http\Controllers\Admin; +// +//use App\Http\Controllers\Controller; +//use App\Http\Requests\UserPasswordUpdateRequest; +//use Illuminate\Foundation\Auth\Access\AuthorizesRequests; +//use App\Http\Requests\UserUpdateRequest; +//use App\Models\User; +//use Illuminate\Http\Request; +//use Illuminate\Support\Facades\Hash; +// +//class UserController extends Controller +//{ +// +// /** +// * لیست + جستجوی چندپارامتری +// */ +// public function index(Request $request) +// { +// // چک دسترسی: فقط مدیرانی که مجوز «مشاهده کاربران» دارند +// $this->authorize('users.view'); +// +// $query = User::query(); +// +// // جستجوی کلی: نام / ایمیل / موبایل +// if ($request->filled('search')) { +// $query->where(function ($q) use ($request) { +// $q->where('name', 'like', '%' . $request->search . '%') +// ->orWhere('email', 'like', '%' . $request->search . '%') +// ->orWhere('mobile', 'like', '%' . $request->search . '%'); +// }); +// } +// +// // فیلتر وضعیت +// if ($request->filled('status')) { +// $query->where('status', $request->status); +// } +// +// // فیلتر تاریخ عضویت +// if ($request->filled('from_date')) { +// $query->whereDate('created_at', '>=', $request->from_date); +// } +// if ($request->filled('to_date')) { +// $query->whereDate('created_at', '<=', $request->to_date); +// } +// +// // withQueryString => فیلترها هنگام صفحه‌بندی حفظ می‌شوند +// $users = $query->latest()->paginate(10)->withQueryString(); +// +// return view('admin.users.index', compact('users')); +// } +// +// +// public function edit(User $user) +// { +// $this->authorize('users.edit'); +// +// return view('admin.users.edit', compact('user')); +// } +// +// public function update(UserUpdateRequest $request, User $user) +// { +// $data = $request->validated(); +// +// // اگر رمز خالی بود تغییرش نده (گزینه‌ای) +// unset($data['password']); +// +// $user->update($data); +// +// return redirect()->route('admin.users.index') +// ->with('success', 'اطلاعات کاربر با موفقیت ویرایش شد.'); +// } +// +// +// public function destroy(User $user) +// { +// $this->authorize('users.delete'); +// +// $user->delete(); +// +// return redirect()->route('admin.users.index') +// ->with('success', 'کاربر با موفقیت حذف شد.'); +// } +// +// public function changePassword(User $user) +// { +// $this->authorize('users.change-password'); +// +// return view('admin.users.change-password', compact('user')); +// } +// +// public function updatePassword(UserPasswordUpdateRequest $request, User $user) +// { +// $user->update([ +// 'password' => Hash::make($request->password), +// ]); +// +// return redirect()->route('admin.users.index') +// ->with('success', 'رمز عبور کاربر با موفقیت تغییر کرد.'); +// } +//} +// +//// +////namespace App\Http\Controllers\Admin; +//// +////use App\Http\Controllers\Controller; +////use App\Http\Requests\UserStoreRequest; +////use App\Models\User; +//// +////class UserController extends Controller +////{ +//// public function index() +//// { +//// $users = User::latest()->paginate(15); +//// +//// return view('admin.users.index', compact('users')); +//// } +//// +//// public function show(User $user) +//// { +//// return view('admin.users.show', compact('user')); +//// } +//// +//// public function edit(User $user) +//// { +//// return view('admin.users.edit', compact('user')); +//// } +//// +//// public function update(UserStoreRequest $request, User $user) +//// { +//// $user->update($request->validated()); +//// +//// return redirect() +//// ->route('admin.users.index') +//// ->with('success', 'کاربر با موفقیت بروزرسانی شد.'); +//// } +//// +//// public function destroy(User $user) +//// { +//// $user->delete(); +//// +//// return redirect() +//// ->route('admin.users.index') +//// ->with('success', 'کاربر با موفقیت حذف شد.'); +//// } +////} diff --git a/resources/views/admin/travel_types/create.blade.php b/resources/views/admin/travel_types/create.blade.php index f01dcdd..a70e316 100644 --- a/resources/views/admin/travel_types/create.blade.php +++ b/resources/views/admin/travel_types/create.blade.php @@ -1,3 +1,55 @@ -
- -
+@extends('admin.layouts.app') + +@section('title', 'ثبت نوع سفر جدید') + +@section('content') +
+
ثبت نوع سفر جدید
+
+
+ @csrf + +
+ + + @error('title') +
{{ $message }}
@enderror +
+ +
+ + + @error('slug') +
{{ $message }}
@enderror +
+ +{{--
--}} +{{-- --}} +{{-- --}} +{{--
--}} + + +
+ status ?? 1) == 1 ? 'checked' : '' }} + > + +
+ + + + بازگشت +
+
+
+@endsection diff --git a/resources/views/admin/travel_types/edit.blade.php b/resources/views/admin/travel_types/edit.blade.php index c510322..008f9c0 100644 --- a/resources/views/admin/travel_types/edit.blade.php +++ b/resources/views/admin/travel_types/edit.blade.php @@ -1,3 +1,57 @@ -
- -
+@extends('admin.layouts.app') + +@section('title', 'ویرایش نوع سفر') + +@section('content') +
+
ویرایش: {{ $travelType->title }}
+
+
+ @csrf + @method('PUT') + +
+ + + @error('title') +
{{ $message }}
@enderror +
+ +
+ + + @error('slug') +
{{ $message }}
@enderror +
+ + {{--
--}} + {{-- status)>--}} + {{-- --}} + {{--
--}} + + +
+ status ?? 1) == 1 ? 'checked' : '' }} + > + +
+ + + + بازگشت +
+
+
+@endsection + diff --git a/resources/views/admin/travel_types/index.blade.php b/resources/views/admin/travel_types/index.blade.php index f01dcdd..3910207 100644 --- a/resources/views/admin/travel_types/index.blade.php +++ b/resources/views/admin/travel_types/index.blade.php @@ -1,3 +1,83 @@ -
- -
+@extends('admin.layouts.app') + +@section('title', 'انواع سفر') + +@section('content') +
+
+
انواع سفر
+ + نوع سفر جدید +
+ +
+ {{-- جستجو --}} +
+
+ +
+
+ +
+
+ + پاک‌کردن +
+
+ +
+ + + + + + + + + + + + + @forelse($travelTypes as $type) + + + + + + + + + + @empty + + + + @endforelse + +
#عنواناسلاگوضعیتتاریخ ثبتعملیات
{{ $loop->iteration }}{{ $type->title }}{{ $type->slug }} + @if($type->status) + فعال + @else + غیرفعال + @endif + {{ $type->created_at ? $type->created_at->toJalali()->format('Y/m/d H:i') : '-' }} + ویرایش +
+ @csrf + @method('DELETE') + +
+
موردی یافت نشد.
+
+ + {{ $travelTypes->links() }} +
+
+@endsection +