inspiren-sem-tool/app/Services/RoleService.php
brian-inspiren 221d3f8173
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
feat: sem codebase
2026-05-21 11:28:03 +08:00

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()];
}
}
}