Example #1
0
 public function checkweekdaysdatacron($hidstartweek_date, $hidendweek_date, $hidemp, $emp_dept_id, $employeeGroupId, $empJoiningDate)
 {
     $messages = array();
     if ($hidemp != '' && $hidstartweek_date != '' && $hidendweek_date != '') {
         //To get days in the week/month
         $weekDatesArray = sapp_Global::createDateRangeArray($hidstartweek_date, $hidendweek_date);
         //echo
         //End
         $submittedtsdates = $holDates = $weekendDates = $leaveDates = array();
         $startdateObj = DateTime::createFromFormat("Y-m-d", $hidstartweek_date);
         $loopDate = $hidstartweek_date;
         $cal_weekArray = array();
         $yearCalWeekArray = array();
         while (strtotime($loopDate) <= strtotime($hidendweek_date)) {
             $calWeekVal = strftime('%U', strtotime($loopDate));
             $dateYearVal = strftime('%Y', strtotime($loopDate));
             if (!in_array($calWeekVal, $cal_weekArray)) {
                 $cal_weekArray[] = $calWeekVal;
                 $yearCalWeekArray[$calWeekVal][] = $dateYearVal;
             }
             if (!in_array($dateYearVal, $yearCalWeekArray[$calWeekVal])) {
                 $yearCalWeekArray[$calWeekVal][] = $dateYearVal;
             }
             $loopDate = date("Y-m-d", strtotime("+1 day", strtotime($loopDate)));
         }
         $startDateYear = $startdateObj->format("Y");
         /*submitted and approved status dates in a date range*/
         //To get dates of timesheet filled by user of the given duration
         $tsStatus_model = new Timemanagement_Model_Timesheetstatus();
         $resultData = $tsStatus_model->getEachDayTsDateCron($hidemp, $cal_weekArray, $yearCalWeekArray);
         $ts_filled_dates = array();
         if (!empty($resultData)) {
             foreach ($resultData as $resData) {
                 $ts_week_dates = $resData['ts_week_dates'];
                 $ts_weekArray = explode('$', $ts_week_dates);
                 if (count($ts_weekArray) > 0) {
                     foreach ($ts_weekArray as $ts_day) {
                         $ts_day_Array = explode('#', $ts_day);
                         if (in_array($ts_day_Array[0], $weekDatesArray)) {
                             if ($ts_day_Array[1] == 'submitted' || $ts_day_Array[1] == 'approved') {
                                 $submittedtsdates[] = $ts_day_Array[0];
                                 //$ts_day_Array[0] is ts status date
                             }
                         }
                     }
                 }
             }
             $submittedtsdates = array_unique($submittedtsdates);
         }
         /*End*/
         //To get Holidays for the given duration
         $holidayDatesArr = array();
         if (isset($employeeGroupId) && $employeeGroupId != '') {
             $holidaydatesmodel = new Default_Model_Holidaydates();
             $holidayDateslistArr = $holidaydatesmodel->getHolidayDatesListForGroup($employeeGroupId);
             if (!empty($holidayDateslistArr)) {
                 for ($i = 0; $i < sizeof($holidayDateslistArr); $i++) {
                     $holidayDatesArr[$i] = $holidayDateslistArr[$i]['holidaydate'];
                 }
             }
         }
         //End
         //To get Leaves applied by user for the given duration
         $empLeaves = $this->getEmpLeaves($hidemp, $hidstartweek_date, $hidendweek_date);
         if (!empty($empLeaves)) {
             $empleaveDatesArray = array();
             foreach ($empLeaves as $empLeaveRow) {
                 if ($empLeaveRow['leaveday'] == 1) {
                     $leaveDatesArray = sapp_Global::createDateRangeArray($empLeaveRow['from_date'], $empLeaveRow['to_date']);
                 }
                 $empleaveDatesArray = array_merge($empleaveDatesArray, $leaveDatesArray);
             }
         }
         //End
         //To get default not working days(saturday and sunday)
         if ($emp_dept_id != '' && $emp_dept_id != NULL) {
             $weekendDetailsArr = $this->getWeekend($hidstartweek_date, $hidendweek_date, $emp_dept_id);
         }
         //End
         if (isset($holidayDatesArr) && count($holidayDatesArr) > 0) {
             foreach ($holidayDatesArr as $holidayDate) {
                 if (in_array($holidayDate, $weekDatesArray)) {
                     $holDates[] = $holidayDate;
                 }
             }
         }
         if (isset($empleaveDatesArray) && count($empleaveDatesArray) > 0) {
             foreach ($empleaveDatesArray as $empleaveDate) {
                 if (in_array($empleaveDate, $weekDatesArray)) {
                     $leaveDates[] = $empleaveDate;
                 }
             }
         }
         if (isset($weekendDetailsArr) && count($weekendDetailsArr) > 0) {
             foreach ($weekendDetailsArr as $weekendDate) {
                 if (in_array($weekendDate, $weekDatesArray)) {
                     $weekendDates[] = $weekendDate;
                 }
             }
         }
         $totalDaysArray = array();
         $totalDaysArray = array_merge($submittedtsdates, $holDates, $leaveDates, $weekendDates);
         $emptyDataDatesArray = array();
         $emptyDataDatesArray = array_diff($weekDatesArray, $totalDaysArray);
         if (count($emptyDataDatesArray) > 0) {
             $newemptyDataDatesArray = array();
             foreach ($emptyDataDatesArray as $edate) {
                 if ($edate >= $empJoiningDate) {
                     $newemptyDataDatesArray[] = $edate;
                 }
             }
             return $newemptyDataDatesArray;
         } else {
             return array();
         }
     }
 }