Exemplo n.º 1
0
 public static function dailyUpdate()
 {
     $log = '';
     //echo "<h1>Adding New Entities to Roster</h1>";
     $log .= "Adding New Entities to Roster\n\n";
     $capecod = '3';
     $company = Company::findOrFail($capecod);
     $allowedSites = $company->siteList('1')->pluck('id')->toArray();
     $allowedSites = Site::all()->pluck('id')->toArray();
     $date = Carbon::now()->format('Y-m-d');
     //$date = '2016-08-17';
     $planner = SitePlanner::select(['id', 'site_id', 'entity_type', 'entity_id', 'task_id', 'from', 'to', 'days'])->where('from', '<=', $date)->where('to', '>=', $date)->whereIn('site_id', $allowedSites)->orderBy('site_id')->get();
     foreach ($planner as $plan) {
         if ($plan->entity_type == 'c') {
             $site = Site::find($plan->site_id);
             $company = Company::findOrFail($plan->entity_id);
             $staff = $company->staffActive()->pluck('id')->toArray();
             $log .= "\nf:" . $plan->from->format('Y-m-d') . ' t:' . $plan->to->format('Y-m-d') . ' [' . $plan->id . '] (' . $company->name . ") Task:{$plan->task_id} Site: {$site->name} ({$plan->site_id})\n";
             foreach ($staff as $staff_id) {
                 $user = User::findOrFail($staff_id);
                 if (!$site->isUserOnRoster($staff_id, $date)) {
                     //echo 'adding '.$user->fullname.' ('.$user->username.') to roster<br>';
                     $log .= 'adding ' . $user->fullname . ' (' . $user->username . ") to roster\n";
                     $newRoster = SiteRoster::create(array('site_id' => $site->id, 'user_id' => $staff_id, 'date' => $date . ' 00:00:00', 'created_by' => '1', 'updated_by' => '1'));
                 }
             }
         }
     }
     //echo "<h1>Completed</h1>";
     $log .= "\nCompleted";
     $now = Carbon::now()->format('Y-m-d-G-i-s');
     $bytes_written = File::put(public_path('filebank/log/nightly/' . $now . '.txt'), $log);
     if ($bytes_written === false) {
         die("Error writing to file");
     } else {
         echo 'Logfile filebank/log/nightly/' . $now . '.txt';
     }
     echo $log;
 }
Exemplo n.º 2
0
 /**
  * Process Site Check-in.
  *
  * @return \Illuminate\Http\Response
  */
 public function processCheckin(SiteCheckinRequest $request, $slug)
 {
     $site = Site::where(compact('slug'))->firstOrFail();
     if ($request->has('safe_site')) {
         $site->attendance()->save(new SiteAttendance(['safe_site' => '1']));
     } else {
         $site->attendance()->save(new SiteAttendance(['safe_site' => '0']));
         // Create Issue + attach to site
         if ($request->has('action_required')) {
             $issue = $site->issues()->save(new SiteIssue($request->only('reason', 'action_required')));
         } else {
             $issue = $site->issues()->save(new SiteIssue($request->only('reason')));
         }
         //Create action taken + attach to issue
         if ($issue) {
             $action_request = $request->only('action');
             $action = $issue->actions()->save(new SiteIssueAction($action_request));
             // Handle attached Photo or Video
             if ($request->hasFile('media')) {
                 $issue->saveAttachedMedia($request->file('media'));
             }
             // Email issue
             $issue->emailIssue($action);
         }
     }
     // if Today add them to Roster if Company is on Planer but user not on Roster
     $today = Carbon::now()->format('Y-m-d');
     if ($site->isCompanyOnPlanner(Auth::user()->company->id, $today) && !$site->isUserOnRoster(Auth::user()->id, $today)) {
         $newRoster = SiteRoster::create(array('site_id' => $site->id, 'user_id' => Auth::user()->id, 'date' => $today . ' 00:00:00', 'created_by' => '1', 'updated_by' => '1'));
     }
     Toastr::success("Checked in");
     return redirect('/dashboard');
 }
Exemplo n.º 3
0
 /**
  * Is a specific user on site roster
  *
  * @return record
  */
 public function isUserOnRoster($user_id, $date = '')
 {
     if (!$date) {
         $date = Carbon::today()->format('Y-m-d');
     }
     $onsite = SiteRoster::where('site_id', $this->id)->where('user_id', $user_id)->whereDate('date', '=', $date)->first();
     return $onsite ? $onsite->id : 0;
 }
