Beispiel #1
0
 $schedule = new Schedule();
 //$getSchedule = $schedule->getSchedule($employeeId, $employeeClocking->daydate);
 $getSchedule = DB::table('employee_schedule')->where('employee_id', $employeeId)->where('schedule_date', trim($employeeClocking->daydate))->first();
 $Workshift = new Workshift();
 //$getWorkshiftByDayOfTheWeek = $Workshift->getWorkshiftByDayOfTheWeek($employeeId, date('l', strtotime($employeeClocking->daydate)), $overtime->shift);
 $getWorkshiftByDayOfTheWeek = DB::table('work_shift')->where('employee_id', $employeeId)->where('name_of_day', date('l', strtotime($employeeClocking->daydate)))->where('shift', $shift)->first();
 //return dd($getWorkshiftByDayOfTheWeek);
 $holiday = new Holiday();
 //$getHolidayByDate = $holiday->getHolidayByDate($employeeClocking[0]->daydate);
 $getHolidayByDate = DB::table('holiday')->where('date', trim($employeeClocking->daydate))->first();
 //return dd($getHolidayByDate);
 //$timesheet = new Timesheet;
 //$employeeClocking = $timesheet->getEmployeeByEmployeeIdandDate($employeeId, $employeeClocking->daydate);
 //$employeeClocking = DB::table('employee_timesheet')->where('employee_id', '=', $employeeId)->where('daydate', '=', $employeeClocking->daydate)->first();
 $summary = new Summary();
 $employeeSummary = $summary->getEmployeeSummaryByEmployeeIdandDate($employeeId, $employeeClocking->daydate);
 //return dd($employeeSummary);
 //$setting = new Setting;
 //$employeeSetting = $setting->getEmployeeSettingByEmployeeId($employeeId);
 if (!empty($getSchedule)) {
     //$scheduled['start_time'] = $getSchedule[0]->start_time;
     //$scheduled['end_time'] = $getSchedule[0]->end_time;
     $scheduled['rest_day'] = $getSchedule->rest_day;
 } elseif (!empty($getWorkshiftByDayOfTheWeek)) {
     // From 01:00:00 change to 2015-04-30 09:00:00
     //$scheduled['start_time'] = date( 'Y-m-d', strtotime($employeeClocking[0]->time_in_1) ).' '.$getWorkshiftByDayOfTheWeek[0]->start_time;
     // From 01:00:00 change to 2015-04-30 01:00:00
     //$scheduled['end_time'] =  date( 'Y-m-d', strtotime($clockingDateTime) ).' '.$getWorkshiftByDayOfTheWeek[0]->end_time;
     $scheduled['rest_day'] = $getWorkshiftByDayOfTheWeek->rest_day;
 }
 //$totalOvertime = '';
