/**
  * Show the application registration form.
  *
  * @return \Illuminate\Http\Response
  */
 public function getRegister()
 {
     $positions = Positions::all();
     $shifts = Shifts::all();
     $data = array('positions_all' => $positions, 'shifts' => $shifts);
     return view('auth.register')->with($data);
 }
 public function deleteSchedule(Request $request)
 {
     $result = Shifts::where('id', $request->input('schedule'))->update(array('status' => 1));
     if ($result) {
         $status = "Success!";
     } else {
         $status = "Failed!";
     }
     return redirect('/accounts')->with('status', $status);
 }
 public function viewForm($type, $id)
 {
     $inboxNotif = $this->inboxNotif();
     $profileImage = $this->getImage();
     $positions = $this->position();
     $approvalNotif = $this->approvalNotif();
     $count = $this->forms();
     $dataFirst = array('inboxNotif' => $inboxNotif, 'profileImage' => $profileImage, 'positions' => $positions, 'approvalNotif' => $approvalNotif, 'count' => $count);
     if ($type == 1) {
         $contents = ExitPass::where('id', $id)->get();
         $user_position = Auth::user()->position_id;
         $empDepartment = Positions::find($user_position)->departments;
         $HRs = DB::table("positions")->join('users', 'users.position_id', '=', 'positions.id')->where('positions.department_id', 1)->get();
         $Supervisors = User::where('permissioners', 1)->get();
         $PMs = User::where('permissioners', 2)->get();
         $CompanyReps = User::where('permissioners', 3)->get();
         $dataSecond = array('title' => "Edit Exit Pass", 'contents' => $contents, 'HRs' => $HRs, 'Supervisors' => $Supervisors, 'PMs' => $PMs, 'CompanyReps' => $CompanyReps, 'empDepartment' => $empDepartment);
         $data = array_merge($dataFirst, $dataSecond);
         return view('user.inboxExitApproval')->with($data);
     } elseif ($type == 2) {
         $contents = Leaves::where('id', $id)->get();
         $user_position = Auth::user()->position_id;
         $empDepartment = Positions::find($user_position)->departments;
         $HRs = DB::table("positions")->join('users', 'users.position_id', '=', 'positions.id')->where('positions.department_id', 1)->get();
         $Supervisors = User::where('permissioners', 1)->get();
         $dataSecond = array('title' => "Edit Request for Leave of Absence", 'contents' => $contents, 'HRs' => $HRs, 'Supervisors' => $Supervisors, 'empDepartment' => $empDepartment);
         $data = array_merge($dataFirst, $dataSecond);
         return view('user.inboxLeaveApproval')->with($data);
     } elseif ($type == 3) {
         $contents = Change::where('id', $id)->get();
         $user_position = Auth::user()->position_id;
         $empDepartment = Positions::find($user_position)->departments;
         $permissioners = User::where('permissioners', '!=', 0)->get();
         $HRs = DB::table("positions")->join('users', 'users.position_id', '=', 'positions.id')->where('positions.department_id', 1)->get();
         $Supervisors = User::where('permissioners', 1)->get();
         $PMs = User::where('permissioners', 2)->get();
         $CompanyReps = User::where('permissioners', 3)->get();
         $currentShift = Shifts::where('id', Auth::user()->shift_id)->get();
         $shifts = Shifts::all();
         foreach ($currentShift as $cur) {
             $currentShift = date('h:i A', strtotime($cur->shift_from)) . ' to ' . date('h:i A', strtotime($cur->shift_to));
         }
         $dataSecond = array('title' => "Edit Change Schedule", 'contents' => $contents, 'permissioners' => $permissioners, 'HRs' => $HRs, 'Supervisors' => $Supervisors, 'PMs' => $PMs, 'CompanyReps' => $CompanyReps, 'empDepartment' => $empDepartment, 'currentShift' => $currentShift, 'shifts' => $shifts);
         $data = array_merge($dataFirst, $dataSecond);
         return view('user.inboxChangeApproval')->with($data);
     } elseif ($type == 4) {
         $contents = Overtime::where('id', $id)->get();
         $user_position = Auth::user()->position_id;
         $empDepartment = Positions::find($user_position)->departments;
         $Supervisors = User::where('permissioners', 1)->get();
         $dateTime = DateTimeOvertime::where('overtime_id', $id)->get();
         $shift = Shifts::find(Auth::user()->shift_id);
         $var = 0;
         $dataSecond = array('title' => "Edit Overtime Authorization", 'contents' => $contents, 'empDepartment' => $empDepartment, 'Supervisors' => $Supervisors, 'dateTime' => $dateTime, 'var' => $var, 'shift' => $shift);
         $data = array_merge($dataFirst, $dataSecond);
         // dd($data);
         return view('user.inboxOverApproval')->with($data);
     } else {
         $status = "Nothing to Show.";
         return redirect('inbox')->with('status', $status);
     }
 }
 public function postovertimeAuthSlip(Request $request)
 {
     // $rules = array('purpose' => 'required',
     //                'supervisor' => 'required',
     //                'dateFromOvertime' => 'required',
     //                'timeFromOvertime' => 'required',
     //                'dateToOvertime' => 'required',
     //                'timeToOvertime' => 'required');
     // $validator = Validator::make($request->all(), $rules);
     // if ($validator->fails()) {
     //     $this->throwValidationException(
     //         $request, $validator
     //     );
     // }
     // dd($request->all());
     $department = Positions::find(Auth::user()->position_id)->departments;
     $dateFromOvertime = strtotime($request->input('dateFromOvertime'));
     $timeFromOvertime = strtotime($request->input('timeFromOvertime'));
     $dateToOvertime = strtotime($request->input('dateToOvertime'));
     $timeToOvertime = strtotime($request->input('timeToOvertime'));
     $user_shift = Shifts::find(Auth::user()->shift_id);
     $daysTotal = 0;
     $hoursTotal = 0;
     $minutesTotal = 0;
     $secondsTotal = 0;
     // dd($user_shift);
     $dateToday = strtotime(date("Y-m-d"));
     if ($dateFromOvertime >= $dateToday && $dateToOvertime >= $dateFromOvertime) {
         if (strtotime($request->input('timeFromOvertime')) >= strtotime($user_shift->shift_to)) {
             $i = 1;
             $var = $request->input('number');
             if ($var > 1) {
                 $seconds = strtotime($request->input('dateToOvertime') . $request->input('timeToOvertime')) - strtotime($request->input('dateFromOvertime') . $request->input('timeFromOvertime'));
                 $days = floor($seconds / 86400);
                 $hours = floor(($seconds - $days * 86400) / 3600);
                 $minutes = floor(($seconds - $days * 86400 - $hours * 3600) / 60);
                 $seconds = floor($seconds - $days * 86400 - $hours * 3600 - $minutes * 60);
                 $daysTotal = $days;
                 $hoursTotal = $hours;
                 $minutesTotal = $minutes;
                 $secondsTotal = $seconds;
                 $overtime_id = Overtime::insertGetId(['user_id' => Auth::user()->id, 'department_id' => $department->id, 'purpose' => $request->input('purpose'), 'permission_id1' => $request->input('supervisor')]);
                 $firstdateTime = new DateTimeOvertime(array('user_id' => Auth::user()->id, 'dateFromOvertime' => $request->input('dateFromOvertime'), 'timeFromOvertime' => $request->input('timeFromOvertime'), 'dateToOvertime' => $request->input('dateToOvertime'), 'timeToOvertime' => $request->input('timeToOvertime'), 'overtime_id' => $overtime_id));
                 if ($firstdateTime->save()) {
                     while ($var != 0) {
                         if ($request->input('dateFromOvertime' . $i) != '' && $request->input('dateToOvertime' . $i) != '' && $request->input('timeFromOvertime' . $i) != '' && $request->input('timeFromOvertime' . $i) != '') {
                             $seconds = strtotime($request->input('dateToOvertime' . $i) . $request->input('timeToOvertime' . $i)) - strtotime($request->input('dateFromOvertime' . $i) . $request->input('timeFromOvertime' . $i));
                             $days = floor($seconds / 86400);
                             $hours = floor(($seconds - $days * 86400) / 3600);
                             $minutes = floor(($seconds - $days * 86400 - $hours * 3600) / 60);
                             $seconds = floor($seconds - $days * 86400 - $hours * 3600 - $minutes * 60);
                             $daysTotal += $days;
                             $hoursTotal += $hours;
                             $minutesTotal += $minutes;
                             $secondsTotal += $seconds;
                             $overtimeDatesTime = new DateTimeOvertime(array('user_id' => Auth::user()->id, 'dateFromOvertime' => $request->input('dateFromOvertime'), 'timeFromOvertime' => $request->input('timeFromOvertime'), 'dateToOvertime' => $request->input('dateToOvertime'), 'timeToOvertime' => $request->input('timeToOvertime'), 'overtime_id' => $overtime_id));
                             $overtimeDatesTime->save();
                         }
                         $var--;
                         $i++;
                     }
                     if ($minutesTotal == 0) {
                         $overtime = $daysTotal * 24 + $hoursTotal . ':00';
                     } elseif ($minutesTotal > 0 && $minutesTotal < 10) {
                         $overtime = $daysTotal * 24 + $hoursTotal . ':0' . $minutesTotal;
                     } else {
                         $overtime = $daysTotal * 24 + $hoursTotal . ':' . $minutesTotal;
                     }
                     $updateOvertime = Overtime::where('id', $overtime_id)->update(array('total_overtime' => $overtime));
                     if ($updateOvertime) {
                         $status = "Success!";
                     } else {
                         $status = "Failed!";
                     }
                 }
                 // $status = "Failed!";
                 // echo $overtime;
             } else {
                 if ($dateToOvertime > $dateFromOvertime) {
                     $seconds = strtotime($request->input('dateToOvertime') . $request->input('timeToOvertime')) - strtotime($request->input('dateFromOvertime') . $request->input('timeFromOvertime'));
                     $days = floor($seconds / 86400);
                     $hours = floor(($seconds - $days * 86400) / 3600);
                     $minutes = floor(($seconds - $days * 86400 - $hours * 3600) / 60);
                     $seconds = floor($seconds - $days * 86400 - $hours * 3600 - $minutes * 60);
                     // $day = $days*24;
                     if ($minutes == 0) {
                         $overtime = $days * 24 + $hours . ':00';
                     } elseif ($minutes > 0 && $minutes < 10) {
                         $overtime = $days * 24 + $hours . ':0' . $minutes;
                     } else {
                         $overtime = $days * 24 + $hours . ':' . $minutes;
                     }
                     $overtime_id = Overtime::insertGetId(['user_id' => Auth::user()->id, 'department_id' => $department->id, 'total_overtime' => $overtime, 'purpose' => $request->input('purpose'), 'permission_id1' => $request->input('supervisor')]);
                     $firstdateTime = new DateTimeOvertime(array('user_id' => Auth::user()->id, 'dateFromOvertime' => $request->input('dateFromOvertime'), 'timeFromOvertime' => $request->input('timeFromOvertime'), 'dateToOvertime' => $request->input('dateToOvertime'), 'timeToOvertime' => $request->input('timeToOvertime'), 'overtime_id' => $overtime_id));
                     $firstdateTime->save();
                     if ($firstdateTime) {
                         $status = "Success!";
                     } else {
                         $status = "Failed!";
                     }
                 } elseif ($dateToOvertime == $dateFromOvertime) {
                     if ($timeToOvertime > $timeFromOvertime) {
                         $to_time = strtotime(date('Y-m-d', $dateToOvertime) . date(' H:i:s', $timeToOvertime));
                         $from_time = strtotime(date('Y-m-d', $dateFromOvertime) . date(' H:i:s', $timeFromOvertime));
                         $minutes = round(abs($to_time - $from_time) / 60, 2);
                         $seconds = abs($to_time - $from_time) % 60;
                         $overtime = gmdate("H:i", $minutes * 60);
                         $overtime_id = Overtime::insertGetId(['user_id' => Auth::user()->id, 'department_id' => $department->id, 'total_overtime' => $overtime, 'purpose' => $request->input('purpose'), 'permission_id1' => $request->input('supervisor')]);
                         $firstdateTime = new DateTimeOvertime(array('user_id' => Auth::user()->id, 'dateFromOvertime' => $request->input('dateFromOvertime'), 'timeFromOvertime' => $request->input('timeFromOvertime'), 'dateToOvertime' => $request->input('dateToOvertime'), 'timeToOvertime' => $request->input('timeToOvertime'), 'overtime_id' => $overtime_id));
                         $firstdateTime->save();
                         if ($firstdateTime) {
                             $status = "Success!";
                         } else {
                             $status = "Failed!";
                         }
                     } else {
                         $status = "Error: Double Check your Time inputted";
                         // echo $status;
                     }
                 }
             }
         } else {
             $status = "Error: Double Check your Time inputted";
             // echo "2";
         }
     } else {
         $status = "Error: Double Check your Date inputted";
     }
     // dd($request->all());
     return redirect('inbox')->with('status', $status);
     // dd($request->all());
 }