Exemplo n.º 4
0
 /**
  * Get Site Attendance for specific site
  */
 public function getSiteAttendance(Request $request, $site_id, $date)
 {
     $today = Carbon::now()->format('Y-m-d');
     $carbon_date = Carbon::createFromFormat('Y-m-d H:i:s', $date . ' 00:00:00');
     $weekend = $carbon_date->isWeekend() ? 1 : 0;
     $planner = SitePlanner::select(['id', 'site_id', 'entity_type', 'entity_id', 'task_id', 'from', 'to', 'days'])->whereDate('from', '<=', $date)->whereDate('to', '>=', $date)->where('site_id', $site_id)->where('weekend', $weekend)->get();
     $site = Site::find($site_id);
     $dayplan = [];
     $r_entities = [];
     $planner_ids = [];
     $user_list = [];
     foreach ($planner as $plan) {
         $planner_ids[] = $plan->id;
         $array = $this->getPlanData($plan);
         $key = $plan->entity_type . '.' . $plan->entity_id;
         // Add task to Entity's existing task else add Entity to list
         if (isset($r_entities[$key])) {
             $r_entities[$key]['tasks'] .= ', ' . $array['task_name'];
             $r_entities[$key]['plan_ids'] .= ', ' . $plan->id;
         } else {
             $attendance = [];
             if ($plan->entity_type == 'c') {
                 // Get Staff Attendance on Current Site
                 $staff = Company::find($plan->entity_id)->staff->pluck('id')->toArray();
                 $roster = SiteRoster::where('site_id', $plan->site_id)->where('date', '=', $date)->whereIn('user_id', $staff)->get();
                 // If today Roster will be all active company to give us the ability to add/remove them from Roster database
                 if ($date == $today) {
                     $roster = Company::findOrFail($plan->entity_id)->staffActive();
                 }
                 foreach ($roster as $rostered) {
                     // If today then determine if user is on planner otherwise we know they already are
                     if ($date == $today) {
                         $user = User::find($rostered->id);
                         $roster_id = $site->isUserOnRoster($user->id, $date);
                         //echo "rid:" . $roster_id . ' user:'******' date:' . $date . "<br>";
                     } else {
                         $user = User::find($rostered->user_id);
                         $roster_id = $rostered->id;
                         //echo "rid:" . $rostered->id . ' user:'******' date:' . $rostered->date . "<br>";
                     }
                     $user_list[] = $user->id;
                     // add to user_list to determine non-rostered users later
                     // Current Site attendance
                     $attended = ($onsite = $site->isUserOnsite($user->id, $date)) ? $onsite->date->format('H:i:s') : '';
                     // Other Site attendance
                     $attend_other = SiteAttendance::where('user_id', $user->id)->where('site_id', '<>', $site_id)->whereDate('date', '=', $date)->orderBy('date')->get();
                     $other_sites = '';
                     foreach ($attend_other as $attend) {
                         $other_site = Site::find($attend->site_id);
                         $other_sites ? $other_sites .= ', ' . $other_site->nameShort . ' (' . $attend->date->format('g:i a') . ')' : ($other_sites = $other_site->nameShort . ' (' . $attend->date->format('g:i a') . ')');
                     }
                     $attendance[] = ['user_id' => $user->id, 'name' => $user->fullname, 'roster_id' => $roster_id, 'attended' => $attended, 'other_sites' => $other_sites];
                     //echo "Company:".$array['entity_name']."<br>";
                 }
             }
             $r_entities[$key] = ['key' => $key, 'entity_type' => $plan->entity_type, 'entity_id' => $plan->entity_id, 'entity_name' => $array['entity_name'], 'tasks' => $array['task_name'], 'plan_ids' => $plan->id, 'attendance' => $attendance, 'open' => false];
         }
         $dayplan[] = $array;
     }
     // Non-Rostered attendees
     $n_entities = [];
     $non_rostered = SiteAttendance::where('site_id', $site_id)->whereDate('date', '=', $date)->whereNotIn('user_id', $user_list)->get();
     foreach ($non_rostered as $non) {
         $company = User::find($non->user_id)->company;
         $key = 'c.' . $company->id;
         $attendance = [];
         // Get All Staff Non Rostered Attendance
         $staff = $company->staff->pluck('id')->toArray();
         foreach ($staff as $s) {
             $user = User::find($s);
             // Current Site attendance
             $attended = ($onsite = $site->isUserOnsite($user->id, $date)) ? $onsite->date->format('H:i:s') : '';
             if ($attended) {
                 // Other Site attendance
                 $attend_other = SiteAttendance::where('user_id', $user->id)->where('site_id', '<>', $site_id)->whereDate('date', '=', $date)->orderBy('date')->get();
                 $other_sites = '';
                 foreach ($attend_other as $attend) {
                     $other_site = Site::find($attend->site_id);
                     $other_sites ? $other_sites .= ', ' . $other_site->nameShort . ' (' . $attend->date->format('g:i a') . ')' : ($other_sites = $other_site->nameShort . ' (' . $attend->date->format('g:i a') . ')');
                 }
                 $attendance[] = ['user_id' => $user->id, 'name' => $user->fullname, 'attended' => $attended, 'other_sites' => $other_sites];
             }
         }
         if (!isset($n_entities[$key])) {
             $n_entities[$key] = ['key' => $key, 'entity_type' => 'c', 'entity_id' => $company->id, 'entity_name' => $company->name, 'tasks' => 'Unrostered', 'attendance' => $attendance, 'open' => false];
         }
     }
     //
     // Get Site List 'Select' options + bold sites currently on planner for date.
     $sel_site = [];
     if (Auth::user()->company->subscription) {
         $site_list = Auth::user()->supervisorSiteListSelect('1', 'prompt');
     } else {
         $site_list = Auth::user()->company->sitePlannerListSelect('prompt');
     }
     foreach ($site_list as $key => $value) {
         $s = Site::find($key);
         if ($s) {
             if (Auth::user()->company->subscription) {
                 $site_name = $s->anyTasksOnDate($date) ? '<b>' . $value . '</b>' : $value;
             } else {
                 $site_name = $s->isCompanyOnPlanner(Auth::user()->company->id, $date) ? '<b>' . $value . '</b>' : $value;
             }
             $sel_site[] = ['value' => $key, 'text' => $site_name];
         } else {
             $sel_site[] = ['value' => $key, 'text' => $value];
         }
     }
     // Sort Rostered
     $roster = [];
     foreach ($r_entities as $entity) {
         usort($entity['attendance'], 'sortName');
         $roster[] = $entity;
     }
     usort($roster, 'sortEntityName');
     // Sort Non Rostered
     $non_roster = [];
     foreach ($n_entities as $entity) {
         usort($entity['attendance'], 'sortName');
         $non_roster[] = $entity;
     }
     usort($non_roster, 'sortEntityName');
     // Get Users permissions
     $permission = '';
     if (Auth::user()->can('view.attendance|view.p.attendance')) {
         $permission = 'view';
     }
     if (Auth::user()->can('edit.attendance|edit.p.attendance')) {
         $permission = 'edit';
     }
     $json = [];
     $json[] = $dayplan;
     $json[] = $roster;
     $json[] = $non_roster;
     $json[] = $sel_site;
     $json[] = $permission;
     return $json;
 }