function clockingStatusClockIn3Out($clockingDateTime)
{
    $employeeId = Session::get('userEmployeeId');
    $userId = Session::get('userId');
    $dayOfTheWeek = date('l');
    $currentDate = date('Y-m-d');
    $schedule = new Schedule();
    $getSchedule = $schedule->getSchedule($employeeId, date('Y-m-d'));
    $workShift = new Workshift();
    //$getWorkShiftByEmployeeId = $workShift->getWorkShiftByEmployeeId($employeeId);
    $getWorkShiftByDayOfTheWeek = $workShift->getWorkShiftByDayOfTheWeek($employeeId, $dayOfTheWeek, 2);
    //return dd($getWorkShiftByDayOfTheWeek);
    //break;
    $holiday = new Holiday();
    $getHolidayByDate = $holiday->getHolidayByDate($currentDate);
    $timesheet = new Timesheet();
    $employeeClocking = $timesheet->getEmployeeByEmployeeIdandDate($employeeId, date('Y-m-d'));
    $summary = new Summary();
    $employeeSummary = $summary->getEmployeeSummaryByEmployeeIdandDate($employeeId, date('Y-m-d'));
    $setting = new Setting();
    $employeeSetting = $setting->getEmployeeSettingByEmployeeId($employeeId);
    if (!empty($getSchedule)) {
        //echo 'getSchedule';
        $scheduled['start_time'] = $getSchedule[0]->start_time;
        $scheduled['end_time'] = $getSchedule[0]->end_time;
        $scheduled['rest_day'] = $getSchedule[0]->rest_day;
    } elseif (!empty($getWorkShiftByDayOfTheWeek)) {
        //echo 'getWorkShiftByDayOfTheWeek';
        // From 01:00:00 change to 2015-04-30 09:00:00
        $scheduled['start_time'] = date('Y-m-d', strtotime($employeeClocking->time_in_3)) . ' ' . $getWorkShiftByDayOfTheWeek[0]->start_time;
        // From 01:00:00 change to 2015-04-30 01:00:00
        $scheduled['end_time'] = date('Y-m-d', strtotime($clockingDateTime)) . ' ' . $getWorkShiftByDayOfTheWeek[0]->end_time;
        $scheduled['rest_day'] = $getWorkShiftByDayOfTheWeek[0]->rest_day;
    }
    $employeeClocking->time_out_3 = $clockingDateTime;
    $employeeClocking->clocking_status = 'clock_out_3';
    // From 2015-04-30 08:36:16 change to 08:36:16
    $clockingIn = date('H:i:s', strtotime($employeeClocking->time_in_3));
    // From 2015-04-30 08:36:16 change to 08:36:16
    $clockingOut = date('H:i:s', strtotime($clockingDateTime));
    //SCHEDULED : TRUE
    if ((!empty($scheduled['start_time']) || $scheduled['start_time'] !== '00:00:00' || $scheduled['start_time'] !== '') && (!empty($scheduled['end_time']) || $scheduled['end_time'] !== '00:00:00' || $scheduled['end_time'] !== '')) {
        echo "SCHEDULED : TRUE \n";
        //REST DAY: FALSE
        if ($scheduled['rest_day'] !== 1) {
            echo "REST DAY: FALSE \n";
            //LATE/TARDINESS: TRUE
            if (!empty($employeeClocking->tardiness_3)) {
                echo "LATE/TARDINESS: TRUE \n";
                //TODO: check employee setting if has_break is true and break time is set. - function getWorkHours
                $employeeClocking->work_hours_3 = getWorkHours($employeeClocking->time_in_3, $clockingDateTime, $scheduled['end_time']);
                //TODO: Compute total hours with out overtime - getTotalHours
                $employeeClocking->total_hours_3 = getTotalHours($employeeClocking->time_in_3, $clockingDateTime, $scheduled['end_time']);
                //LATE/TARDINESS: FALSE
            } else {
                echo "LATE/TARDINESS: FALSE \n";
                //TODO: check employee setting if has_break is true and break time is set. - function getWorkHours
                $employeeClocking->work_hours_3 = getWorkHours($employeeClocking->time_in_3, $clockingDateTime, $scheduled['end_time']);
                //TODO: Compute total hours with overtime - getTotalHours
                $employeeClocking->total_hours_3 = getTotalHours($employeeClocking->time_in_3, $clockingDateTime, $scheduled['end_time']);
            }
            //UNDERTIME: TRUE
            if (strtotime($clockingDateTime) < strtotime($scheduled['end_time'])) {
                echo "UNDERTIME: TRUE \n";
                echo $employeeClocking->undertime_3 = getUnderTimeHours($employeeClocking->time_in_3, $clockingDateTime, $scheduled['start_time'], $scheduled['end_time']);
            }
            //OVERTIME: TRUE
            $isOvertime = false;
            if (date('H:i', strtotime($employeeClocking->time_in_3)) <= date('H:i', strtotime($scheduled['start_time'])) && date('H:i', strtotime($clockingDateTime)) > date('H:i', strtotime($scheduled['end_time']))) {
                echo "OVERTIME: TRUE \n";
                $isOvertime = true;
                $employeeClocking->total_overtime_3 = getOvertimeHours($clockingDateTime, $scheduled['end_time']);
            }
            //HOLIDAY: TRUE
            if (hasHoliday($currentDate)) {
                echo "HOLIDAY: TRUE \n";
                if ('Regular holiday' === $getHolidayByDate[0]->holiday_type) {
                    //Regular holiday
                    echo "Regular holiday \n";
                    if (!$isOvertime) {
                        //ISOVERTIME: FALSE
                        $employeeSummary->legal_holiday = getTotalHours($employeeClocking->time_in_3, $clockingDateTime, $scheduled['end_time']);
                    } else {
                        //ISOVERTIME: TRUE
                        $employeeSummary->legal_holiday_overtime = getOvertimeHours($clockingDateTime, $scheduled['end_time']);
                    }
                } elseif ('Special non-working day' === $getHolidayByDate[0]->holiday_type) {
                    //Special non-working day
                    echo "Special non-working day \n";
                    if (!$isOvertime) {
                        //ISOVERTIME: FALSE
                        $employeeSummary->special_holiday = getTotalHours($employeeClocking->time_in_3, $clockingDateTime, $scheduled['end_time']);
                    } else {
                        //ISOVERTIME: TRUE
                        $employeeSummary->special_holiday_overtime = getOvertimeHours($clockingDateTime, $scheduled['end_time']);
                    }
                }
                //HOLIDAY: FALSE
            } else {
                //Regular Day
                echo "HOLIDAY: FALSE \n";
                echo "Regular Day \n";
                if (!$isOvertime) {
                    //ISOVERTIME: FALSE
                    $employeeSummary->regular = getTotalHours($employeeClocking->time_in_3, $clockingDateTime, $scheduled['end_time']);
                } else {
                    //ISOVERTIME: TRUE
                    $employeeSummary->regular_overtime = getOvertimeHours($clockingDateTime, $scheduled['end_time']);
                }
            }
            if ($employeeClocking->save()) {
                $employeeSummary->save();
                return Redirect::to('/redraw/timesheet');
            }
            //REST DAY: TRUE
        } elseif ($scheduled['rest_day'] === 1) {
            echo "REST DAY: TRUE \n";
            //TODO RULES: First 8 Hours get the hours_per_day in employee setting
            //LATE/TARDINESS: TRUE
            if (!empty($employeeClocking->tardiness_3)) {
                echo "LATE/TARDINESS: TRUE \n";
                //TODO: check employee setting if has_break is true and break time is set. - function getWorkHours
                $employeeClocking->work_hours_3 = getWorkHours($employeeClocking->time_in_3, $clockingDateTime, $scheduled['end_time']);
                //TODO: Compute total hours with out overtime - getTotalHours
                $employeeClocking->total_hours_3 = getTotalHours($employeeClocking->time_in_3, $clockingDateTime, $scheduled['end_time']);
                //LATE/TARDINESS: FALSE
            } else {
                echo "LATE/TARDINESS: FALSE \n";
                //TODO: check employee setting if has_break is true and break time is set. - function getWorkHours
                $employeeClocking->work_hours_3 = getWorkHours($employeeClocking->time_in_3, $clockingDateTime, $scheduled['end_time']);
                //TODO: Compute total hours with overtime - getTotalHours
                $employeeClocking->total_hours_3 = getTotalHours($employeeClocking->time_in_3, $clockingDateTime, $scheduled['end_time']);
            }
            //UNDERTIME: TRUE
            if (strtotime($clockingDateTime) < strtotime($scheduled['end_time'])) {
                echo "UNDERTIME: TRUE \n";
                echo $employeeClocking->undertime_3 = getUnderTimeHours($employeeClocking->time_in_3, $clockingDateTime, $scheduled['start_time'], $scheduled['end_time']);
            }
            //OVERTIME: TRUE
            $isOvertime = false;
            if (date('H:i', strtotime($employeeClocking->time_in_3)) <= date('H:i', strtotime($scheduled['start_time'])) && date('H:i', strtotime($clockingDateTime)) > date('H:i', strtotime($scheduled['end_time']))) {
                echo "OVERTIME: TRUE \n";
                $isOvertime = true;
                $employeeClocking->total_overtime_3 = getOvertimeHours($clockingDateTime, $scheduled['end_time']);
            }
            //HOLIDAY: TRUE
            if (hasHoliday($currentDate)) {
                echo "HOLIDAY: TRUE \n";
                if ('Regular holiday' === $getHolidayByDate[0]->holiday_type) {
                    //Regular holiday
                    echo "Regular holiday \n";
                    if (!$isOvertime) {
                        //ISOVERTIME: FALSE
                        $employeeSummary->rest_day_legal_holiday = getTotalHours($employeeClocking->time_in_3, $clockingDateTime, $scheduled['end_time']);
                    } else {
                        //ISOVERTIME: TRUE
                        $employeeSummary->rest_day_legal_holiday_overtime = getOvertimeHours($clockingDateTime, $scheduled['end_time']);
                    }
                } elseif ('Special non-working day' === $getHolidayByDate[0]->holiday_type) {
                    //Special non-working day
                    echo "Special non-working day \n";
                    if (!$isOvertime) {
                        //ISOVERTIME: FALSE
                        $employeeSummary->rest_day_special_holiday = getTotalHours($employeeClocking->time_in_3, $clockingDateTime, $scheduled['end_time']);
                    } else {
                        //ISOVERTIME: TRUE
                        $employeeSummary->rest_day_special_holiday_overtime = getOvertimeHours($clockingDateTime, $scheduled['end_time']);
                    }
                }
                //HOLIDAY: FALSE
            } else {
                //Regular Day
                echo "HOLIDAY: FALSE \n";
                echo "Regular Rest Day \n";
                if (!$isOvertime) {
                    //ISOVERTIME: FALSE
                    $employeeSummary->rest_day = getTotalHours($employeeClocking->time_in_3, $clockingDateTime, $scheduled['end_time']);
                } else {
                    //ISOVERTIME: TRUE
                    $employeeSummary->rest_day_overtime = getOvertimeHours($clockingDateTime, $scheduled['end_time']);
                }
            }
            if ($employeeClocking->save()) {
                $employeeSummary->save();
                return Redirect::to('/redraw/timesheet');
            }
        }
        //SCHEDULED : FALSE
    } else {
        echo "SCHEDULED : FALSE \n";
    }
}