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!',
]);
}
}