90 lines
2.8 KiB
PHP
90 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace App\Services;
|
|
|
|
use App\Enums\UserStatus;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
|
use App\Models\Task;
|
|
use Carbon\Carbon;
|
|
// use App\Helpers\GeneralHelper;
|
|
use App\Models\User;
|
|
use Spatie\Permission\Models\Role;
|
|
use Illuminate\Support\Facades\Hash;
|
|
|
|
class RoleService
|
|
{
|
|
protected $helper;
|
|
public function __construct()
|
|
{
|
|
// $this->helper = new GeneralHelper();
|
|
}
|
|
|
|
public function getAllRoles()
|
|
{
|
|
try {
|
|
$roles = Role::all();
|
|
return ['success' => true, 'message' => 'Roles fetched successfully', 'data' => $roles];
|
|
} catch (\Exception $e) {
|
|
return ['success' => false, 'message' => $e->getMessage(), 'error' => $e->getMessage()];
|
|
}
|
|
}
|
|
|
|
public function createRole($data)
|
|
{
|
|
DB::beginTransaction();
|
|
try {
|
|
$role = Role::create([
|
|
'name' => $data->name,
|
|
'guard_name' => 'web'
|
|
]);
|
|
foreach ($data->permissions as $permissions) {
|
|
foreach ($permissions as $permission) {
|
|
if ($permission['checked']) {
|
|
$role->givePermissionTo($permission['name']);
|
|
}
|
|
}
|
|
}
|
|
DB::commit();
|
|
return ['success' => true, 'message' => 'Role created successfully', 'data' => $role];
|
|
} catch (\Exception $e) {
|
|
DB::rollback();
|
|
return ['success' => false, 'message' => $e->getMessage(), 'error' => $e->getMessage()];
|
|
}
|
|
}
|
|
|
|
public function getRoleById($id)
|
|
{
|
|
try {
|
|
return ['success' => true, 'message' => 'User created successfully', 'data' => []];
|
|
} catch (\Exception $e) {
|
|
return ['success' => false, 'message' => $e->getMessage(), 'error' => $e->getMessage()];
|
|
}
|
|
}
|
|
|
|
public function updateRoleById($id, $data)
|
|
{
|
|
DB::beginTransaction();
|
|
try {
|
|
$role = Role::findOrFail($id);
|
|
$role->update([
|
|
'name' => $data->name,
|
|
]);
|
|
foreach ($data->permissions as $permissions) {
|
|
foreach ($permissions as $permission) {
|
|
if ($permission['checked']) {
|
|
$role->givePermissionTo($permission['name']);
|
|
} else {
|
|
$role->revokePermissionTo($permission['name']);
|
|
}
|
|
}
|
|
}
|
|
DB::commit();
|
|
return ['success' => true, 'message' => 'Role updated successfully', 'data' => $role];
|
|
} catch (\Exception $e) {
|
|
DB::rollback();
|
|
return ['success' => false, 'message' => $e->getMessage(), 'error' => $e->getMessage()];
|
|
}
|
|
}
|
|
}
|