public function leavemanagementreportAction()
 {
     $reportsmodel = new Default_Model_Reports();
     $departmentsmodel = new Default_Model_Departments();
     $monthslistmodel = new Default_Model_Monthslist();
     $weekdaysmodel = new Default_Model_Weekdays();
     $leavemanagementform = new Default_Form_leavemanagementreport();
     $msgarray = array();
     $selectColumns = array();
     $searchQuery = '';
     $department = $this->_request->getParam('department_id');
     $cal_startmonth = $this->_request->getParam('cal_startmonth');
     $weekend_startday = $this->_request->getParam('weekend_startday');
     $weekend_endday = $this->_request->getParam('weekend_endday');
     $pageno = $this->_request->getParam('pageno', 1);
     $perpage = intval($this->_request->getParam('perpage', PERPAGE));
     if ($perpage == 0) {
         $perpage = PERPAGE;
     }
     $by = $this->_request->getParam('by', 'Desc');
     $sortby = $this->_request->getParam('sortby', 'l.modifieddate');
     $columnby = $this->_request->getParam('columnby');
     $columnsortby = $this->_request->getParam('columnsortby');
     $checkedheaders = $this->_request->getParam('checkedheaders');
     $generatereport = $this->_request->getParam('generatereport');
     if ($checkedheaders != '') {
         $selectColumns = explode(',', $checkedheaders);
     }
     if ($columnby != '') {
         $by = $columnby;
     }
     if ($columnsortby != '') {
         $sortby = $columnsortby;
     }
     if ($department != '') {
         $searchQuery .= 'l.department_id = "' . $department . '" AND ';
     }
     if ($cal_startmonth != '') {
         $searchQuery .= 'l.cal_startmonth = ' . $cal_startmonth . ' AND ';
     }
     if ($weekend_startday != '') {
         $searchQuery .= 'l.weekend_startday = ' . $weekend_startday . ' AND ';
     }
     if ($weekend_endday != '') {
         $searchQuery .= 'l.weekend_endday = ' . $weekend_endday . ' AND ';
     }
     $searchQuery = rtrim($searchQuery, " AND");
     $leavemgmtArr = $reportsmodel->getLeaveManagementSummary($sortby, $by, $pageno, $perpage, $searchQuery);
     $leavemgmtCount = $reportsmodel->getLeaveManagementCount($searchQuery);
     $departmentlistArr = $departmentsmodel->getDepartmentWithCodeList();
     if (!empty($departmentlistArr)) {
         foreach ($departmentlistArr as $departmentlistres) {
             $leavemanagementform->department_id->addMultiOption($departmentlistres['id'], utf8_encode($departmentlistres['unitcode'] . $departmentlistres['deptname']));
         }
     } else {
         $msgarray['department_id'] = 'Departments are not added yet.';
     }
     $monthslistdata = $monthslistmodel->getMonthlistData();
     if (sizeof($monthslistdata) > 0) {
         foreach ($monthslistdata as $monthslistres) {
             $leavemanagementform->cal_startmonth->addMultiOption($monthslistres['month_id'], utf8_encode($monthslistres['month_name']));
         }
     } else {
         $msgarray['cal_startmonth'] = 'Months list is not configured yet.';
     }
     $weekdaysdata = $weekdaysmodel->getWeeklistData();
     if (sizeof($weekdaysdata) > 0) {
         foreach ($weekdaysdata as $weekdaysres) {
             $leavemanagementform->weekend_startday->addMultiOption($weekdaysres['day_id'], utf8_encode($weekdaysres['day_name']));
             $leavemanagementform->weekend_endday->addMultiOption($weekdaysres['day_id'], utf8_encode($weekdaysres['day_name']));
         }
     } else {
         $msgarray['weekend_startday'] = 'Weekdays are not configured yet.';
         $msgarray['weekend_endday'] = 'Weekdays are not configured yet.';
     }
     if ($leavemgmtCount[0]['count'] > 0) {
         $totalcount = $leavemgmtCount[0]['count'];
         $lastpage = ceil($totalcount / $perpage);
     } else {
         $totalcount = '';
         $lastpage = '';
     }
     $selectColumnLabels = array();
     $leavesheaderarr = array('cal_startmonthname' => 'Start Month', 'weekend_startday' => 'Week-end 1', 'weekend_endday' => 'Week-end 2', 'department_name' => 'Department', 'hours_day' => 'Hours', 'is_halfday' => 'Halfday', 'is_leavetransfer' => 'Leave Transferable', 'is_skipholidays' => 'Skip Holidays');
     if (empty($selectColumns)) {
         $selectColumns = array('cal_startmonthname', 'weekend_startday', 'weekend_endday', 'department_name', 'hours_day', 'is_halfday', 'is_leavetransfer', 'is_skipholidays');
         $selectColumnLabels = $leavesheaderarr;
     } else {
         foreach ($leavesheaderarr as $key => $val) {
             foreach ($selectColumns as $column) {
                 if ($column == $key) {
                     $selectColumnLabels[$key] = $val;
                 }
             }
         }
     }
     $this->view->selectColumnLabels = $selectColumnLabels;
     $this->view->leavesheaderarr = $leavesheaderarr;
     $this->view->leavemgmtArr = $leavemgmtArr;
     $this->view->totalCount = $totalcount;
     $this->view->pageno = $pageno;
     $this->view->perpage = $perpage;
     $this->view->by = $by;
     $this->view->sortby = $sortby;
     $this->view->totalcount = $totalcount;
     $this->view->lastpage = $lastpage;
     $this->view->msgarray = $msgarray;
     $this->view->form = $leavemanagementform;
 }