Пример #1
0
 public function indexAction()
 {
     $auth = Zend_Auth::getInstance();
     if ($auth->hasIdentity()) {
         $loginUserId = $auth->getStorage()->read()->id;
         $loginuserRole = $auth->getStorage()->read()->emprole;
         $loginuserGroup = $auth->getStorage()->read()->group_id;
     }
     $id = $this->getRequest()->getParam('id');
     $callval = $this->getRequest()->getParam('call');
     if ($callval == 'ajaxcall') {
         $this->_helper->layout->disableLayout();
     }
     $leaverequestmodel = new Default_Model_Leaverequest();
     if ($this->getRequest()->getPost()) {
         //Grid Edit values
         $lblIDs[] = $this->_getParam('lblID', null);
         $txtControllerNos[] = $this->_getParam('txtConfigValues', null);
         $currRecord = 0;
         foreach ($lblIDs[0] as $lblID) {
             if ($lblID > 0) {
                 $updQuery = sprintf("update tbl_config set value = '%s' where id = %s;", $txtControllerNos[0][$currRecord], $lblID);
                 $leaverequestmodel->ExecuteUpdateQuery($updQuery);
                 $currRecord = $currRecord + 1;
             }
         }
         if ($currRecord > 0) {
             $this->_helper->getHelper("FlashMessenger")->addMessage(array("success" => "Configuration table data updated successfully."));
         }
         //for SD Admins
         $lblSDIDs[] = $this->_getParam('lblSDID', null);
         $txtSDAdmin1[] = $this->_getParam('txtSDAdmin1', null);
         $txtSDAdmin2[] = $this->_getParam('txtSDAdmin2', null);
         $currRecord1 = 0;
         foreach ($lblSDIDs[0] as $lblSDID) {
             if ($lblSDID > 0) {
                 $updQuery1 = sprintf("update main_sd_depts set Admin1=%s, Admin2=%s where id = %s;", $txtSDAdmin1[0][$currRecord1], $txtSDAdmin2[0][$currRecord1], $lblSDID);
                 $leaverequestmodel->ExecuteUpdateQuery($updQuery1);
                 $currRecord1 = $currRecord1 + 1;
             }
         }
         if ($currRecord1 > 0) {
             $this->_helper->getHelper("FlashMessenger")->addMessage(array("success" => "ServiceDesk table data updated successfully."));
         }
     }
     $this->view->allServiceDeskAdmins = $leaverequestmodel->getServiceDeskAdministrators();
     $this->view->allServiceDeskDepartments = $leaverequestmodel->getServiceDeskDepartments();
     $this->view->allConfigValues = $leaverequestmodel->getAllConfigValues();
     $this->view->messages = $this->_helper->flashMessenger->getMessages();
 }
Пример #2
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);
 }
 public function deleteAction()
 {
     $auth = Zend_Auth::getInstance();
     if ($auth->hasIdentity()) {
         $loginUserId = $auth->getStorage()->read()->id;
     }
     $id = $this->_request->getParam('objid');
     $messages['message'] = '';
     $actionflag = 3;
     if ($id) {
         $leaverequestmodel = new Default_Model_Leaverequest();
         $data = array('leavestatus' => 4);
         $where = array('id=?' => $id);
         $Id = $leaverequestmodel->SaveorUpdateLeaveRequest($data, $where);
         if ($Id == 'update') {
             $menuID = PENDINGLEAVES;
             $result = sapp_Global::logManager($menuID, $actionflag, $loginUserId, $id);
             $messages['message'] = 'Leave request cancelled.';
         } else {
             $messages['message'] = 'Leave request cannot be cancelled.';
         }
     } else {
         $messages['message'] = 'Leave request cannot be cancelled.';
     }
     $this->_helper->json($messages);
 }
