/** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $staff_team = ''; $leader = ''; $pie_leader = ''; $department = ''; $department = Department::leftJoin('staff', 'department.id', '=', 'staff.department_id')->join('level', 'staff.level_id', '=', 'level.id')->join('role', 'level.role_id', '=', 'role.id')->select(DB::raw('department.name as name_dep,role.name,count(*) as num'))->groupBy('department.name', 'role.name')->get()->toArray(); $num_staff = $department; $pie = array(); foreach ($department as $value) { $pie[$value['name_dep']][] = array($value['name'], (int) $value['num']); } // is Leader if (Gate::allows('check-leader')) { $department = Department::leftJoin('staff', 'department.id', '=', 'staff.department_id')->join('level', 'staff.level_id', '=', 'level.id')->join('role', 'level.role_id', '=', 'role.id')->select(DB::raw('department.name as name_dep,role.name,count(*) as num'))->where(['department.id' => Auth::user()->department_id, 'department.active' => 1])->groupBy('department.name', 'role.name')->get()->toArray(); $num_staff = $department; $pie = array(); foreach ($department as $value) { $pie[$value['name_dep']][] = array($value['name'], (int) $value['num']); } } // is Developer // if is manager / != department / yourself // denied if (Gate::allows('check-developer')) { $staff = StaffTeam::where('staff_id', Auth::user()->id)->get()->first(); if (isset($staff) && !empty($staff)) { $staff_team = StaffTeam::where('team_id', $staff->team_id)->where('staff_id', '!=', Auth::user()->id)->get(); $team = Team::where('id', $staff->team_id)->get()->first(); $leader = Staff::find($team->creator); } } return view('admin.department.home', compact('pie', 'staff_team', 'leader', 'num_staff')); }
/** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $staff_id = (int) $request->staffId; $staff = Staff::find($staff_id); // is Leader // if is manager / != department / yourself // denied if (Gate::allows('check-leader')) { if ($staff->level->role->name == 'Manager' || $staff->department_id != Auth::user()->department_id || $staff->id == Auth::user()->id) { return redirect()->route('admin.staff.index')->with('message', 'Access is denied'); } } // is Manager if (Gate::allows('check-manager')) { if ($staff->level->role->name == 'Manager') { return redirect()->route('admin.staff.index')->with('message', 'Access is denied'); } } // is Developer // if is manager / != department / yourself // denied if (Gate::allows('check-developer')) { if ($staff->level->role->name == 'Manager' || $staff->department_id != Auth::user()->department_id || $staff->id == Auth::user()->id) { return redirect()->route('admin.department.index'); } // if != leader of team $staff_team = StaffTeam::where('staff_id', Auth::user()->id)->get()->first(); if (!empty($staff_team)) { $team = Team::where('id', $staff_team->team_id)->get()->first(); if ($staff->level->role->name == 'TeamLeader' && $staff->id != $team->creator) { return redirect()->route('admin.department.index'); } } else { return redirect()->route('admin.department.index'); } } $this->validate($request, ['point' => 'required|numeric', 'review' => 'required', 'staffId' => 'required|numeric', 'rActive' => 'required|numeric']); $review = ReView::where(['reviewer_id' => Auth::user()->id, 'staff_id' => $staff_id])->get()->first(); // review less than 30 days! // denied if (isset($review) && !empty($review)) { $time = strtotime($review->created_at); $curtime = time(); if ($curtime - $time < 3600 * 24 * 30) { return redirect()->route('admin.department.index')->with('message', 'less than 30 days!'); } } $point = (int) $request->point; $reviewer = Auth::user()->id; $review = new Review(); $review->staff_id = $staff_id; $review->reviewer_id = $reviewer; $review->point = $point; $review->comment = $request->review; $review->active = $request->rActive; $review->save(); return redirect()->route('admin.review.show', $staff_id)->with('message', 'Create review complete!'); }
/** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $team = Team::find($id); // is not creator // denied if (Gate::denies('update-team', $team)) { return redirect()->route('admin.team.index')->with('message', 'Access denied !'); } $team->delete(); $staff_team = StaffTeam::where('team_id', $id)->get(); foreach ($staff_team as $key => $value) { StaffTeam::where(['team_id' => $id, 'staff_id' => $value->staff_id])->delete(); } return redirect()->route('admin.team.index')->with('message', 'Delete success !'); }
/** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { if (Gate::allows('check-leader')) { $staff = Staff::find($id)->level->role; if ($staff->name != "Developer") { return redirect()->route('admin.staff.index')->with('message', 'Access is denied'); } } if (Gate::allows('check-admin')) { $staff = Staff::find($id)->level->role; if ($staff->name == "Developer") { return redirect()->route('admin.staff.index')->with('message', 'Access is denied'); } } if (Gate::allows('check-developer')) { return redirect()->route('admin.department.index')->with('message', 'Access is denied'); } // if staff belongsto one team $findStaff = StaffTeam::where('staff_id', $id)->get()->toArray(); if (!empty($findStaff)) { return redirect()->route('admin.staff.index')->with('message', 'The staff belongto team !'); } $staff = Staff::find($id); $staff->delete(); // delete staff in review $staffReview = Review::where('reviewer_id', $id)->delete(); $staffReview = Review::where('staff_id', $id)->delete(); // delete staff in staff_team $staffReview = StaffTeam::where('staff_id', $id)->delete(); return redirect()->route('admin.staff.index')->with('message', 'Delete staff complete !'); }