HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ip-172-26-0-120 6.17.0-1009-aws #9~24.04.2-Ubuntu SMP Fri Mar 6 23:50:29 UTC 2026 x86_64
User: ubuntu (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /var/www/html/dashboard.orbiwheels.com/app/Http/Controllers/Admin/StaffController.php
<?php

namespace App\Http\Controllers\Admin;

use App\DataTables\Admin\UsersDataTable;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\UserRequest;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Spatie\Permission\Models\Role;

class StaffController extends Controller
{
    public function index(UsersDataTable $dataTable){
        if (!auth()->user()->can('staff.view')) {
            abort(403, 'You do not have permission to view staff.');
        }
        return $dataTable->render('admin.staff.index');
    }


    public function create(Request $request){

        if (!auth()->user()->can('staff.create')) {
            abort(403, 'You do not have permission to create staff.');
        }
        $roles = Role::all();
        return view('admin.staff.create', compact('roles'));
    }


    public function store(UserRequest $request){

        $user = new User();
        $user->first_name = $request->first_name;
        $user->last_name = $request->last_name;
        $user->email = $request->email;
        $user->phone = $request->phone;
        $user->password = Hash::make($request->password);

        $user->save();
        $role = Role::findById($request->role);
        if($role){
            $user->assignRole($role);

        }

        return redirect()->route('admin.staff.index')->with('success', 'User created successfully!');
    }

    public function edit(Request $request, $id){
        if (!auth()->user()->can('staff.edit')) {
            abort(403, 'You do not have permission to edit staff.');
        }
        $roles = Role::all();
        $user = User::find($id);
        if(!isset($user)){
            return redirect()->route('admin.staff.index')->with('error', 'User not found!');
        }
        return view('admin.staff.edit', compact('roles', 'user'));
    }


    public function update(UserRequest $request, $id){

        $user = User::find($id);
        if(!isset($user)){
            return redirect()->route('admin.staff.index')->with('error', 'User not found!');
        }
        $user->first_name = $request->first_name;
        $user->last_name = $request->last_name;
        $user->email = $request->email;
        $user->phone = $request->phone;

        if($request->password && $request->password != ""){
            $user->password = Hash::make($request->password);
        }

        $user->save();
        $role = Role::findById($request->role);
        if($role){
            $user->assignRole($role);

        }

        return redirect()->route('admin.staff.index')->with('success', 'User updated successfully!');
    }


    public function delete(Request $request, $id){

        $user = User::find($id);
        if(!isset($user)){
             return response()->json([
                'status' => false,
                'message' => 'User not found!',
            ]);
        }

        $user->delete();

        return response()->json([
            'status' => true,
            'message' => 'User deleted successfully!',
        ]);
    }
}