예제 #1
0
 /**
  * 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'));
 }
예제 #2
0
 /**
  * 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!');
 }
예제 #3
0
 /**
  * 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 !');
 }
예제 #4
0
 /**
  * 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 !');
 }