Пример #4
0
    public function deleteAction()
    {
        $auth = Zend_Auth::getInstance();
        if ($auth->hasIdentity()) {
            $loginUserId = $auth->getStorage()->read()->id;
            $loginUserEmail = $auth->getStorage()->read()->emailaddress;
            $loginUserName = $auth->getStorage()->read()->userfullname;
        }
        $id = $this->_request->getParam('objid');
        $messages['message'] = '';
        $actionflag = 5;
        $businessunitid = '';
        $leavetypetext = '';
        if ($id) {
            $leaverequestmodel = new Default_Model_Leaverequest();
            $usersmodel = new Default_Model_Users();
            $employeesmodel = new Default_Model_Employees();
            $employeeleavetypesmodel = new Default_Model_Employeeleavetypes();
            $loggedInEmployeeDetails = $employeesmodel->getLoggedInEmployeeDetails($loginUserId);
            if ($loggedInEmployeeDetails[0]['businessunit_id'] != '') {
                $businessunitid = $loggedInEmployeeDetails[0]['businessunit_id'];
            }
            $dataarr = array('leavestatus' => 4, 'modifieddate' => gmdate("Y-m-d H:i:s"), 'modifiedby' => $loginUserId);
            $where = array('id=?' => $id);
            $Id = $leaverequestmodel->SaveorUpdateLeaveRequest($dataarr, $where);
            $data = $leaverequestmodel->getsinglePendingLeavesData($id);
            $data = $data[0];
            $appliedleavesdaycount = $data['appliedleavescount'];
            $to_date = $data['to_date'];
            $from_date = $data['from_date'];
            $reason = $data['reason'];
            $leavetypeid = $data['leavetypeid'];
            $repmngrnameArr = $usersmodel->getUserDetailsByID($data['rep_mang_id']);
            $reportingmanageremail = $repmngrnameArr[0]['emailaddress'];
            $reportingmanagername = $repmngrnameArr[0]['userfullname'];
            if ($Id == 'update') {
                $menuID = PENDINGLEAVES;
                $result = sapp_Global::logManager($menuID, $actionflag, $loginUserId, $id);
                /** MAILING CODE **/
                if ($to_date == '' || $to_date == NULL) {
                    $to_date = $from_date;
                }
                /* Mail to Employee */
                $options['subject'] = 'Leave request cancelled';
                $options['header'] = 'Leave Request';
                $options['toEmail'] = $loginUserEmail;
                $options['toName'] = $loginUserName;
                $options['message'] = '<div>Hi,</div>
								<div>The below leave(s) has been cancelled.</div>
								<div>
                <table width="100%" cellspacing="0" cellpadding="15" border="0" style="border:3px solid #BBBBBB; font-size:16px; font-family:Arial, Helvetica, sans-serif; margin:30px 0 30px 0;" bgcolor="#ffffff">
                      <tbody><tr>
                        <td width="28%" style="border-right:2px solid #BBBBBB;">Employee Name</td>
                        <td width="72%">' . $loginUserName . '</td>
                      </tr>
                      <tr bgcolor="#e9f6fc">
                        <td style="border-right:2px solid #BBBBBB;">No. of Day(s)</td>
                        <td>' . $appliedleavesdaycount . '</td>
                      </tr>
                      <tr>
                        <td style="border-right:2px solid #BBBBBB;">From</td>
                        <td>' . $from_date . '</td>
                      </tr>
                      <tr bgcolor="#e9f6fc">
                        <td style="border-right:2px solid #BBBBBB;">To</td>
                        <td>' . $to_date . '</td>
            	     </tr>
                      <tr bgcolor="#e9f6fc">
                        <td style="border-right:2px solid #BBBBBB;">Reason for Leave</td>
                        <td>' . $reason . '</td>
                  </tr>
                </tbody></table>

            </div>
            <div style="padding:20px 0 10px 0;">Please <a href="' . BASE_URL . '/index/popup" target="_blank" style="color:#b3512f;">click here</a> to login and check the leave details.</div>';
                $result = sapp_Global::_sendEmail($options);
                /* End */
                /* Mail to Reporting Manager */
                $options['subject'] = 'Leave request cancelled';
                $options['header'] = 'Leave Request';
                $options['toEmail'] = $reportingmanageremail;
                $options['toName'] = $reportingmanagername;
                $options['message'] = '<div>Hi,</div>
								<div>The below leave(s) has been cancelled.</div>
								<div>
                <table width="100%" cellspacing="0" cellpadding="15" border="0" style="border:3px solid #BBBBBB; font-size:16px; font-family:Arial, Helvetica, sans-serif; margin:30px 0 30px 0;" bgcolor="#ffffff">
                      <tbody><tr>
                        <td width="28%" style="border-right:2px solid #BBBBBB;">Employee Name</td>
                        <td width="72%">' . $loginUserName . '</td>
                      </tr>
                      <tr bgcolor="#e9f6fc">
                        <td style="border-right:2px solid #BBBBBB;">No. of Day(s)</td>
                        <td>' . $appliedleavesdaycount . '</td>
                      </tr>
                      <tr>
                        <td style="border-right:2px solid #BBBBBB;">From</td>
                        <td>' . $from_date . '</td>
                      </tr>
                      <tr bgcolor="#e9f6fc">
                        <td style="border-right:2px solid #BBBBBB;">To</td>
                        <td>' . $to_date . '</td>
            	     </tr>
                      <tr bgcolor="#e9f6fc">
                        <td style="border-right:2px solid #BBBBBB;">Reason for Leave</td>
                        <td>' . $reason . '</td>
                  </tr>
                </tbody></table>

            </div>
            <div style="padding:20px 0 10px 0;">Please <a href="' . BASE_URL . '/index/popup" target="_blank" style="color:#b3512f;">click here</a> to login and check the leave details.</div>';
                $result = sapp_Global::_sendEmail($options);
                /* End */
                /* Mail to HR */
                if (defined('LV_HR_' . $businessunitid) && $businessunitid != '') {
                    $options['subject'] = 'Leave request cancelled';
                    $options['header'] = 'Leave Request';
                    $options['toEmail'] = constant('LV_HR_' . $businessunitid);
                    $options['toName'] = 'Leave management';
                    $options['message'] = '<div>Hi,</div>
								<div>The below leave(s) has been cancelled by the Employee.</div>
								<div>
                <table width="100%" cellspacing="0" cellpadding="15" border="0" style="border:3px solid #BBBBBB; font-size:16px; font-family:Arial, Helvetica, sans-serif; margin:30px 0 30px 0;" bgcolor="#ffffff">
                      <tbody><tr>
                        <td width="28%" style="border-right:2px solid #BBBBBB;">Employee Name</td>
                        <td width="72%">' . $loginUserName . '</td>
                      </tr>
                      <tr bgcolor="#e9f6fc">
                        <td style="border-right:2px solid #BBBBBB;">No. of Day(s)</td>
                        <td>' . $appliedleavesdaycount . '</td>
                      </tr>
                      <tr>
                        <td style="border-right:2px solid #BBBBBB;">From</td>
                        <td>' . $from_date . '</td>
                      </tr>
                      <tr bgcolor="#e9f6fc">
                        <td style="border-right:2px solid #BBBBBB;">To</td>
                        <td>' . $to_date . '</td>
            	     </tr>
                      <tr bgcolor="#e9f6fc">
                        <td style="border-right:2px solid #BBBBBB;">Reason for Leave</td>
                        <td>' . $reason . '</td>
                  </tr>
                </tbody></table>

            </div>
            <div style="padding:20px 0 10px 0;">Please <a href="' . BASE_URL . '/index/popup" target="_blank" style="color:#b3512f;">click here</a> to login and check the leave details.</div>';
                    $options['cron'] = 'yes';
                    $result = sapp_Global::_sendEmail($options);
                }
                $messages['message'] = 'Leave request cancelled';
                $messages['msgtype'] = 'success';
            } else {
                $messages['message'] = 'Leave request cannot be cancelled';
                $messages['msgtype'] = 'error';
            }
        } else {
            $messages['message'] = 'Leave request cannot be cancelled';
            $messages['msgtype'] = 'error';
        }
        $this->_helper->json($messages);
    }
 public function swipeadminAction()
 {
     $dataExists = $_ABPFound = 0;
     $resourceData = array();
     //$swipestartdate = "26-04-2015";
     //$swipeenddate = "26-04-2015";
     $selectedResource = null;
     $swipestartdate = date('d-m-Y');
     $swipeenddate = date('d-m-Y');
     $auth = Zend_Auth::getInstance();
     if ($auth->hasIdentity()) {
         $loginUserId = $auth->getStorage()->read()->id;
         $loginuserRole = $auth->getStorage()->read()->emprole;
         $loginuserGroup = $auth->getStorage()->read()->group_id;
     }
     $isValidUser = "******";
     $leaverequestmodel = new Default_Model_Leaverequest();
     $eligibleEmployeeIDs = $dateofjoining = explode(",", $leaverequestmodel->getConfigValue(SWIPEADMINCONFIGKEY));
     if (in_array($loginUserId, $eligibleEmployeeIDs)) {
         $isValidUser = "******";
     }
     $repModel = new Default_Model_Servicerequests();
     if ($this->getRequest()->getPost()) {
         $swipestartdate = $this->_getParam('swipestartdate', null);
         $selectedResource = $this->_getParam('resource_id', null);
         if ($selectedResource == null) {
             $selectedResource = $loginUserId;
         }
         //Grid Edit values
         $lblID[] = $this->_getParam('lblID', null);
         $txtControllerNo[] = $this->_getParam('txtControllerNo', null);
         $txtCardNo[] = $this->_getParam('txtCardNo', null);
         $txtChannelNo[] = $this->_getParam('txtChannelNo', null);
         $txtType[] = $this->_getParam('txtType', null);
         $txtaDateTime[] = $this->_getParam('txtaDateTime', null);
         $txtTransCount[] = $this->_getParam('txtTransCount', null);
         $txtReadPointer[] = $this->_getParam('txtReadPointer', null);
         $txtsLogRead[] = $this->_getParam('txtsLogRead', null);
         $txttransactionId[] = $this->_getParam('txttransactionId', null);
         $chkRemove[] = $this->_getParam('chkRemove', null);
         $repModel->UpdateSwipeTransactionLog($selectedResource, $swipestartdate, $loginUserId, $lblID, $txtControllerNo, $txtCardNo, $txtChannelNo, $txtType, $txtaDateTime, $txtTransCount, $txtReadPointer, $txtsLogRead, $txttransactionId, $chkRemove);
         //Grid Add values
         $txtInsControllerNo[] = $this->_getParam('txtInsControllerNo', null);
         $txtInsCardNo[] = $this->_getParam('txtInsCardNo', null);
         $txtInsChannelNo[] = $this->_getParam('txtInsChannelNo', null);
         $txtInsType[] = $this->_getParam('txtInsType', null);
         $txtInsaDateTime[] = $this->_getParam('txtInsaDateTime', null);
         $txtInsTransCount[] = $this->_getParam('txtInsTransCount', null);
         $txtInsReadPointer[] = $this->_getParam('txtInsReadPointer', null);
         $txtInssLogRead[] = $this->_getParam('txtInssLogRead', null);
         $txtInstransactionId[] = $this->_getParam('txtInstransactionId', null);
         $repModel->InsertToSwipeTransactionLog($selectedResource, $loginUserId, $txtInsControllerNo, $txtInsCardNo, $txtInsChannelNo, $txtInsType, $txtInsaDateTime, $txtInsTransCount, $txtInsReadPointer, $txtInssLogRead, $txtInstransactionId);
     }
     if ($selectedResource == null) {
         $selectedResource = $loginUserId;
     }
     $swipeTransactions = $repModel->getSwipeDayTransactionsLog($swipestartdate, $selectedResource);
     $resourceData = $repModel->getValidSwipeResourceData();
     //$resourceData = $repModel->getResourceData($selectedResource, $loginuserRole, $loginuserGroup);
     $dataExists = count($swipeTransactions);
     $this->view->isEligible = $isValidUser;
     $this->view->abperror = $this->isABPFound($swipeTransactions);
     $this->view->resourceData = $resourceData;
     $this->view->dataExists = $dataExists;
     $this->view->selDate = $swipestartdate;
     $this->view->selectedResource = $selectedResource;
     $this->view->swipeTransactions = $swipeTransactions;
     //$this->view->swipeTransactionsGrid = $this->ConvertArrayToGrid(sprintf("Swipe Transaction Log on : %s", $swipestartdate), $swipeTransactions);
     $this->view->messages = $this->_helper->flashMessenger->getMessages();
 }
