Пример #1
0
 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);
 }
Пример #2
0
 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');
     }
 }
Пример #3
0
 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;
 }
Пример #4
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();
         }
     }
 }