Exemplo n.º 5
0
 public static function roster()
 {
     $log = '';
     echo "<h2>Adding Users to Roster</h2>";
     $log .= "Adding New Users to Roster\n";
     $log .= "------------------------------------------------------------------------\n\n";
     $allowedSites = Site::all()->pluck('id')->toArray();
     if (Auth::check()) {
         $allowedSites = Auth::user()->company->siteList('1')->pluck('id')->toArray();
     }
     $date = Carbon::now()->format('Y-m-d');
     //$date = '2016-08-17';
     $planner = SitePlanner::where('from', '<=', $date)->where('to', '>=', $date)->whereIn('site_id', $allowedSites)->orderBy('site_id')->get();
     foreach ($planner as $plan) {
         if ($plan->entity_type == 'c') {
             $site = Site::find($plan->site_id);
             $company = Company::findOrFail($plan->entity_id);
             $staff = $company->staffActive()->pluck('id')->toArray();
             $task = Task::find($plan->task_id);
             echo "<br><b>Site:{$site->name} ({$plan->site_id}) &nbsp; Company: {$company->name} &nbsp; Task: {$task->name} &nbsp; PID: {$plan->id}</b><br>";
             $log .= "\nSite: {$site->name} ({$plan->site_id}) Company: {$company->name}  Task: {$task->name} PID: {$plan->id}\n";
             $found = false;
             foreach ($staff as $staff_id) {
                 $user = User::findOrFail($staff_id);
                 if (!$site->isUserOnRoster($staff_id, $date)) {
                     echo 'adding ' . $user->fullname . ' (' . $user->username . ') to roster<br>';
                     $log .= 'adding ' . $user->fullname . ' (' . $user->username . ") to roster\n";
                     $newRoster = SiteRoster::create(array('site_id' => $site->id, 'user_id' => $staff_id, 'date' => $date . ' 00:00:00', 'created_by' => '1', 'updated_by' => '1'));
                     $found = true;
                 }
             }
             if (!$found) {
                 echo "There were no users to add or they were already on the roster<br>";
                 $log .= "There were no users to add or they were already on the roster\n";
             }
         }
     }
     echo "<h4>Completed</h4>";
     $log .= "\nCompleted\n\n\n";
     $bytes_written = File::append(public_path('filebank/log/nightly/' . Carbon::now()->format('Ymd') . '.txt'), $log);
     if ($bytes_written === false) {
         die("Error writing to file");
     }
 }
Exemplo n.º 6
0
 function duplicateRoster()
 {
     $roster = SiteRoster::all();
     $onRoster = [];
     foreach ($roster as $r) {
         if (isset($onRoster[$r->planner_id . '.' . $r->user_id])) {
             $onRoster[$r->planner_id . '.' . $r->user_id]++;
         } else {
             $onRoster[$r->planner_id . '.' . $r->user_id] = 1;
         }
     }
     sort($onRoster);
     $reverse = array_reverse($onRoster);
     dd($reverse);
 }