Viewing file: StaffController.php (7.21 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Spatie\Permission\Models\Role; use App\Models\User; use App\Models\AdminActivity; use Illuminate\Support\Facades\DB;
class StaffController extends Controller { public function index() { return view('admin.staff.index'); }
public function getAll(Request $request) { $auth = auth()->user();
$customers = User::where('owner_id', $auth->id)->where('type', 'staff')->where('added_by', $auth->type)->get(); return datatables()->of($customers) ->addColumn('profile', function ($q) { $name='<h6>'.$q->name.'</h6>'; $email='<h6>'.$q->email.'</h6>'; return '<div>'.$name.$email.'</div>'; }) ->addColumn('role', function ($q) { $role = Role::where('id',$q->role_id)->first(); if(isset($role) && $role->name){ return '<div>'.$role->name.'</div>'; } }) ->addColumn('status', function ($q) { if($q->status=='active'){ $status= '<strong class="text-success"> '.ucfirst($q->status).' </strong>'; }else{ $status= '<strong class="text-danger"> '.ucfirst($q->status).' </strong>'; } return $status; })
->addColumn('action', function ($q) { $btn='<div class="btn-group"> <button type="button" class="btn btn-success" data-toggle="dropdown" aria-expanded="false"> <i class="fas fa-ellipsis-v"></i> </button> <div class="dropdown-menu" role="menu" style=""> <a class="dropdown-item" href="'.route('admin.staff.edit', [$q->id]).'">Edit</a> <button class="dropdown-item" data-message="You will be logged in as staff?" data-action='.route('admin.staff.loginas').' data-input={"id":'.$q->id.'} data-toggle="modal" data-target="#modal-confirm">Login As</button> </div> </div>'; return $btn; }) ->rawColumns(['action', 'unit','status','profile','plan_details','role']) ->toJson(); } public function create() { $userfirst = User::first(); $data['roles'] = Role::where('admin_id',$userfirst->id)->get();
return view('admin.staff.create',$data); }
public function store(Request $request){ $request->validate([ 'name' => 'required', 'email' => 'required|unique:users', 'password' => 'required', 'role_id' => 'required' ]);
DB::beginTransaction(); try{ $auth = auth()->user(); $role = Role::findOrFail($request->role_id); $user=new user(); $user->name=$request->name; $user->email=$request->email; $user->password=bcrypt($request->password); $user->status='active'; $user->added_by=$auth->type; $user->email_verified_at=now(); $user->type= 'staff'; $user->owner_id= $auth->id; $user->profile_picture='default_profile.png '; $user->role_id= $request->role_id; $user->save(); $user->assignRole($role);
if ($auth->type == 'staff') { $hasPermisstion = $auth->hasPermissionTo('manage_user'); if ($hasPermisstion) { $adminActivity = new AdminActivity(); $adminActivity->admin_id = $auth->id; $adminActivity->role_id = $auth->role_id; $adminActivity->name = $auth->name; $adminActivity->model = 'Staff'; $adminActivity->model_id = $user->id; $adminActivity->action_type = 'create';
$adminActivity->details = 'Creating a new staff'; $adminActivity->save(); } } DB::commit(); return redirect()->route('admin.staff.index')->with('success', trans('admin.staff_successfully_created'));
} catch(\Exception $ex){ dd($ex); DB::rollBack(); return redirect()->back()->withErrors(['failed'=>$ex->getMessage()]); }
}
public function edit(User $staff){ $data['staff'] = $staff; $userfirst = User::first(); $data['roles'] = Role::where('admin_id', $userfirst->id)->get(); return view('admin.staff.edit',$data); }
public function update(User $staff, Request $request){ $request->validate([ 'name' => 'required', 'role_id' => 'required', 'email' => 'required|unique:users,email,' . $staff->id, ]); if (!$request->password){ unset($request['password']); }else{ $request['password'] = bcrypt($request->password); } $auth = auth()->user();
//update the model $staff->update($request->all());
$role = Role::findOrFail($request->role_id); $staff->roles()->detach(); $staff->assignRole($role);
if ($auth->type == 'staff') { $hasPermisstion = $auth->hasPermissionTo('manage_user'); if ($hasPermisstion) { $adminActivity = new AdminActivity(); $adminActivity->admin_id = $auth->id; $adminActivity->role_id = $auth->role_id; $adminActivity->name = $auth->name; $adminActivity->model = 'Staff'; $adminActivity->model_id = $staff->id; $adminActivity->action_type = 'update';
$adminActivity->details = 'updating a new staff'; $adminActivity->save(); } }
return redirect()->route('admin.staff.index')->with('success', trans('admin.staff_successfully_updated')); }
public function loginAs(Request $request){
if(!$request->id) abort(404);
$auth = auth()->user();
if ($auth->type == 'staff') { $hasPermisstion = $auth->hasPermissionTo('manage_user'); if ($hasPermisstion) { $adminActivity = new AdminActivity(); $adminActivity->admin_id = $auth->id; $adminActivity->role_id = $auth->role_id; $adminActivity->name = $auth->name; $adminActivity->model = 'Staff'; $adminActivity->model_id = $request->id; $adminActivity->action_type = 'loginAs';
$adminActivity->details = 'loginAs staff'; $adminActivity->save(); } }
auth()->loginUsingId($request->id);
return redirect()->route('admin.dashboard')->with('success',trans('admin.logged_as_staff')); } }
|