HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/be.naniguide.com/app/Http/Controllers/Refactor/Admin/RoleController.php
<?php

namespace App\Http\Controllers\Refactor\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Model\Role;

class RoleController extends Controller
{
    public function index(Request $request)
    {
        $totalGlobal = Role::global()->count();
        $activeGlobal = Role::global()->active()->count();

        $stats = [
            'total' => $totalGlobal,
            'active' => $activeGlobal,
            'inactive' => $totalGlobal - $activeGlobal,
        ];

        return view('refactor.pages.admin.roles.index', compact('stats'));
    }

    public function listing(Request $request)
    {
        $query = Role::global()->search($request->keyword);

        if ($request->status && in_array($request->status, [Role::STATUS_ACTIVE, Role::STATUS_INACTIVE])) {
            $query->where('status', $request->status);
        }

        $items = $query->orderBy($request->sort_order ?? 'created_at', $request->sort_direction ?? 'desc')
            ->paginate($request->per_page ?? 15);

        return view('refactor.pages.admin.roles._list', compact('items'));
    }

    public function create(Request $request)
    {
        $role = Role::newGlobalRole();

        return view('refactor.pages.admin.roles.form', [
            'role' => $role,
            'mode' => 'create',
        ]);
    }

    public function store(Request $request)
    {
        $role = Role::newGlobalRole();

        $errors = $role->saveRole(
            $request->name,
            $request->description,
            $request->permissions ?? []
        );

        if (!$errors->isEmpty()) {
            return response()->view('refactor.pages.admin.roles.form', [
                'role' => $role,
                'mode' => 'create',
                'errors' => $errors,
            ], 400);
        }

        return redirect()->route('refactor.admin.roles.index')
            ->with('alert-success', trans('refactor/admin_roles.flash.created'));
    }

    public function edit(Request $request, $uid)
    {
        $role = Role::findByUid($uid);

        if (!$role) {
            return redirect()->route('refactor.admin.roles.index');
        }

        return view('refactor.pages.admin.roles.form', [
            'role' => $role,
            'mode' => 'edit',
        ]);
    }

    public function update(Request $request, $uid)
    {
        $role = Role::findByUid($uid);

        if (!$role) {
            return redirect()->route('refactor.admin.roles.index');
        }

        if (!$request->user()->admin->can('update', $role)) {
            return $this->notAuthorized();
        }

        $errors = $role->saveRole(
            $request->name,
            $request->description,
            $request->permissions ?? []
        );

        if (!$errors->isEmpty()) {
            return response()->view('refactor.pages.admin.roles.form', [
                'role' => $role,
                'mode' => 'edit',
                'errors' => $errors,
            ], 400);
        }

        return redirect()->route('refactor.admin.roles.index')
            ->with('alert-success', trans('refactor/admin_roles.flash.updated'));
    }

    public function delete(Request $request)
    {
        $roles = Role::whereIn(
            'uid',
            is_array($request->uids) ? $request->uids : explode(',', $request->uids)
        );

        $total = $roles->count();
        $deleted = 0;
        foreach ($roles->get() as $role) {
            if ($request->user()->admin->can('delete', $role)) {
                $role->delete();
                $deleted++;
            }
        }

        return response()->json([
            'status' => 'success',
            'message' => trans('refactor/admin_roles.flash.deleted'),
        ]);
    }

    public function enable(Request $request)
    {
        $roles = Role::whereIn(
            'uid',
            is_array($request->uids) ? $request->uids : explode(',', $request->uids)
        );

        foreach ($roles->get() as $role) {
            if ($request->user()->admin->can('enable', $role)) {
                $role->enable();
            }
        }

        return response()->json([
            'status' => 'success',
            'message' => trans('refactor/admin_roles.flash.enabled'),
        ]);
    }

    public function disable(Request $request)
    {
        $roles = Role::whereIn(
            'uid',
            is_array($request->uids) ? $request->uids : explode(',', $request->uids)
        );

        foreach ($roles->get() as $role) {
            if ($request->user()->admin->can('disable', $role)) {
                $role->disable();
            }
        }

        return response()->json([
            'status' => 'success',
            'message' => trans('refactor/admin_roles.flash.disabled'),
        ]);
    }
}