Пример #6
0
 /**
  * 
  * @param type $data
  * @param type $call
  * @return string
  */
 public static function ess_header($data, $call)
 {
     $auth = Zend_Auth::getInstance();
     if ($auth->hasIdentity()) {
         $loginUserId = $auth->getStorage()->read()->id;
     }
     $leaverequestmodel = new Default_Model_Leaverequest();
     $isSwipeAdminValidUser = $isLeaveAdminValidUser = "******";
     //for Swipe Admin
     $eligibleEmployeeIDs = $dateofjoining = explode(",", $leaverequestmodel->getConfigValue(SWIPEADMINCONFIGKEY));
     if (in_array($loginUserId, $eligibleEmployeeIDs)) {
         $isSwipeAdminValidUser = "******";
     }
     //for Exceptions Admin
     $LeaveAdminValidUsers = $dateofjoining = explode(",", $leaverequestmodel->getConfigValue(EMPLOYEEVACATIONEXCEPTIONSADMIN));
     if (in_array($loginUserId, $LeaveAdminValidUsers)) {
         $isLeaveAdminValidUser = "******";
     }
     $myteam_url = BASE_URL . "/commonreports/leavecardreport";
     $deltateam_url = BASE_URL . "/commonreports/swipereport";
     $leaveadmin_url = BASE_URL . "/manageremployeevacations/admin";
     $swipeadmin_url = BASE_URL . "/commonreports/swipeadmin";
     $leaveswipediscrepancyreport_url = BASE_URL . "/commonreports/leaveswipediscrepancyreport";
     $interviewcalendar_url = BASE_URL . "/commonreports/interviewcalendar";
     $html = '';
     $html .= '        <li class="acc_li"><span id="acc_li_toggle_' . MYEMPLOYEES . '" class="acc_li_toggle" onclick="togglesubmenus(' . MYEMPLOYEES . ')"><b>Reports</b></span>';
     $html .= '            <ul>';
     $html .= '                <li menu-url="' . $myteam_url . '" parent-div="div_mchilds_' . EMPLOYEESELFSERVICE . '" super-parent="main_parent_' . EMPLOYEESELFSERVICE . '"  class="clickable_menu" primary_parent="' . MYEMPLOYEES . '"><a href="' . ($call == 'menusettings' ? "javascript:void(0);" : $myteam_url) . '" ><i class="span_sermenu">Leave Card Report</i></a></li>';
     if ($isLeaveAdminValidUser == "1") {
         $html .= '<li menu-url="' . $leaveadmin_url . '" parent-div="div_mchilds_' . EMPLOYEESELFSERVICE . '" super-parent="main_parent_' . EMPLOYEESELFSERVICE . '"  class="clickable_menu" primary_parent="' . MYEMPLOYEES . '"><a href="' . ($call == 'menusettings' ? "javascript:void(0);" : $leaveadmin_url) . '" ><i class="span_sermenu">Leave Exception Administration</i> </a></li>';
     }
     //Swipe Report option will be uncommented once data is loaded
     //$html .= '                <li menu-url="' . $deltateam_url . '" parent-div="div_mchilds_' . EMPLOYEESELFSERVICE . '" super-parent="main_parent_' . EMPLOYEESELFSERVICE . '"  class="clickable_menu" primary_parent="' . MYEMPLOYEES . '"><a href="' . (($call == 'menusettings') ? "javascript:void(0);" : $deltateam_url) . '" ><i class="span_sermenu">Swipe Report</i> </a></li>';
     if ($isSwipeAdminValidUser == "1") {
         $html .= '<li menu-url="' . $swipeadmin_url . '" parent-div="div_mchilds_' . EMPLOYEESELFSERVICE . '" super-parent="main_parent_' . EMPLOYEESELFSERVICE . '"  class="clickable_menu" primary_parent="' . MYEMPLOYEES . '"><a href="' . ($call == 'menusettings' ? "javascript:void(0);" : $swipeadmin_url) . '" ><i class="span_sermenu">Swipe Administration</i> </a></li>';
     }
     //Swipe Report option will be uncommented once data is loaded
     //$html .= '                <li menu-url="' . $leaveswipediscrepancyreport_url . '" parent-div="div_mchilds_' . EMPLOYEESELFSERVICE . '" super-parent="main_parent_' . EMPLOYEESELFSERVICE . '"  class="clickable_menu" primary_parent="' . MYEMPLOYEES . '"><a href="' . (($call == 'menusettings') ? "javascript:void(0);" : $leaveswipediscrepancyreport_url) . '" ><i class="span_sermenu">Leave-Swipe Discrepancy Report</i> </a></li>';
     $html .= '                <li menu-url="' . $interviewcalendar_url . '" parent-div="div_mchilds_' . EMPLOYEESELFSERVICE . '" super-parent="main_parent_' . EMPLOYEESELFSERVICE . '"  class="clickable_menu" primary_parent="' . MYEMPLOYEES . '"><a href="' . ($call == 'menusettings' ? "javascript:void(0);" : $interviewcalendar_url) . '" ><i class="span_sermenu">Interview Calendar</i> </a></li>';
     $html .= '            </ul>';
     $html .= '        </li>';
     return $html;
 }
    public function save($managerleaverequestform, $appliedleavescount, $employeeemail, $employeeid, $userfullname, $from_date, $to_date, $reason, $businessunitid, $leavetypeid)
    {
        $auth = Zend_Auth::getInstance();
        if ($auth->hasIdentity()) {
            $loginUserId = $auth->getStorage()->read()->id;
        }
        if ($managerleaverequestform->isValid($this->_request->getPost())) {
            $id = $this->_request->getParam('id');
            $managerstatus = $this->_request->getParam('managerstatus');
            $comments = $this->_request->getParam('comments');
            $date = new Zend_Date();
            $leaverequestmodel = new Default_Model_Leaverequest();
            $employeeleavetypesmodel = new Default_Model_Employeeleavetypes();
            $actionflag = '';
            $tableid = '';
            $status = '';
            $messagestr = '';
            $leavetypetext = '';
            $leavetypeArr = $employeeleavetypesmodel->getLeavetypeDataByID($leavetypeid);
            if ($managerstatus == 1 && !empty($leavetypeArr)) {
                if ($leavetypeArr[0]['leavepredeductable'] == 1) {
                    $updateemployeeleave = $leaverequestmodel->updateemployeeleaves($appliedleavescount, $employeeid);
                }
                $status = 2;
                $messagestr = "Leave request approved.";
                $leavetypetext = $leavetypeArr[0]['leavetype'];
            } else {
                if ($managerstatus == 2) {
                    $status = 3;
                    $messagestr = "Leave request rejected.";
                }
            }
            if ($managerstatus == 1 || $managerstatus == 2) {
                $data = array('leavestatus' => $status, 'approver_comments' => $comments, 'modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s"));
                if ($id != '') {
                    $where = array('id=?' => $id);
                    $actionflag = 2;
                } else {
                    $data['createdby'] = $loginUserId;
                    $data['createddate'] = gmdate("Y-m-d H:i:s");
                    $data['isactive'] = 1;
                    $where = '';
                    $actionflag = 1;
                }
                $Id = $leaverequestmodel->SaveorUpdateLeaveRequest($data, $where);
                if ($Id == 'update') {
                    $tableid = $id;
                    $this->_helper->getHelper("FlashMessenger")->addMessage($messagestr);
                } else {
                    $tableid = $Id;
                    $this->_helper->getHelper("FlashMessenger")->addMessage($messagestr);
                }
                /** MAILING CODE **/
                if ($to_date == '' || $to_date == NULL) {
                    $to_date = $from_date;
                }
                /* Mail to Employee */
                $options['header'] = 'Leave Request';
                $options['toEmail'] = $employeeemail;
                $options['toName'] = $userfullname;
                if ($messagestr == 'Leave request approved.') {
                    $options['subject'] = 'Leave request approved';
                    $options['message'] = '<div>Hi,</div><div>The below leave(s) has been approved.</div>';
                } else {
                    $options['subject'] = 'Leave request rejected';
                    $options['message'] = '<div>Hi,</div><div>The below leave(s) has been rejected. </div>';
                }
                $options['message'] .= '<div>
                <table width="100%" cellspacing="0" cellpadding="15" border="0" style="border:3px solid #BBBBBB; font-size:16px; font-family:Arial, Helvetica, sans-serif; margin:30px 0 30px 0;" bgcolor="#ffffff">
                      <tbody><tr>
                        <td width="28%" style="border-right:2px solid #BBBBBB;">Employee Name</td>
                        <td width="72%">' . $userfullname . '</td>
                      </tr>
                      <tr bgcolor="#e9f6fc">
                        <td style="border-right:2px solid #BBBBBB;">No. of Day(s)</td>
                        <td>' . $appliedleavescount . '</td>
                      </tr>
                      <tr>
                        <td style="border-right:2px solid #BBBBBB;">From</td>
                        <td>' . $from_date . '</td>
                      </tr>
                      <tr bgcolor="#e9f6fc">
                        <td style="border-right:2px solid #BBBBBB;">To</td>
                        <td>' . $to_date . '</td>
            	     </tr>
                      <tr bgcolor="#e9f6fc">
                        <td style="border-right:2px solid #BBBBBB;">Reason for Leave</td>
                        <td>' . $reason . '</td>
                  </tr>
                </tbody></table>

            </div>
            <div style="padding:20px 0 10px 0;">Please <a href="' . BASE_URL . '/index/popup" target="_blank" style="color:#b3512f;">click here</a> to login and check the leave details.</div>';
                $result = sapp_Global::_sendEmail($options);
                /* END */
                /* Mail to HR */
                if (defined('LV_HR_' . $businessunitid) && $businessunitid != '') {
                    $options['header'] = 'Leave Request';
                    $options['toEmail'] = constant('LV_HR_' . $businessunitid);
                    $options['toName'] = 'Leave Management';
                    if ($messagestr == 'Leave request approved.') {
                        $options['subject'] = 'Leave request approved';
                        $options['message'] = '<div>Hi,</div><div>The below leave(s) has been approved.</div>';
                    } else {
                        $options['subject'] = 'Leave request rejected	';
                        $options['message'] = '<div>Hi,</div><div>The below leave(s) has been rejected.</div>';
                    }
                    $options['message'] .= '<div>
                <table width="100%" cellspacing="0" cellpadding="15" border="0" style="border:3px solid #BBBBBB; font-size:16px; font-family:Arial, Helvetica, sans-serif; margin:30px 0 30px 0;" bgcolor="#ffffff">
                      <tbody>
	                      <tr>
	                        <td width="28%" style="border-right:2px solid #BBBBBB;">Employee Name</td>
	                        <td width="72%">' . $userfullname . '</td>
	                      </tr>
	                      <tr bgcolor="#e9f6fc">
	                        <td style="border-right:2px solid #BBBBBB;">No. of Day(s)</td>
	                        <td>' . $appliedleavescount . '</td>
	                      </tr>
	                      <tr>
	                        <td style="border-right:2px solid #BBBBBB;">From</td>
	                        <td>' . $from_date . '</td>
	                      </tr>
	                      <tr bgcolor="#e9f6fc">
	                        <td style="border-right:2px solid #BBBBBB;">To</td>
	                        <td>' . $to_date . '</td>
     	            	  </tr>
		    	          <tr>
	    	                 <td style="border-right:2px solid #BBBBBB;">Leave Type</td>
	                        <td>' . ucfirst($leavetypetext) . '</td>
	                  	  </tr>
	                      <tr bgcolor="#e9f6fc">
	                        <td style="border-right:2px solid #BBBBBB;">Reason for Leave</td>
	                        <td>' . $reason . '</td>
	                      </tr>
                		</tbody>
                </table>

            </div>
            <div style="padding:20px 0 10px 0;">Please <a href="' . BASE_URL . '/index/popup" target="_blank" style="color:#b3512f;">click here</a> to login and check the leave details.</div>';
                    $result = sapp_Global::_sendEmail($options);
                }
                /* END */
            }
            $menuID = MANAGEREMPLOYEEVACATIONS;
            $result = sapp_Global::logManager($menuID, $actionflag, $loginUserId, $tableid);
            $this->_redirect('manageremployeevacations');
        } else {
            $messages = $managerleaverequestform->getMessages();
            foreach ($messages as $key => $val) {
                foreach ($val as $key2 => $val2) {
                    $msgarray[$key] = $val2;
                    break;
                }
            }
            return $msgarray;
        }
    }
 public function deleteAction()
 {
     $auth = Zend_Auth::getInstance();
     if ($auth->hasIdentity()) {
         $loginUserId = $auth->getStorage()->read()->id;
         $loginUserEmail = $auth->getStorage()->read()->emailaddress;
         $loginUserName = $auth->getStorage()->read()->userfullname;
     }
     $id = $this->_request->getParam('objid');
     $messages['message'] = '';
     $actionflag = 5;
     $businessunitid = '';
     $leavetypetext = '';
     if ($id) {
         $leaverequestmodel = new Default_Model_Leaverequest();
         $usersmodel = new Default_Model_Users();
         $employeesmodel = new Default_Model_Employees();
         $menumodel = new Default_Model_Menu();
         $employeeleavetypesmodel = new Default_Model_Employeeleavetypes();
         $loggedInEmployeeDetails = $employeesmodel->getLoggedInEmployeeDetails($loginUserId);
         if ($loggedInEmployeeDetails[0]['businessunit_id'] != '') {
             $businessunitid = $loggedInEmployeeDetails[0]['businessunit_id'];
         }
         $dataarr = array('leavestatus' => 4, 'modifieddate' => gmdate("Y-m-d H:i:s"), 'modifiedby' => $loginUserId);
         $where = array('id=?' => $id);
         $Id = $leaverequestmodel->SaveorUpdateLeaveRequest($dataarr, $where);
         $data = $leaverequestmodel->getsinglePendingLeavesData($id);
         $data = $data[0];
         $appliedleavesdaycount = $data['appliedleavescount'];
         $to_date = $data['to_date'];
         $from_date = $data['from_date'];
         $reason = $data['reason'];
         $leavetypeid = $data['leavetypeid'];
         $repmngrnameArr = $usersmodel->getUserDetailsByID($data['rep_mang_id']);
         $reportingmanageremail = $repmngrnameArr[0]['emailaddress'];
         $reportingmanagername = $repmngrnameArr[0]['userfullname'];
         if ($Id == 'update') {
             $menuidArr = $menumodel->getMenuObjID('/manageremployeevacations');
             $menuID = $menuidArr[0]['id'];
             $result = sapp_Global::logManager($menuID, $actionflag, $loginUserId, $id);
             /** MAILING CODE * */
             if ($to_date == '' || $to_date == NULL) {
                 $to_date = $from_date;
             }
             /* Mail to Employee */
             $view = $this->getHelper('ViewRenderer')->view;
             $base_URL = 'http://' . $this->getRequest()->getHttpHost() . $this->getRequest()->getBaseUrl();
             $mailpurpose = "The below leave(s) has been cancelled by your manager.";
             $this->view->base_url = $base_URL;
             $this->view->application_name = APPLICATION_NAME;
             $this->view->type = "New";
             $this->view->emp_name = $loginUserName;
             $this->view->mailpurpose = $mailpurpose;
             $this->view->requester_name = $loginUserName;
             $this->view->NoOfDays = $appliedleavesdaycount;
             $this->view->leave_from = $from_date;
             $this->view->leave_to = $to_date;
             $this->view->reason_for_leave = $reason;
             $this->view->reporting_manager = $reportingmanagername;
             $options['subject'] = APPLICATION_NAME . ':Leave request cancelled by your manager';
             $options['header'] = 'Leave Request';
             $options['toEmail'] = $loginUserEmail;
             $options['toName'] = $loginUserName;
             $options['message'] = $view->render('mailtemplates/leaves.phtml');
             sapp_Global::_sendEmail($options, "new");
             /* End */
             /* Mail to Reporting Manager */
             $view = $this->getHelper('ViewRenderer')->view;
             $base_URL = 'http://' . $this->getRequest()->getHttpHost() . $this->getRequest()->getBaseUrl();
             $mailpurpose = "The below leave(s) has been cancelled by your manager.";
             $this->view->base_url = $base_URL;
             $this->view->application_name = APPLICATION_NAME;
             $this->view->type = "New";
             $this->view->emp_name = $reportingmanagername;
             $this->view->mailpurpose = $mailpurpose;
             $this->view->requester_name = $loginUserName;
             $this->view->NoOfDays = $appliedleavesdaycount;
             $this->view->leave_from = $from_date;
             $this->view->leave_to = $to_date;
             $this->view->reason_for_leave = $reason;
             $this->view->reporting_manager = $reportingmanagername;
             $options['subject'] = APPLICATION_NAME . ':Leave request cancelled by your manager';
             $options['header'] = 'Leave Request';
             $options['toEmail'] = $reportingmanageremail;
             $options['toName'] = $reportingmanagername;
             $options['message'] = $view->render('mailtemplates/leaves.phtml');
             //$options['message'] = '<div>Hi,</div><div>The below leave(s) has been cancelled.</div><div><table ><tbody><tr><td width="28%" >Employee Name</td><td width="72%">' . $loginUserName . '</td></tr><tr ><td >No. of Day(s)</td><td>' . $appliedleavesdaycount . '</td>/tr><tr><td >From</td><td>' . $from_date . '</td></tr><tr ><td >To</td><td>' . $to_date . '</td></tr><tr ><td >Reason for Leave</td><td>' . $reason . '</td></tr></tbody></table></div>';
             sapp_Global::_sendEmail($options, "new");
             /* End */
             /* Mail to HR */
             $view = $this->getHelper('ViewRenderer')->view;
             $base_URL = 'http://' . $this->getRequest()->getHttpHost() . $this->getRequest()->getBaseUrl();
             $mailpurpose = "The below leave(s) has been cancelled by your manager.";
             $this->view->base_url = $base_URL;
             $this->view->application_name = APPLICATION_NAME;
             $this->view->type = "New";
             $this->view->emp_name = 'Leave management';
             $this->view->mailpurpose = $mailpurpose;
             $this->view->requester_name = $loginUserName;
             $this->view->NoOfDays = $appliedleavesdaycount;
             $this->view->leave_from = $from_date;
             $this->view->leave_to = $to_date;
             $this->view->reason_for_leave = $reason;
             $this->view->reporting_manager = $reportingmanagername;
             $options['subject'] = APPLICATION_NAME . ':Leave request cancelled by your manager';
             $options['header'] = 'Leave Request';
             $options['toEmail'] = constant('LV_HR_0');
             $options['toName'] = 'Leave management';
             $options['message'] = $view->render('mailtemplates/leaves.phtml');
             sapp_Global::_sendEmail($options, "new");
             $messages['message'] = 'Leave request cancelled';
             $messages['msgtype'] = 'success';
         } else {
             $messages['message'] = 'Leave request cannot be cancelled';
             $messages['msgtype'] = 'error';
         }
     } else {
         $messages['message'] = 'Leave request cannot be cancelled';
         $messages['msgtype'] = 'error';
     }
     $this->_helper->json($messages);
     $this->_redirect(sapp_Global::_curPageURL());
     //$this->_redirect('/manageremployeevacations');
 }
Пример #9
0
    public function saveleaverequestdetailsAction()
    {
        $this->_helper->layout->disableLayout();
        $auth = Zend_Auth::getInstance();
        if ($auth->hasIdentity()) {
            $loginUserId = $auth->getStorage()->read()->id;
        }
        $constantday = '';
        $days = '';
        $errorflag = 'true';
        $msgarray = array();
        $leavetypecount = '';
        $leavedayArr = array(1, 2);
        $availableleaves = '';
        $rep_mang_id = '';
        $employeeemail = '';
        $reportingManageremail = '';
        $week_startday = '';
        $week_endday = '';
        $ishalf_day = '';
        $userfullname = '';
        $reportingmanagerName = '';
        $businessunitid = '';
        $dateofjoining = '';
        $hremailgroup = '';
        $employeeDepartmentId = '';
        $reportingmanagerId = '';
        $leavetypeArr = array();
        $leaverequestform = new Default_Form_leaverequest();
        $leaverequestmodel = new Default_Model_Leaverequest();
        $employeeleavetypesmodel = new Default_Model_Employeeleavetypes();
        $leavemanagementmodel = new Default_Model_Leavemanagement();
        $usersmodel = new Default_Model_Users();
        $employeesmodel = new Default_Model_Employees();
        $weekdaysmodel = new Default_Model_Weekdays();
        if ($loginUserId != '' && $loginUserId != NULL) {
            $loggedinEmpId = $usersmodel->getUserDetailsByID($loginUserId);
            $loggedInEmployeeDetails = $employeesmodel->getLoggedInEmployeeDetails($loginUserId);
            if (!empty($loggedInEmployeeDetails)) {
                $reportingmanagerId = $loggedInEmployeeDetails[0]['reporting_manager'];
                $employeeDepartmentId = $loggedInEmployeeDetails[0]['department_id'];
                $employeeEmploymentStatusId = $loggedInEmployeeDetails[0]['emp_status_id'];
                $businessunitid = $loggedInEmployeeDetails[0]['businessunit_id'];
                $dateofjoining = $loggedInEmployeeDetails[0]['date_of_joining'];
                if ($reportingmanagerId != '' && $reportingmanagerId != NULL) {
                    $reportingManagerDetails = $usersmodel->getUserDetailsByID($reportingmanagerId);
                }
                if ($employeeDepartmentId != '' && $employeeDepartmentId != NULL) {
                    $weekendDatailsArr = $leavemanagementmodel->getWeekendDetails($employeeDepartmentId);
                }
                $employeeemail = $loggedinEmpId[0]['emailaddress'];
                $userfullname = $loggedinEmpId[0]['userfullname'];
                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.';
                    $errorflag = 'false';
                }
                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.';
                    $errorflag = 'false';
                }
            } else {
                $errorflag = 'false';
                $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.';
            }
        }
        /*START- Validating if employee has been allotted leaves
        		  Validating if employee has not been assigned any leaves
        		*/
        $getavailbaleleaves = $leaverequestmodel->getAvailableLeaves($loginUserId);
        if (!empty($getavailbaleleaves)) {
            $availableleaves = $getavailbaleleaves[0]['remainingleaves'];
        } else {
            $errorflag = 'false';
            $msgarray['no_of_days'] = 'You have not been allotted leaves for this financial year. Please contact your HR';
        }
        /*
          END- Validating if employee has been allotted leaves
        */
        $id = $this->_request->getParam('id');
        $reason = $this->_request->getParam('reason');
        // reason
        $leavetypeparam = $this->_request->getParam('leavetypeid');
        if (isset($leavetypeparam) && $leavetypeparam != '') {
            $leavetypeArr = explode("!@#", $this->_request->getParam('leavetypeid'));
            $leavetypeid = $leavetypeArr[0];
            $leavetypeArr = $employeeleavetypesmodel->getLeavetypeDataByID($leavetypeid);
        }
        /*
           START- Leave Type Validation
           Server side validation for leavetype count based on user selection.
           This is to validate or negate if user manipulates the data in the browser or firebug.
        */
        if (!empty($leavetypeArr)) {
            $leavetypecount = $leavetypeArr[0]['numberofdays'];
            $leavetypetext = $leavetypeArr[0]['leavetype'];
        } else {
            if (isset($leavetypeparam) && $leavetypeparam != '') {
                $msgarray['leavetypeid'] = 'Wrong inputs given.';
                $errorflag = 'false';
            } else {
                if ($leavetypeparam == '') {
                    $msgarray['leavetypeid'] = 'Please select leave type.';
                    $errorflag = 'false';
                } else {
                    $msgarray['leavetypeid'] = 'Leave types are not configured yet.';
                    $errorflag = 'false';
                }
            }
        }
        /*
           END- Leave Type Validation
        */
        $leaveday = $this->_request->getParam('leaveday');
        /*
           START- Leave Day Validation
           Server side validation for halfday and full day based on user selection.
           This is to validate or negate if user manipulates the data in the browser or firebug.
        */
        if (!in_array($leaveday, $leavedayArr)) {
            $msgarray['leaveday'] = 'Wrong inputs given.';
            $errorflag = 'false';
        }
        /*
           END- Leave Day Validation
        */
        $from_date = $this->_request->getParam('from_date');
        $from_date = sapp_Global::change_date($from_date, 'database');
        $to_date = $this->_request->getParam('to_date');
        $to_date = sapp_Global::change_date($to_date, 'database');
        $appliedleavesdaycount = $this->_request->getParam('appliedleavesdaycount');
        // no of leaves applied
        /* 
           START- Day calculation and validations.
           I. Calculation of days based on start date and end data.
           II. Also checking whether Applied no of days is less than leavetype configuration. 
           III. Also If leaveday is selected as full day then making todata as manadatory and 
                if leave day is selected as half day then no mandatory validation for todate.
        */
        if ($from_date != '' && $to_date != '' && $leavetypecount != '') {
            $days = $this->calculatebusinessdays($from_date, $to_date);
            if (is_numeric($days) && $leavetypecount >= $days) {
            } else {
                if (!is_numeric($days)) {
                    $msgarray['to_date'] = 'To date should be greater than from date.';
                    $errorflag = 'false';
                } else {
                    $msgarray['to_date'] = $leavetypetext . " permits maximum of " . $leavetypecount . " leaves.";
                    $errorflag = 'false';
                }
            }
        } else {
            if ($leaveday == 1) {
                if ($to_date == '' && !empty($weekendDatailsArr)) {
                    $msgarray['to_date'] = "Please select date.";
                    $errorflag = 'false';
                }
            }
        }
        /*
        		    END- Day calculation and validations.
        */
        /*  
        		    START- Validating Half day requests based on Leave management options
        		    Validation for half day leaves. 
        		    If halfday leave is configure in leave management options then only half day leave can be applied. 
        */
        if ($ishalf_day == 2) {
            if ($leaveday == 2) {
                $errorflag = 'false';
                $msgarray['leaveday'] = 'Half day leave cannot be applied.';
            }
        }
        /*  
            END- Validating Half day requests based on Leave management options
        */
        /* 
           START- Validating if leave request has been previoulsy applied
           I.Validating from and to dates to check whether previously 
           any leave has been raised with the same dates.
           II.If full day leave is applied then fromdate and todate are passed as parameter to query.
           III.If half day leave is applied then fromdate and fromdate are passed as a parameter to query.
        */
        $userAppliedLeaves = $leaverequestmodel->getUsersAppliedLeaves($loginUserId);
        if (!empty($userAppliedLeaves)) {
            foreach ($userAppliedLeaves as $leave) {
                if ($leaveday == 1) {
                    $leavesDateExists = $leaverequestmodel->checkLeaveExists($leave['from_date'], $leave['to_date'], $from_date, $to_date, $loginUserId);
                } else {
                    $leavesDateExists = $leaverequestmodel->checkLeaveExists($leave['from_date'], $leave['to_date'], $from_date, $from_date, $loginUserId);
                }
                if ($leavesDateExists[0]['leaveexist'] > 0) {
                    $errorflag = 'false';
                    $msgarray['from_date'] = ' Leave has already been applied for the above dates.';
                    break;
                }
            }
        }
        /*
          END- Validating if leave request has been previoulsy applied
        */
        /* START Validating whether applied date is prior to date of joining */
        if ($dateofjoining >= $from_date && $from_date != '') {
            $errorflag = 'false';
            $msgarray['from_date'] = ' Leave cannot be applied before date of joining.';
        }
        /* End */
        if ($leaveday == 2) {
            $appliedleavescount = 0.5;
        } else {
            if ($leaveday == 1) {
                $appliedleavescount = $days != '' ? $days : $appliedleavesdaycount;
            }
        }
        if ($this->getRequest()->getPost()) {
            if ($leaverequestform->isValid($this->_request->getPost()) && $errorflag == 'true') {
                $date = new Zend_Date();
                $actionflag = '';
                $tableid = '';
                $data = array('user_id' => $loginUserId, 'reason' => $reason, 'leavetypeid' => $leavetypeid, 'leaveday' => $leaveday, 'from_date' => $from_date, 'to_date' => $to_date != '' ? $to_date : $from_date, 'leavestatus' => 1, 'rep_mang_id' => $rep_mang_id, 'no_of_days' => $availableleaves, 'appliedleavescount' => $appliedleavescount, 'modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s"));
                if ($id != '') {
                    $where = array('id=?' => $id);
                    $actionflag = 2;
                } else {
                    $data['createdby'] = $loginUserId;
                    $data['createddate'] = gmdate("Y-m-d H:i:s");
                    $data['isactive'] = 1;
                    $where = '';
                    $actionflag = 1;
                }
                $Id = $leaverequestmodel->SaveorUpdateLeaveRequest($data, $where);
                if ($Id == 'update') {
                    $tableid = $id;
                    $this->_helper->getHelper("FlashMessenger")->addMessage(array("success" => "Leave request updated successfully."));
                } else {
                    $tableid = $Id;
                    $this->_helper->getHelper("FlashMessenger")->addMessage(array("success" => "Leave request added successfully."));
                    /** MAILING CODE **/
                    //$hremail = explode(",",HREMAIL);
                    /* Mail to Reporting manager */
                    if ($to_date == '' || $to_date == NULL) {
                        $to_date = $from_date;
                    }
                    $toemailArr = $reportingManageremail;
                    //$employeeemail
                    if (!empty($toemailArr)) {
                        $options['subject'] = 'Leave request for approval';
                        $options['header'] = 'Leave Request';
                        $options['toEmail'] = $toemailArr;
                        $options['toName'] = $reportingmanagerName;
                        $options['message'] = '<div>
												<div>Dear ' . $reportingmanagerName . ',</div>
												<div>The leave of the below employee is pending for approval:</div>
												<div>
                <table width="100%" cellspacing="0" cellpadding="15" border="0" style="border:3px solid #BBBBBB; font-size:16px; font-family:Arial, Helvetica, sans-serif; margin:30px 0 30px 0;" bgcolor="#ffffff">
                      <tbody><tr>
                        <td width="28%" style="border-right:2px solid #BBBBBB;">Employee Name</td>
                        <td width="72%">' . $userfullname . '</td>
                      </tr>
                      <tr bgcolor="#e9f6fc">
                        <td style="border-right:2px solid #BBBBBB;">No. of Day(s)</td>
                        <td>' . $appliedleavescount . '</td>
                      </tr>
                      <tr>
                        <td style="border-right:2px solid #BBBBBB;">Remaining Leaves</td>
                        <td>' . $availableleaves . '</td>
                      </tr>
                      <tr bgcolor="#e9f6fc">
                        <td style="border-right:2px solid #BBBBBB;">From</td>
                        <td>' . $from_date . '</td>
                      </tr>
                      <tr>
                        <td style="border-right:2px solid #BBBBBB;">To</td>
                        <td>' . $to_date . '</td>
                  </tr>
                      <tr bgcolor="#e9f6fc">
                        <td style="border-right:2px solid #BBBBBB;">Reason for Leave</td>
                        <td>' . $reason . '</td>
                  </tr>
                  <tr>
                        <td style="border-right:2px solid #BBBBBB;">Reporting Manager</td>
                        <td>' . $reportingmanagerName . '</td>
                  </tr>
                </tbody></table>

            </div>
            <div style="padding:20px 0 10px 0;">Please <a href="' . BASE_URL . '/index/popup" target="_blank" style="color:#b3512f;">click here</a> to login and check the leave details.</div>
            </div>';
                        $result = sapp_Global::_sendEmail($options);
                    }
                    /* END */
                    /* Mail to HR */
                    if (defined('LV_HR_' . $businessunitid) && $businessunitid != '') {
                        $options['subject'] = 'Leave request for approval';
                        $options['header'] = 'Leave Request ';
                        $options['toEmail'] = constant('LV_HR_' . $businessunitid);
                        $options['toName'] = 'Leave management';
                        $options['message'] = '<div>
												<div>Dear HR,</div>
												<div>The leave of the below employee is pending for approval:</div>
<div>
                <table width="100%" cellspacing="0" cellpadding="15" border="0" style="border:3px solid #BBBBBB; font-size:16px; font-family:Arial, Helvetica, sans-serif; margin:30px 0 30px 0;" bgcolor="#ffffff">
                      <tbody><tr>
                        <td width="28%" style="border-right:2px solid #BBBBBB;">Employee Name</td>
                        <td width="72%">' . $userfullname . '</td>
                      </tr>
                      <tr bgcolor="#e9f6fc">
                        <td style="border-right:2px solid #BBBBBB;">No. of Day(s)</td>
                        <td>' . $appliedleavescount . '</td>
                      </tr>
                      <tr>
                        <td style="border-right:2px solid #BBBBBB;">Remaining Leaves</td>
                        <td>' . $availableleaves . '</td>
                      </tr>
                      <tr bgcolor="#e9f6fc">
                        <td style="border-right:2px solid #BBBBBB;">From</td>
                        <td>' . $from_date . '</td>
                      </tr>
                      <tr>
                        <td style="border-right:2px solid #BBBBBB;">To</td>
                        <td>' . $to_date . '</td>
                  </tr>
                      <tr bgcolor="#e9f6fc">
                        <td style="border-right:2px solid #BBBBBB;">Reason for Leave</td>
                        <td>' . $reason . '</td>
                  </tr>
                  <tr>
                        <td style="border-right:2px solid #BBBBBB;">Reporting Manager</td>
                        <td>' . $reportingmanagerName . '</td>
                  </tr>
                </tbody></table>

            </div>
            <div style="padding:20px 0 10px 0;">Please <a href="' . BASE_URL . '/index/popup" target="_blank" style="color:#b3512f;">click here</a> to login and check the leave details.</div>
            </div>';
                        //$options['cron'] = 'yes';
                        $result = sapp_Global::_sendEmail($options);
                    }
                    /* END */
                    /* Mail to the applied employee*/
                    $toemailArr = $employeeemail;
                    $options['subject'] = 'Leave request for approval';
                    $options['header'] = 'Leave Request';
                    $options['toEmail'] = $toemailArr;
                    $options['toName'] = $userfullname;
                    $options['message'] = '<div>
												<div>Hi,</div>
												<div>A leave request raised by you is sent for your managers approval.</div>
<div>
                <table width="100%" cellspacing="0" cellpadding="15" border="0" style="border:3px solid #BBBBBB; font-size:16px; font-family:Arial, Helvetica, sans-serif; margin:30px 0 30px 0;" bgcolor="#ffffff">
                      <tbody><tr>
                        <td width="28%" style="border-right:2px solid #BBBBBB;">Employee Name</td>
                        <td width="72%">' . $userfullname . '</td>
                      </tr>
                      <tr bgcolor="#e9f6fc">
                        <td style="border-right:2px solid #BBBBBB;">No. of Day(s)</td>
                        <td>' . $appliedleavescount . '</td>
                      </tr>
                      <tr>
                        <td style="border-right:2px solid #BBBBBB;">From</td>
                        <td>' . $from_date . '</td>
                      </tr>
                      <tr bgcolor="#e9f6fc">
                        <td style="border-right:2px solid #BBBBBB;">To</td>
                        <td>' . $to_date . '</td>
            	     </tr>
	    	          <tr>
    	                 <td style="border-right:2px solid #BBBBBB;">Leave Type</td>
                        <td>' . $leavetypetext . '</td>
                  </tr>
                      <tr bgcolor="#e9f6fc">
                        <td style="border-right:2px solid #BBBBBB;">Reason for Leave</td>
                        <td>' . $reason . '</td>
                  </tr>
                </tbody></table>

            </div>
            <div style="padding:20px 0 10px 0;">Please <a href="' . BASE_URL . '/index/popup" target="_blank" style="color:#b3512f;">click here</a> to login and check the leave details.</div>												
            </div>';
                    $result = sapp_Global::_sendEmail($options);
                }
                $menuID = LEAVEREQUEST;
                $result = sapp_Global::logManager($menuID, $actionflag, $loginUserId, $tableid);
                $this->_helper->json(array('result' => 'saved', 'message' => 'Leave request applied successfully.', 'controller' => 'pendingleaves'));
            } else {
                $messages = $leaverequestform->getMessages();
                if (isset($msgarray['rep_mang_id'])) {
                    $messages['rep_mang_id'] = array($msgarray['rep_mang_id']);
                }
                if (isset($msgarray['from_date'])) {
                    $messages['from_date'] = array($msgarray['from_date']);
                }
                if (isset($msgarray['to_date'])) {
                    $messages['to_date'] = array($msgarray['to_date']);
                }
                if (isset($msgarray['leaveday'])) {
                    $messages['leaveday'] = array($msgarray['leaveday']);
                }
                if (isset($msgarray['leavetypeid'])) {
                    $messages['leavetypeid'] = array($msgarray['leavetypeid']);
                }
                if (isset($msgarray['no_of_days'])) {
                    $messages['no_of_days'] = array($msgarray['no_of_days']);
                }
                $messages['result'] = 'error';
                $this->_helper->json($messages);
            }
        }
    }
