Files
new_raffles/Modules/User/app/Services/RoleService.php
2025-07-27 17:40:56 +05:45

61 lines
1.5 KiB
PHP

<?php
namespace Modules\User\Services;
use Illuminate\Support\Facades\DB;
use Spatie\Permission\Models\Role;
class RoleService
{
public function getRoles(Request $request)
{
$query = Role::query();
return $query->get();
}
public function storeRole(array $roleData, array $permissionIds): Role
{
return DB::transaction(function () use ($roleData, $permissionIds) {
$role = Role::create($roleData);
$role->permissions()->attach($permissionIds);
return $role;
});
}
public function getRoleById(int $id)
{
return Role::findOrFail($id);
}
public function updateRole(int $id, array $roleData, array $permissionIds)
{
$role = self::getRoleById($id);
return DB::transaction(function () use ($role, $roleData, $permissionIds) {
$role->update($roleData);
$role->permissions()->sync($permissionIds);
return $role;
});
}
public function deleteRole(int $id)
{
return DB::transaction(function () use ($id) {
$role = self::getRoleById($id);
$role->permissions()->detach();
$role->delete();
return true;
});
}
public static function pluck(callable $query = null)
{
$baseQuery = Role::query();
if (is_callable($query)) {
$query($baseQuery);
}
return $baseQuery->pluck('name', 'id');
}
}