/** 
  ** performance appraisal reports
  ** by default displays all employee ratings for the current year
  ** parameterized by year, business unit, department, quarter, reporting manager 
  **/
 public function performancereportAction()
 {
     try {
         $form = new Default_Form_performancereport();
         $norec_arr = array();
         $dept_model = new Default_Model_Departments();
         $dept_data = $dept_model->getdepts_interview_report();
         $appraisalRatings_model = new Default_Model_Appraisalemployeeratings();
         $department = $this->_request->getParam('department_id');
         $businessunit = $this->_request->getParam('businessunit_id');
         $reportingmanager = $this->_request->getParam('reporting_manager');
         $fromyear = $this->_request->getParam('fromyear');
         $toyear = $this->_request->getParam('toyear');
         $employeeid = $this->_request->getParam('hiddenemployeename');
         $nofilters = 0;
         $appraisalData = array();
         $curdate = date('Y-m-d');
         //if all the filters are empty
         if ($department == '' && $reportingmanager == '' && ($businessunit == '' || $businessunit == 0) && $fromyear == '' && $toyear == '' && $employeeid == '') {
             $fromyear = date('Y');
             $toyear = date('Y', strtotime("{$curdate} +1 year"));
             $appraisalData = $appraisalRatings_model->getappraisalidsforperformance($fromyear, $toyear, $department, $reportingmanager, $businessunit, $employeeid);
             //when no filters are there and if there is no data for current year, checking for previous year
             if (empty($appraisalData)) {
                 $fromyear = $fromyear - 1;
                 $toyear = $toyear - 1;
                 $appraisalData = $appraisalRatings_model->getappraisalidsforperformance($fromyear, $toyear, $department, $reportingmanager, $businessunit, $employeeid);
             }
         } else {
             $appraisalData = $appraisalRatings_model->getappraisalidsforperformance($fromyear, $toyear, $department, $reportingmanager, $businessunit, $employeeid);
         }
         //getting the employees count with consolidated rating group by consolidated rating
         $emp_count_data = $appraisalRatings_model->getEmpCountWithConsolidatedRatings($fromyear, $toyear, $department, $reportingmanager, $businessunit, $appraisalData, $employeeid);
         $maxrating = 0;
         $noofboxes = 0;
         $ratingsarray = array();
         if (isset($emp_count_data) && !empty($emp_count_data)) {
             //making the array with rating as key
             foreach ($emp_count_data as $emp_count) {
                 $ratingsarray[$emp_count['consolidated_rating']] = $emp_count;
             }
         }
         //get the max rating to calculate the number of boxes
         if (isset($ratingsarray) && !empty($ratingsarray)) {
             $maxrating = max(array_keys($ratingsarray));
             if ($maxrating <= 5) {
                 $noofboxes = 5;
             } else {
                 $noofboxes = 10;
             }
         }
         //getting the employees data
         $emp_data = $appraisalRatings_model->getEmpRatings($fromyear, $toyear, $department, $reportingmanager, $businessunit, $appraisalData, $employeeid);
         $emp_grouped_data = array();
         if ($noofboxes > 0) {
             for ($i = 1; $i <= $noofboxes; $i++) {
                 $emp_inner_data = array();
                 foreach ($emp_data as $emp) {
                     if ($emp['consolidated_floor_rating'] == $i) {
                         array_push($emp_inner_data, $emp);
                     }
                 }
                 $emp_grouped_data[$i] = $emp_inner_data;
             }
         }
         //getting business units
         $bu_model = new Default_Model_Businessunits();
         $bu_arr = $bu_model->getBU_report();
         if (!empty($bu_arr)) {
             foreach ($bu_arr as $bu) {
                 $form->businessunit_id->addMultiOption($bu['id'], utf8_encode($bu['bu_name']));
             }
         } else {
             $norec_arr['businessunit_id'] = 'Business Units are not added yet.';
         }
         $this->view->emp_data = $emp_data;
         $this->view->emp_grouped_data = $emp_grouped_data;
         $this->view->ratingsarray = $ratingsarray;
         $this->view->noofboxes = $noofboxes;
         $this->view->messages = $norec_arr;
         $this->view->fromyear = $fromyear;
         $this->view->toyear = $toyear;
         $this->view->form = $form;
     } catch (Exception $e) {
         print_r($e);
     }
 }