Пример #10
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');
     }
 }
Пример #11
0
 public function saveleaverequestdetailsAction()
 {
     $this->_helper->layout->disableLayout();
     $auth = Zend_Auth::getInstance();
     if ($auth->hasIdentity()) {
         $loginUserId = $auth->getStorage()->read()->id;
     }
     $constantday = '';
     $days = '';
     $errorflag = 'true';
     $msgarray = array();
     $leavetypecount = '';
     $leavedayArr = array(1, 2);
     $availableleaves = '';
     $rep_mang_id = '';
     $employeeemail = '';
     $reportingManageremail = '';
     $week_startday = '';
     $week_endday = '';
     $ishalf_day = '';
     $userfullname = '';
     $reportingmanagerName = '';
     $businessunitid = '';
     $dateofjoining = '';
     $hremailgroup = '';
     $employeeDepartmentId = '';
     $reportingmanagerId = '';
     $leavetypeArr = array();
     $leaverequestform = new Default_Form_leaverequest();
     $leaverequestmodel = new Default_Model_Leaverequest();
     $employeeleavetypesmodel = new Default_Model_Employeeleavetypes();
     $leavemanagementmodel = new Default_Model_Leavemanagement();
     $usersmodel = new Default_Model_Users();
     $employeesmodel = new Default_Model_Employees();
     $weekdaysmodel = new Default_Model_Weekdays();
     if ($loginUserId != '' && $loginUserId != NULL) {
         $loggedinEmpId = $usersmodel->getUserDetailsByID($loginUserId);
         $loggedInEmployeeDetails = $employeesmodel->getLoggedInEmployeeDetails($loginUserId);
         if (!empty($loggedInEmployeeDetails)) {
             $reportingmanagerId = $loggedInEmployeeDetails[0]['reporting_manager'];
             $employeeDepartmentId = $loggedInEmployeeDetails[0]['department_id'];
             $employeeEmploymentStatusId = $loggedInEmployeeDetails[0]['emp_status_id'];
             $businessunitid = $loggedInEmployeeDetails[0]['businessunit_id'];
             $dateofjoining = $loggedInEmployeeDetails[0]['date_of_joining'];
             if ($reportingmanagerId != '' && $reportingmanagerId != NULL) {
                 $reportingManagerDetails = $usersmodel->getUserDetailsByID($reportingmanagerId);
             }
             if ($employeeDepartmentId != '' && $employeeDepartmentId != NULL) {
                 $weekendDatailsArr = $leavemanagementmodel->getWeekendDetails($employeeDepartmentId);
             }
             $employeeemail = $loggedinEmpId[0]['emailaddress'];
             $userfullname = $loggedinEmpId[0]['userfullname'];
             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.';
                 $errorflag = 'false';
             }
             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 {
                 //setting default values if LEAVE MANAGEMENT OPTIONS not set for DEPARTMENT
                 $week_startday = '6';
                 //Saturday
                 $week_endday = '0';
                 //Sunday
                 $ishalf_day = '1';
                 //Yes
                 $isskip_holidays = '1';
                 //Yes
                 //$msgarray['from_date'] = 'Leave management options are not configured yet.';
                 //$msgarray['to_date'] = 'Leave management options are not configured yet.';
                 //$errorflag = 'false';
             }
         } else {
             $errorflag = 'false';
             $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.';
         }
     }
     /* START- Validating if employee has been allotted leaves
               Validating if employee has not been assigned any leaves
     
               $getavailbaleleaves = $leaverequestmodel->getAvailableLeaves($loginUserId);
     
               if (!empty($getavailbaleleaves)) {
               $availableleaves = $getavailbaleleaves[0]['remainingleaves'];
               } else {
               $errorflag = 'false';
               $msgarray['no_of_days'] = 'You have not been allotted leaves for this financial year. Please contact your HR';
               } */
     /*
      END- Validating if employee has been allotted leaves
     */
     $id = $this->_request->getParam('id');
     $reason = $this->_request->getParam('reason');
     // reason
     $leavetypeparam = $this->_request->getParam('leavetypeid');
     if (isset($leavetypeparam) && $leavetypeparam != '') {
         $leavetypeArr = explode("!@#", $this->_request->getParam('leavetypeid'));
         $leavetypeid = $leavetypeArr[0];
         $leavetypecount = $leavetypeArr[4];
         $leavetypetext = $leavetypeArr[2];
         $availableleaves = $leavetypeArr[1] - $leavetypeArr[3];
         //$leavetypeArr = $employeeleavetypesmodel->getLeavetypeDataByID($leavetypeid);
     }
     /*
               START- Leave Type Validation
               Server side validation for leavetype count based on user selection.
               This is to validate or negate if user manipulates the data in the browser or firebug.
     
               if (!empty($leavetypeArr)) {
               $leavetypecount = $leavetypeArr[0]['numberofdays'];
               $leavetypetext = $leavetypeArr[0]['leavetype'];
               } else {
               if (isset($leavetypeparam) && $leavetypeparam != '') {
               $msgarray['leavetypeid'] = 'Wrong inputs given.';
               $errorflag = 'false';
               } else if ($leavetypeparam == '') {
               $msgarray['leavetypeid'] = 'Please select leave type.';
               $errorflag = 'false';
               } else {
               $msgarray['leavetypeid'] = 'Leave types are not configured yet.';
               $errorflag = 'false';
               }
               } */
     /*
      END- Leave Type Validation
     */
     $leaveday = $this->_request->getParam('leaveday');
     /*
      START- Leave Day Validation
      Server side validation for halfday and full day based on user selection.
      This is to validate or negate if user manipulates the data in the browser or firebug.
     */
     if (!in_array($leaveday, $leavedayArr)) {
         $msgarray['leaveday'] = 'Wrong inputs given.';
         $errorflag = 'false';
     }
     /*
      END- Leave Day Validation
     */
     $from_date = $this->_request->getParam('from_date');
     $from_date = sapp_Global::change_date($from_date, 'database');
     $to_date = $this->_request->getParam('to_date');
     $to_date = sapp_Global::change_date($to_date, 'database');
     $appliedleavesdaycount = $this->_request->getParam('appliedleavesdaycount');
     // no of leaves applied
     /*
      START- Day calculation and validations.
      I. Calculation of days based on start date and end data.
      II. Also checking whether Applied no of days is less than leavetype configuration.
      III. Also If leaveday is selected as full day then making todata as manadatory and
      if leave day is selected as half day then no mandatory validation for todate.
     */
     if ($from_date != '' && $to_date != '' && $leavetypecount != '') {
         $days = $this->calculatebusinessdays($from_date, $to_date);
         if ($leavetypeid == "3" && $days > 2) {
             $msgarray['to_date'] = 'Casual leaves should not be greater than 2 days.';
             $errorflag = 'false';
         } else {
             if (is_numeric($days) && $leavetypecount >= $days) {
             } else {
                 if (!is_numeric($days)) {
                     $msgarray['to_date'] = 'To date should be greater than from date.';
                     $errorflag = 'false';
                 } else {
                     //Excempt this logic for Personal Leaves
                     if ($leavetypeid == "5") {
                         //do nothing
                     } else {
                         $msgarray['to_date'] = $leavetypetext . " permits maximum of " . $leavetypecount . " leave(s).";
                         $errorflag = 'false';
                     }
                 }
             }
         }
     } else {
         if ($leaveday == 1) {
             if ($to_date == '' && !empty($weekendDatailsArr)) {
                 $msgarray['to_date'] = "Please select date.";
                 $errorflag = 'false';
             }
         }
     }
     /*
      END- Day calculation and validations.
     */
     /*
      START- Validating Half day requests based on Leave management options
      Validation for half day leaves.
      If halfday leave is configure in leave management options then only half day leave can be applied.
     */
     if ($ishalf_day == 2) {
         if ($leaveday == 2) {
             $errorflag = 'false';
             $msgarray['leaveday'] = 'Half day leave cannot be applied.';
         }
     }
     /*
      END- Validating Half day requests based on Leave management options
     */
     /*
      START- Validating if leave request has been previoulsy applied
      I.Validating from and to dates to check whether previously
      any leave has been raised with the same dates.
      II.If full day leave is applied then fromdate and todate are passed as parameter to query.
      III.If half day leave is applied then fromdate and fromdate are passed as a parameter to query.
     */
     if ($leaveday == 1) {
         $dateexists = $leaverequestmodel->checkdateexists($from_date, $to_date, $loginUserId);
         if ($dateexists[0]['dateexist'] > 0) {
             $errorflag = 'false';
             $msgarray['to_date'] = ' Leave has already been applied for the above dates.';
         }
     } else {
         if ($leaveday == 2) {
             $resFlag = $leaverequestmodel->isHalfDayLeaveApplied($from_date, $from_date, $loginUserId);
             if ($resFlag == "1") {
                 //user already applied for Half-day leave, so let's allow to apply another half-day
                 //check if 2 Half days already applied
                 $HalfDaysApplied = $leaverequestmodel->HalfDaysApplied($from_date, $from_date, $loginUserId);
                 if ($HalfDaysApplied >= 2) {
                     $errorflag = 'false';
                     $msgarray['from_date'] = ' Leave(s) has already been applied for the above date.';
                 }
             } else {
                 $dateexists = $leaverequestmodel->checkdateexists($from_date, $from_date, $loginUserId);
                 if ($dateexists[0]['dateexist'] > 0) {
                     $errorflag = 'false';
                     $msgarray['from_date'] = ' Leave(s) has already been applied for the above date.';
                 }
             }
         }
     }
     /*
      END- Validating if leave request has been previoulsy applied
     */
     /* START Validating whether applied date is prior to date of joining */
     if ($dateofjoining >= $from_date && $from_date != '') {
         $errorflag = 'false';
         $msgarray['from_date'] = ' Leave cannot be applied before date of joining.';
     }
     /* End */
     if ($leaveday == 2) {
         $appliedleavescount = 0.5;
     } else {
         if ($leaveday == 1) {
             $appliedleavescount = $days != '' ? $days : $appliedleavesdaycount;
         }
     }
     if ($this->getRequest()->getPost()) {
         if ($leaverequestform->isValid($this->_request->getPost()) && $errorflag == 'true') {
             $date = new Zend_Date();
             $menumodel = new Default_Model_Menu();
             $actionflag = '';
             $tableid = '';
             $data = array('alloted_year' => CURRENTYEARYYYY, 'user_id' => $loginUserId, 'reason' => $reason, 'leavetypeid' => $leavetypeid, 'leaveday' => $leaveday, 'from_date' => $from_date, 'to_date' => $to_date != '' ? $to_date : $from_date, 'leavestatus' => 1, 'rep_mang_id' => $rep_mang_id, 'no_of_days' => $availableleaves, 'appliedleavescount' => $appliedleavescount, 'modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s"));
             if ($id != '') {
                 $where = array('id=?' => $id);
                 $actionflag = 2;
             } else {
                 $data['createdby'] = $loginUserId;
                 $data['createddate'] = gmdate("Y-m-d H:i:s");
                 $data['isactive'] = 1;
                 $where = '';
                 $actionflag = 1;
             }
             $Id = $leaverequestmodel->SaveorUpdateLeaveRequest($data, $where);
             //to update tbl_employeeleaves with applied leaves
             //$leaverequestmodel->UpdateLeavePool($data, $where);
             if ($Id == 'update') {
                 $tableid = $id;
                 $this->_helper->getHelper("FlashMessenger")->addMessage(array("success" => "Leave request updated successfully."));
             } else {
                 $tableid = $Id;
                 $this->_helper->getHelper("FlashMessenger")->addMessage(array("success" => "Leave request added successfully."));
                 if ($to_date == '' || $to_date == NULL) {
                     $to_date = $from_date;
                 }
                 //variables for email
                 $base_URL = 'http://' . $this->getRequest()->getHttpHost() . $this->getRequest()->getBaseUrl();
                 $currEmpDetails = $leaverequestmodel->getEmployeeSummaryDetails($loginUserId);
                 /* Mail to Reporting manager */
                 $options['subject'] = APPLICATION_NAME . ':Leave request for approval';
                 $options['header'] = 'Leave Request';
                 $options['toEmail'] = $currEmpDetails[0]['rmemailaddress'];
                 $options['toName'] = $reportingmanagerName;
                 $options['message'] = sprintf("%s!@#%s!@#%s!@#%s!@#%s!@#%s!@#%s!@#%s!@#%s!@#%s!@#%s", $base_URL, APPLICATION_NAME, "New", $reportingmanagerName, "The leave of the below employee is pending for approval.", $userfullname, $appliedleavescount, $from_date, $to_date, $reason, $reportingmanagerName);
                 $this->sendLeaveEmail($options);
                 /* Mail to HR */
                 $options['subject'] = APPLICATION_NAME . 'Leave request for approval';
                 $options['header'] = 'Leave Request ';
                 $options['toEmail'] = constant('LV_HR_0');
                 $options['toName'] = 'Leave management';
                 $options['message'] = sprintf("%s!@#%s!@#%s!@#%s!@#%s!@#%s!@#%s!@#%s!@#%s!@#%s!@#%s", $base_URL, APPLICATION_NAME, "New", 'Leave management', "The leave of the below employee is pending for his managers approval.", $userfullname, $appliedleavescount, $from_date, $to_date, $reason, $reportingmanagerName);
                 $this->sendLeaveEmail($options);
                 /* Mail to Requester */
                 $options['subject'] = APPLICATION_NAME . 'Leave request for approval';
                 $options['header'] = 'Leave Request';
                 $options['toEmail'] = $currEmpDetails[0]['emailaddress'];
                 $options['toName'] = $userfullname;
                 $options['message'] = sprintf("%s!@#%s!@#%s!@#%s!@#%s!@#%s!@#%s!@#%s!@#%s!@#%s!@#%s", $base_URL, APPLICATION_NAME, "New", $userfullname, "A leave request raised by you is sent for your managers approval.", $userfullname, $appliedleavescount, $from_date, $to_date, $reason, $reportingmanagerName);
                 $this->sendLeaveEmail($options);
             }
             $menuidArr = $menumodel->getMenuObjID('/leaverequest');
             $menuID = $menuidArr[0]['id'];
             $result = sapp_Global::logManager($menuID, $actionflag, $loginUserId, $tableid);
             $this->_helper->json(array('result' => 'saved', 'message' => 'Leave request applied successfully.', 'controller' => 'pendingleaves'));
         } else {
             $messages = $leaverequestform->getMessages();
             if (isset($msgarray['rep_mang_id'])) {
                 $messages['rep_mang_id'] = array($msgarray['rep_mang_id']);
             }
             if (isset($msgarray['from_date'])) {
                 $messages['from_date'] = array($msgarray['from_date']);
             }
             if (isset($msgarray['to_date'])) {
                 $messages['to_date'] = array($msgarray['to_date']);
             }
             if (isset($msgarray['leaveday'])) {
                 $messages['leaveday'] = array($msgarray['leaveday']);
             }
             if (isset($msgarray['leavetypeid'])) {
                 $messages['leavetypeid'] = array($msgarray['leavetypeid']);
             }
             if (isset($msgarray['no_of_days'])) {
                 $messages['no_of_days'] = array($msgarray['no_of_days']);
             }
             $messages['result'] = 'error';
             $this->_helper->json($messages);
         }
     }
 }