Issues (465)

app/Http/Controllers/RoleController.php (2 issues)

1
<?php
2
3
namespace App\Http\Controllers;
4
5
use App\Models\Role;
6
use Illuminate\Http\Request;
7
8
class RoleController extends Controller
9
{
10
    public function index()
11
    {
12
        return auth()->user()->getRoleNames();
13
    }
14
15
    public function getRole(Request $request)
16
    {
17
        $query = Role::query();
18
19
        if ($request->has('searchTerm')) {
20
            $columnsToSearch = ['name'];
21
            $search_term = json_decode($request->searchTerm)->searchTerm;
22
            if (! empty($search_term)) {
23
                $searchQuery = '%'.$search_term.'%';
24
                foreach ($columnsToSearch as $column) {
25
                    $query->orWhere($column, 'LIKE', $searchQuery);
26
                }
27
            }
28
        }
29
30
        if ($request->has('columnFilters')) {
31
            $filters = get_object_vars(json_decode($request->columnFilters));
32
33
            foreach ($filters as $key => $value) {
34
                if (! empty($value)) {
35
                    $query->orWhere($key, 'like', '%'.$value.'%');
36
                }
37
            }
38
        }
39
40
        if ($request->has('sort.0')) {
41
            $sort = json_decode($request->sort[0]);
42
            $query->orderBy($sort->field, $sort->type);
43
        }
44
45
        if ($request->has('perPage')) {
46
            $rows = $query->paginate($request->perPage);
47
        }
48
49
        return $rows;
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $rows does not seem to be defined for all execution paths leading up to this point.
Loading history...
50
    }
51
52
    public function store(Request $request)
53
    {
54
        $request->validate([
55
            'name' => 'required',
56
        ]);
57
58
        $role = Role::create(['name' => $request->name, 'guard_name' => 'web']);
59
        $role->givePermissionTo($request->permissions);
60
    }
61
62
    public function getRolePermission($id)
63
    {
64
        $role = Role::find($id);
65
        $permissions = $role->getAllPermissions()->pluck('id');
66
67
        return ['role' => $role, 'permissions' => $permissions];
68
    }
69
70
    public function update(Request $request, $id)
71
    {
72
        $request->validate([
73
            'name' => 'required',
74
        ]);
75
76
        $role = Role::find($id);
77
        $role->name = $request->name;
0 ignored issues
show
Bug Best Practice introduced by
The property name does not exist on App\Models\Role. Since you implemented __set, consider adding a @property annotation.
Loading history...
78
        $role->syncPermissions($request->permissions);
79
        $role->save();
80
    }
81
}
82