public function calculatebusinessdays($fromDate, $toDate) { $auth = Zend_Auth::getInstance(); if ($auth->hasIdentity()) { $loginUserId = $auth->getStorage()->read()->id; } $noOfDays = 0; $weekDay = ''; $employeeDepartmentId = ''; $employeeGroupId = ''; $weekend1 = ''; $weekend2 = ''; $holidayDatesArr = array(); //Calculating the no of days in b/w from date & to date with out taking weekend & holidays.... $employeesmodel = new Default_Model_Employees(); $leavemanagementmodel = new Default_Model_Leavemanagement(); $holidaydatesmodel = new Default_Model_Holidaydates(); $loggedInEmployeeDetails = $employeesmodel->getLoggedInEmployeeDetails($loginUserId); if (!empty($loggedInEmployeeDetails)) { $employeeDepartmentId = $loggedInEmployeeDetails[0]['department_id']; $employeeGroupId = $loggedInEmployeeDetails[0]['holiday_group']; if ($employeeDepartmentId != '' && $employeeDepartmentId != NULL) { $weekendDetailsArr = $leavemanagementmodel->getWeekendNamesDetails($employeeDepartmentId); } if (!empty($weekendDetailsArr)) { if ($weekendDetailsArr[0]['is_skipholidays'] == 1 && isset($employeeGroupId) && $employeeGroupId != '') { $holidayDateslistArr = $holidaydatesmodel->getHolidayDatesListForGroup($employeeGroupId); if (!empty($holidayDateslistArr)) { for ($i = 0; $i < sizeof($holidayDateslistArr); $i++) { $holidayDatesArr[$i] = $holidayDateslistArr[$i]['holidaydate']; } } } $weekend1 = $weekendDetailsArr[0]['daystartname']; $weekend2 = $weekendDetailsArr[0]['dayendname']; } $fromdate_obj = new DateTime($fromDate); $weekDay = $fromdate_obj->format('l'); while ($fromDate <= $toDate) { /*if(($weekDay != 'Saturday'||$weekDay != 'Sunday') && (!empty($holidayDates)) && (!in_array($fromDate,$holidayDates)))*/ if (count($holidayDatesArr) > 0) { if ($weekDay != $weekend1 && $weekDay != $weekend2 && !in_array($fromDate, $holidayDatesArr)) { $noOfDays++; } } else { if ($weekDay != $weekend1 && $weekDay != $weekend2) { $noOfDays++; } } $fromdate_obj->add(new DateInterval('P1D')); //Increment from date by one day... $fromDate = $fromdate_obj->format('Y-m-d'); $weekDay = $fromdate_obj->format('l'); } } return $noOfDays; }
public function calculatecalendardaysAction() { $auth = Zend_Auth::getInstance(); if ($auth->hasIdentity()) { $loginUserId = $auth->getStorage()->read()->id; } $noOfDays = 0; $weekDay = ''; $result['message'] = ''; $result['days'] = ''; $result['from_date_view'] = ''; $result['to_date_view'] = ''; $result['result'] = ''; $employeeDepartmentId = ''; $employeeGroupId = ''; $weekend1 = ''; $weekend2 = ''; $availableleaves = ''; $holidayDatesArr = array(); $fromDatejs = $this->_request->getParam('fromDate'); $fromDate = sapp_Global::change_date($fromDatejs, 'database'); $toDatejs = $this->_request->getParam('toDate'); $toDate = sapp_Global::change_date($toDatejs, 'database'); //Calculating the no of days in b/w from date & to date with out taking weekend & holidays.... $from_obj = new DateTime($fromDatejs); $from_date = $from_obj->format('Y-m-d'); $to_obj = new DateTime($toDatejs); $to_date = $to_obj->format('Y-m-d'); if ($to_date >= $from_date) { $employeesmodel = new Default_Model_Employees(); $leavemanagementmodel = new Default_Model_Leavemanagement(); $holidaydatesmodel = new Default_Model_Holidaydates(); $leaverequestmodel = new Default_Model_Leaverequest(); $loggedInEmployeeDetails = $employeesmodel->getLoggedInEmployeeDetails($loginUserId); $getavailbaleleaves = $leaverequestmodel->getAvailableLeaves($loginUserId); if (!empty($getavailbaleleaves)) { $availableleaves = $getavailbaleleaves[0]['remainingleaves']; } if (!empty($loggedInEmployeeDetails)) { $employeeDepartmentId = $loggedInEmployeeDetails[0]['department_id']; $employeeGroupId = $loggedInEmployeeDetails[0]['holiday_group']; if ($employeeDepartmentId != '' && $employeeDepartmentId != NULL) { $weekendDetailsArr = $leavemanagementmodel->getWeekendNamesDetails($employeeDepartmentId); } if (!empty($weekendDetailsArr)) { if ($weekendDetailsArr[0]['is_skipholidays'] == 1 && isset($employeeGroupId) && $employeeGroupId != '') { $holidayDateslistArr = $holidaydatesmodel->getHolidayDatesListForGroup($employeeGroupId); if (!empty($holidayDateslistArr)) { for ($i = 0; $i < sizeof($holidayDateslistArr); $i++) { $holidayDatesArr[$i] = $holidayDateslistArr[$i]['holidaydate']; } } } $weekend1 = $weekendDetailsArr[0]['daystartname']; $weekend2 = $weekendDetailsArr[0]['dayendname']; } $fromdate_obj = new DateTime($fromDate); $weekDay = $fromdate_obj->format('l'); while ($fromDate <= $toDate) { if (count($holidayDatesArr) > 0) { if ($weekDay != $weekend1 && $weekDay != $weekend2 && !in_array($fromDate, $holidayDatesArr)) { $noOfDays++; } } else { if ($weekDay != $weekend1 && $weekDay != $weekend2) { $noOfDays++; } } $fromdate_obj->add(new DateInterval('P1D')); //Increment from date by one day... $fromDate = $fromdate_obj->format('Y-m-d'); $weekDay = $fromdate_obj->format('l'); } } $result['result'] = 'success'; $result['days'] = $noOfDays; $result['message'] = ''; $result['loginUserId'] = $loginUserId; $result['availableleaves'] = $availableleaves; } $this->_helper->_json($result); }
public function getWeekend($startday, $endday, $dept_id) { $wkend_dates_arr = array(); $leavemanagementmodel = new Default_Model_Leavemanagement(); $weekendDetailsArr = $leavemanagementmodel->getWeekendNamesDetails($dept_id); if (!empty($weekendDetailsArr)) { $weekend_arr = array($weekendDetailsArr[0]['daystartname'], $weekendDetailsArr[0]['dayendname']); $wkend_dates_arr = array(); while ($startday <= $endday) { $nday = new DateTime($startday); if (in_array($nday->format('l'), $weekend_arr)) { $wkend_dates_arr[] = $startday; } $nday->add(new DateInterval('P1D')); $startday = $nday->format('Y-m-d'); } } return $wkend_dates_arr; }