group_id == 2) { return redirect('home'); } $this->data['title'] = 'Sections'; $this->data['users'] = \App\User::all(); $this->data['sections'] = DB::table('sections as s') ->leftJoin('users as u', 'u.id', '=', 's.user_id') ->select('u.name as user_name', 's.*') ->get(); return view('admin.schedules.sections', $this->data); } /* | Save section |-------------------------------------------------------------------------- */ public function save_section(Request $request) { $user = \App\User::findorFail($request->user); $user->type = $request->type; if ($request->type == 'foh') { $user->section = $request->foh; } else { $user->section = $request->boh; } $user->save(); $request->session()->flash('message', 'Task was successful!'); return back(); } /* | Delete section |-------------------------------------------------------------------------- */ public function delete_section(Request $request) { $section = \App\User::find($request->id); $section->type = null; $section->section = null; $section->save(); $request->session()->flash('message', 'Task was successful!'); return back(); } /* | Get single section |-------------------------------------------------------------------------- */ public function get_section(Request $request) { return response()->json(\App\User::find($request->id)); } /* | schedule view |-------------------------------------------------------------------------- */ public function get_schedule(Request $request) { if (Auth::User()->group_id == 2) { return redirect('home'); } $data = []; $data['title'] = 'Schedule'; $data['users'] = \App\User::all(); if ($request->id && $request->id != '') { $data['schedules'] = Schedule::where('user_id', $request->id)->orderBy('date', 'desc')->get(); } else { $data['schedules'] = array(); } return view('admin.schedules.schedule', $data); } /* | schedule list view |-------------------------------------------------------------------------- */ public function schedule_list(Request $request) { if (Auth::User()->group_id == 2) { return redirect('home'); } $this->data['title'] = 'Schedule List'; $this->data['users'] = \App\User::all(); $schedule_list = DB::table('schedule as s') ->leftJoin('users as u', 'u.id', '=', 's.user_id'); if ($request->date != '') { $schedule_list = $schedule_list->whereDate('s.date', '>=', $request->date); } if ($request->user !='') { $schedule_list = $schedule_list->where('u.id', $request->user); } if ($request->shift !='') { $schedule_list = $schedule_list->where('s.shift', $request->shift); } $schedule_list = $schedule_list->select('u.name as user_name', 's.*') ->orderBy('s.date', 'desc') ->get(); $this->data['schedule_list'] = $schedule_list; return view('admin.schedules.schedule_list', $this->data); } /* | save schedule |-------------------------------------------------------------------------- */ public function save_schedule(Request $request) { $schedule = new Schedule; $schedule->user_id = $request->user; $schedule->days = $request->days; $schedule->shift = $request->shift; $schedule->date = $request->date; $schedule->start_time = $request->start_time; $schedule->close_time = $request->close_time; $schedule->save(); $request->session()->flash('message', 'Task was successful!'); return back(); } /* | my schedule view |-------------------------------------------------------------------------- */ public function my_schedule(Request $request) { $this->data['title'] = 'My Schedule'; $my_schedule = Schedule::where('user_id', Auth::User()->id)->orderBy('date', 'desc')->get(); if ($my_schedule && count($my_schedule)>0) { $data['schedules'] = $my_schedule; } else { $data['schedules'] = []; } return view('admin.schedules.my_schedule', $this->data); } /* | shift swap view |-------------------------------------------------------------------------- */ public function shift_swap(Request $request) { $this->data['title'] = 'Shift Swap'; $this->data['users'] = \App\User::all(); $this->data['my_schedule'] = Schedule::where('user_id', Auth::User()->id)->orderBy('date', 'desc')->get(); if ($request->id && $request->id != '') { $this->data['schedules'] = Schedule::where('user_id', $request->id)->orderBy('date', 'desc')->get(); } else { $this->data['schedules'] = []; } return view('admin.schedules.shift_swap', $this->data); } /* | save shift swap |-------------------------------------------------------------------------- */ public function save_shift_swap(Request $request) { $obj = new ShiftRequests; $obj->user_from = Auth::User()->id; $obj->user_from_name = Auth::User()->name; $obj->user_to = $request->user_id; $obj->user_to_name = \App\User::find($request->user_id)->name; $obj->shift_from = $request->shift_from; $obj->shift_to = $request->shift_to; $obj->message = $request->message; $obj->save(); //======================== pn ========================// //manager $result = \App\PushNotificationsManager::all(); if (count($result)>0) { $user_from = Auth::User()->name; $user_to = \App\User::find($request->user_id)->name; $title = 'New Shift Swap Request'; $message = $user_from."\n".$user_to; $device_tokens = []; foreach ($result as $row) { $device_tokens[] = $row->token; } $data = []; $data['type'] = 'shift_request'; $data['id'] = $obj->id; $data['user_from'] = $user_from; $data['user_to'] = $user_to; if (count($device_tokens)>0) { Helper::push_notification($title, $message, $device_tokens, $data); } } //user $u_result = \App\PushNotificationsSchedule::where('user_id', $request->user_to)->first(); $u_title = 'New Shift Swap Request'; $u_message = 'New Shift Swap Request from '.Auth::User()->name; if (count($u_result)>0) { $device_tokens = []; $device_tokens = $u_result->token; $data = []; $data['type'] = 'shift_request'; $data['message'] = $u_message; if (count($device_tokens)>0) { Helper::push_notification($u_title, $u_message, $device_tokens, $data); } } //======================== pn ========================// $request->session()->flash('message', 'Task was successful!'); return back(); } /* | shift requests view |-------------------------------------------------------------------------- */ public function shift_requests(Request $request) { $this->data['title'] = 'Shift Requests'; if (Auth::User()->group_id == 1) { $requests = ShiftRequests::orderBy('id', 'desc')->get(); if (count($requests)>0) { foreach ($requests as $row) { $row->shift_schedule_from = Schedule::where('id', $row->shift_from)->first(); $row->shift_schedule_to = Schedule::where('id', $row->shift_to)->first(); } } $data['requests'] = $requests; } else { $sender_requests = ShiftRequests::where('user_from', Auth::User()->id)->orderBy('id', 'desc')->get(); if (count($sender_requests)>0) { foreach ($sender_requests as $row) { $row->shift_schedule_from = Schedule::where('id', $row->shift_from)->first(); $row->shift_schedule_to = Schedule::where('id', $row->shift_to)->first(); } } $receiver_requests = ShiftRequests::where('user_to', Auth::User()->id)->orderBy('id', 'desc')->get(); if (count($receiver_requests)>0) { foreach ($receiver_requests as $row) { $row->shift_schedule_from = Schedule::where('id', $row->shift_from)->first(); $row->shift_schedule_to = Schedule::where('id', $row->shift_to)->first(); } } $this->data['sender_requests'] = $sender_requests; $this->data['receiver_requests'] = $receiver_requests; } return view('admin.schedules.shift_requests', $this->data); } /* | status_shift_request_admin |-------------------------------------------------------------------------- */ public function status_shift_request_admin(Request $request) { $shift_request = DB::table('shift_requests')->where('id', $request->shift_request_id_admin)->first(); if ($request->admin_status == 1) { // shift from $shift_from = DB::table('schedule')->where('id', $shift_request->shift_from)->first(); $request->session()->put('shift_from', $shift_from); // shift to $shift_to = DB::table('schedule')->where('id', $shift_request->shift_to)->first(); $request->session()->put('shift_to', $shift_to); // get from session $u_shift_from = $request->session()->get('shift_from'); $u_shift_to = $request->session()->get('shift_to'); // update from--to DB::table('schedule')->where('id', $shift_request->shift_from)->update([ 'shift' => $u_shift_to->shift, 'date' => $u_shift_to->date, 'start_time' => $u_shift_to->start_time, 'close_time' => $u_shift_to->close_time, ]); // update to--from DB::table('schedule')->where('id', $shift_request->shift_to)->update([ 'shift' => $u_shift_from->shift, 'date' => $u_shift_from->date, 'start_time' => $u_shift_from->start_time, 'close_time' => $u_shift_from->close_time, ]); } //update status DB::table('shift_requests')->where('id', $request->shift_request_id_admin)->update(['admin_status' => $request->admin_status]); if ($request->admin_status == 1) { $title = 'Shift Swap Update'; $message = 'Manager approved your shift request.'; } else { $title = 'Shift Swap Update'; $message = 'Manager did not approved your shift request.'; } //======================== pn ========================// $result = \App\PushNotificationsSchedule::where('user_id', $shift_request->user_from)->first(); if (count($result)>0) { $device_tokens = []; $device_tokens = $result->token; $data = []; $data['type'] = 'shift_request'; $data['message'] = $message; if (count($device_tokens)>0) { Helper::push_notification($title, $message, $device_tokens, $data); } } //======================== pn ========================// $request->session()->forget('shift_from'); $request->session()->forget('shift_to'); $request->session()->flash('message', 'Task was successful!'); return back(); } /* | status_shift_request_user |-------------------------------------------------------------------------- */ public function status_shift_request_user(Request $request) { DB::table('shift_requests')->where('id', $request->shift_request_id_user)->update(['user_status' => $request->user_status]); $shift_request = DB::table('shift_requests')->where('id', $request->shift_request_id_user)->first(); if ($request->user_status == 1) { $title = 'Shift Swap Update'; $message = ucword($shift_request->user_to_name). ' approved your shift request.'; } else { $title = 'Shift Swap Update'; $message = ucword($shift_request->user_to_name). ' did not approved your shift request.'; } //======================== pn ========================// $result = \App\PushNotificationsSchedule::where('user_id', $shift_request->user_from)->first(); if (count($result)>0) { $device_tokens = []; $device_tokens = $result->token; $data = []; $data['type'] = 'shift_request'; $data['message'] = $message; if (count($device_tokens)>0) { Helper::push_notification($title, $message, $device_tokens, $data); } } //======================== pn ========================// $request->session()->flash('message', 'Task was successful!'); return back(); } /* | Delete schedule |-------------------------------------------------------------------------- */ public function delete_schedule(Request $request) { $schedule = Schedule::find($request->id); $schedule->delete(); $request->session()->flash('message', 'Task was successful!'); return back(); } }