git add .

git commit "implement user management with search sort permissions and safe delete"
This commit is contained in:
2026-08-18 15:18:57 +03:30
parent bff0c7ea4d
commit 0722cf3120
10 changed files with 564 additions and 17 deletions
+10 -1
View File
@@ -90,8 +90,17 @@ class Admin extends User
$query->orderBy('created_at', 'desc'),
};
} public function roles()
}
public function roles()
{
return $this->belongsToMany(Role::class, 'admin_roles');
}
public function hasPermission($permission)
{
return $this->roles()
->whereHas('permissions', function ($query) use ($permission) {
$query->where('slug', $permission);
})
->exists();
}
}
+43 -1
View File
@@ -7,6 +7,8 @@
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Attributes\Scope;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Foundation\Auth\User as Authenticatable;
@@ -70,8 +72,44 @@ class User extends Authenticatable
'city_id',
'status'
];
#[Scope]
protected function applySearch(Builder $query): void
{
$request = request();
public function city()
if ($request->filled('keyword')) {
$keyword = $request->input('keyword');
$query->whereAny([
'first_name',
'last_name',
'mobile',
'username',
], 'LIKE', "%$keyword%");
}
}
#[Scope]
protected function applySort(Builder $query): void
{
$sort = request('sort');
match ($sort) {
'first_name_asc' =>
$query->orderBy('first_name', 'asc'),
'first_name_desc' =>
$query->orderBy('first_name', 'desc'),
'newest' =>
$query->orderBy('created_at', 'desc'),
default =>
$query->orderBy('created_at', 'desc'),
};
}
public function city()
{
return $this->belongsTo(City::class);
}
@@ -89,4 +127,8 @@ class User extends Authenticatable
{
return $this->hasMany(Favorite::class);
}
public function reservations()
{
return $this->hasMany(Reservation::class);
}
}