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 weekAction() { $usersModel = new Timemanagement_Model_Users(); $storage = new Zend_Auth_Storage_Session(); $now = new DateTime(); $data = $storage->read(); $selYrMon = $this->_getParam('selYrMon'); $week = $this->_getParam('week') != '' ? $this->_getParam('week') : 1; $calWeek = $this->_getParam('calWeek'); $timeFlag = $this->_getParam('flag'); $selDay = $this->_getParam('day'); if ($data->id == 1) { $this->_redirect('error'); } $selYrMon = $selYrMon != '' ? $selYrMon : $now->format('Y-m'); $yrMon = explode('-', $selYrMon); if ($timeFlag == 'time' && $selYrMon == $now->format('Y-m') && $calWeek == '') { $calWeek = strftime('%U', strtotime($selYrMon . '-' . $now->format('d'))); $startCalWeek = strftime('%U', strtotime($selYrMon . '-01')); $week = $calWeek - $startCalWeek + 1; } $empDoj = $usersModel->getEmployeeDoj($data->id); $selYrMonArray = explode('-', $selYrMon); if ($selDay != '') { $calWeek = strftime('%U', strtotime($selYrMon . '-' . $selDay)); $startCalWeek = strftime('%U', strtotime($selYrMon . '-01')); $week = $calWeek - $startCalWeek + 1; } else { if ($calWeek == '') { $calWeek = strftime('%U', strtotime($selYrMon . '-01')); } } $myTsModel = new Timemanagement_Model_MyTimesheet(); if ($timeFlag == 'time') { $myTsWeekData = $myTsModel->getWeeklyTimesheetData($data->id, $selYrMonArray[0], $selYrMonArray[1], $week); } else { $myTsWeekData = $myTsModel->getWeeklyTimesheetData($data->id, $selYrMonArray[0], $selYrMonArray[1], $week, 'view'); } $empHolidaysWeekendsData = $usersModel->getEmployeeHolidaysNWeekends($data->id, $yrMon[0], $yrMon[1], $calWeek); $startDate = date("Y-m-d", strtotime("{$yrMon[0]}-W{$calWeek}-7")); $endDate = date("Y-m-d", strtotime('next saturday', strtotime($startDate))); $empLeavesData = $usersModel->getEmpLeaves($data->id, $startDate, $endDate, 'all'); $weekNotes = $myTsModel->getWeekNotes($data->id, $selYrMonArray[0], $selYrMonArray[1], $week); $weekDaysStatus = $myTsModel->getWeekDaysStatus($data->id, $selYrMonArray[0], $selYrMonArray[1], $week); $weekDaysProjStatus = $myTsModel->getWeekDaysProjStatus($data->id, $selYrMonArray[0], $selYrMonArray[1], $week); $noOfDaysMonth = date("t", mktime(0, 0, 0, $selYrMonArray[1], 1, $selYrMonArray[0])); $cronStartDay = ""; $cronEndDay = ""; $mon = $yrMon[1] + 1; $yr = $mon == 12 ? $selYrMonArray[0] + 1 : $selYrMonArray[0]; if ($selDay != '') { $this->view->selDay = date("D", strtotime($selYrMon . '-' . $selDay)); } $this->view->empDoj = $empDoj['date_of_joining']; $this->view->selYrMon = $selYrMon; $this->view->selWeek = $week; $this->view->myTsWeekData = $myTsWeekData; $this->view->weekNotesData = $weekNotes; $this->view->empHolidaysWeekends = $empHolidaysWeekendsData[0]; $this->view->leavesData = $empLeavesData; $this->view->weekDaysStatus = $weekDaysStatus; $this->view->weekDaysProjStatus = $weekDaysProjStatus; $this->view->cronStartDay = $cronStartDay; $this->view->cronEndDay = $cronEndDay; //START code to show pending weeks for submit in current month $projmodel = new Timemanagement_Model_Projects(); $prevweeks = $projmodel->getprevmonthweeks(date('Y-m'), date('d')); /*Leave request code starts*/ $auth = Zend_Auth::getInstance(); if ($auth->hasIdentity()) { $loginUserId = $auth->getStorage()->read()->id; } $leaverequestform = new Default_Form_leaverequest(); $leaverequestform->setAttrib('action', BASE_URL . 'leaverequest'); $leaverequestmodel = new Default_Model_Leaverequest(); $employeeleavetypemodel = new Default_Model_Employeeleavetypes(); $leavemanagementmodel = new Default_Model_Leavemanagement(); $usersmodel = new Default_Model_Users(); $employeesmodel = new Default_Model_Employees(); $weekdaysmodel = new Default_Model_Weekdays(); $holidaydatesmodel = new Default_Model_Holidaydates(); $msgarray = array(); $dateofjoiningArr = array(); $holidayDateslistArr = array(); $rMngr = 'No'; $availableleaves = ''; $rep_mang_id = ''; $employeeemail = ''; $reportingManageremail = ''; $week_startday = ''; $week_endday = ''; $ishalf_day = ''; $userfullname = ''; $reportingmanagerName = ''; $businessunitid = ''; $hremailgroup = ''; /* Start Queries to fetch user details,reporting manager details and weekend details from users table and employees table */ if ($loginUserId != '' && $loginUserId != NULL) { $loggedinEmpId = $usersmodel->getUserDetailsByID($loginUserId); $loggedInEmployeeDetails = $employeesmodel->getLoggedInEmployeeDetails($loginUserId); if (!empty($loggedInEmployeeDetails)) { if ($loggedInEmployeeDetails[0]['date_of_joining'] != '') { $date = new DateTime($loggedInEmployeeDetails[0]['date_of_joining']); $datofjoiningtimestamp = $date->getTimestamp(); $dateofjoining = explode("-", $loggedInEmployeeDetails[0]['date_of_joining']); $year = $dateofjoining[0]; $month = $dateofjoining[1]; $day = $dateofjoining[2]; $dateofjoiningArr = array('year' => $year, 'month' => $month, 'day' => $day, 'datetimestamp' => $datofjoiningtimestamp); } $reportingmanagerId = $loggedInEmployeeDetails[0]['reporting_manager']; $employeeDepartmentId = $loggedInEmployeeDetails[0]['department_id']; $employeeEmploymentStatusId = $loggedInEmployeeDetails[0]['emp_status_id']; $employeeHolidayGroupId = $loggedInEmployeeDetails[0]['holiday_group']; $reportingManagerDetails = $usersmodel->getUserDetailsByID($reportingmanagerId); $weekendDatailsArr = $leavemanagementmodel->getWeekendDetails($employeeDepartmentId); $employeeemail = $loggedinEmpId[0]['emailaddress']; $userfullname = $loggedinEmpId[0]['userfullname']; $businessunitid = $loggedInEmployeeDetails[0]['businessunit_id']; if (!empty($reportingManagerDetails)) { $leaverequestform->rep_mang_id->setValue($reportingManagerDetails[0]['userfullname']); $reportingManageremail = $reportingManagerDetails[0]['emailaddress']; $reportingmanagerName = $reportingManagerDetails[0]['userfullname']; $rep_mang_id = $reportingManagerDetails[0]['id']; $rMngr = 'Yes'; } else { $msgarray['rep_mang_id'] = 'Reporting manager is not assigned yet. Please contact your HR.'; } if (!empty($weekendDatailsArr)) { $week_startday = $weekendDatailsArr[0]['weekendstartday']; $week_endday = $weekendDatailsArr[0]['weekendday']; $ishalf_day = $weekendDatailsArr[0]['is_halfday']; $isskip_holidays = $weekendDatailsArr[0]['is_skipholidays']; } else { $msgarray['from_date'] = 'Leave management options are not configured yet.'; $msgarray['to_date'] = 'Leave management options are not configured yet.'; } if ($employeeHolidayGroupId != '' && $employeeHolidayGroupId != NULL) { $holidayDateslistArr = $holidaydatesmodel->getHolidayDatesListForGroup($employeeHolidayGroupId); } if (defined('LV_HR_' . $businessunitid)) { $hremailgroup = 'hremailgroupexists'; } else { $hremailgroup = ''; } /* Search Filters */ $isReportingManagerFlag = 'false'; $searchRepFlag = 'false'; $searchMeFlag = 'true'; $filter = $this->_request->getParam('filter'); if (!empty($filter)) { if (in_array(2, $filter)) { $searchRepFlag = 'true'; } if (in_array(1, $filter)) { $searchMeFlag = 'true'; } else { $searchMeFlag = 'false'; } } if ($searchMeFlag == 'true') { $leaverequestdetails = $leaverequestmodel->getUserApprovedOrPendingLeavesData($loginUserId); } /* Start -For Checking if logged in user is reporting manager */ $isReportingManager = $employeesmodel->CheckIfReportingManager($loginUserId); if (!empty($isReportingManager) && $isReportingManager[0]['count'] > 0) { if ($searchRepFlag == 'true') { $managerrequestdetails = $leaverequestmodel->getManagerApprovedOrPendingLeavesData($loginUserId); } $isReportingManagerFlag = 'true'; } /* End */ $this->view->userfullname = $userfullname; $this->view->loggedinEmpId = $loggedinEmpId; $this->view->weekendDatailsArr = $weekendDatailsArr; $this->view->reportingManagerDetails = $reportingManagerDetails; $this->view->rMngr = $rMngr; $this->view->hremailgroup = $hremailgroup; $this->view->dateofjoiningArr = $dateofjoiningArr; $this->view->leaverequestdetails = !empty($leaverequestdetails) ? $leaverequestdetails : array(); $this->view->holidayDateslistArr = $holidayDateslistArr; $this->view->managerrequestdetails = !empty($managerrequestdetails) ? $managerrequestdetails : array(); $this->view->isReportingManagerFlag = $isReportingManagerFlag; $this->view->searchRepFlag = $searchRepFlag; $this->view->searchMeFlag = $searchMeFlag; } else { $msgarray['rep_mang_id'] = 'Reporting manager is not assigned yet. Please contact your HR.'; $msgarray['from_date'] = 'Leave management options are not configured yet.'; $msgarray['to_date'] = 'Leave management options are not configured yet.'; } } /* End */ /* Start Query to fetch and build multioption for Leavetype dropdown */ $leavetype = $employeeleavetypemodel->getactiveleavetype(); if (!empty($leavetype)) { if (sizeof($leavetype) > 0) { foreach ($leavetype as $leavetyperes) { $leaverequestform->leavetypeid->addMultiOption($leavetyperes['id'] . '!@#' . $leavetyperes['numberofdays'] . '!@#' . utf8_encode($leavetyperes['leavetype']), utf8_encode($leavetyperes['leavetype'])); } } } else { $msgarray['leavetypeid'] = ' Leave types are not configured yet.'; } $this->view->leavetype = $leavetype; /* End */ /* START Query to get the number of available leaves for the employee */ $getavailbaleleaves = $leaverequestmodel->getAvailableLeaves($loginUserId); if (!empty($getavailbaleleaves)) { $leaverequestform->no_of_days->setValue($getavailbaleleaves[0]['remainingleaves']); $availableleaves = $getavailbaleleaves[0]['remainingleaves']; } else { $msgarray['no_of_days'] = 'You have not been allotted leaves for this financial year. Please contact your HR.'; } $this->view->getavailbaleleaves = $getavailbaleleaves; /* END */ $this->view->form = $leaverequestform; $this->view->msgarray = $msgarray; $this->view->loginUserId = $loginUserId; $this->view->messages = $this->_helper->flashMessenger->getMessages(); /*leave request code ends*/ if ($timeFlag != '') { $this->_helper->viewRenderer('entertime'); } }
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 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(); } } }