public function savemngrorghierarchyAction()
 {
     $auth = Zend_Auth::getInstance();
     if ($auth->hasIdentity()) {
         $loginUserId = $auth->getStorage()->read()->id;
         $loginuserRole = $auth->getStorage()->read()->emprole;
         $loginuserGroup = $auth->getStorage()->read()->group_id;
     }
     $app_init_model = new Default_Model_Appraisalinit();
     $ques_temp_model = new Default_Model_Appraisalqstemp();
     $ques_org_model = new Default_Model_Appraisalqsmain();
     $app_rating_model = new Default_Model_Appraisalratings();
     // $init_id = $this->_getParam('init_id',null);
     $init_param = $this->_getParam('i', null);
     $init_id = sapp_Global::_decrypt($init_param);
     $init_data = $app_init_model->getConfigData($init_id);
     if (count($init_data) > 0) {
         $init_data = $init_data[0];
     }
     $this->view->init_id = $init_id;
     $this->view->init_data = $init_data;
     $this->view->msg_arr = array();
     $ratingsflag = 'false';
     $checkRatingsExists = $app_rating_model->getAppraisalRatingsbyInitId($init_id);
     if (!empty($checkRatingsExists)) {
         $ratingsflag = 'true';
     }
     $red_result = "";
     $type_arr = array('line' => 1, 'report' => 2);
     $trDb = Zend_Db_Table::getDefaultAdapter();
     //get manager ids as comma seperated string
     $manager_ids = $this->_getParam('mid', null);
     //break the manager ids into array
     $mngr_ids_array = explode(',', $manager_ids);
     $get_managers_data = array();
     $get_managers_data = $app_init_model->getManagers_report($init_id);
     $final_managers_data = array();
     //get the managers data and build an array with manager id as key
     if (isset($get_managers_data) && count($get_managers_data) > 0) {
         foreach ($get_managers_data as $data) {
             $mngr_id = isset($data['user_id']) ? $data['user_id'] : 0;
             $final_managers_data[$mngr_id] = $data;
         }
     }
     if (isset($mngr_ids_array) && count($mngr_ids_array) > 0) {
         $choose_option = 'report';
         foreach ($mngr_ids_array as $mngr) {
             $tot_ids = array();
             $context = 'add';
             $content = array();
             $content = $app_init_model->getdisplayacontentreportacc($init_id, $mngr);
             if ($context == 'add') {
                 $init_sdata = array('manager_level_type' => $type_arr[$choose_option]);
                 $app_result = array();
                 $app_result = $app_init_model->SaveorUpdateAppraisalInitData($init_sdata, " id = " . $init_id);
                 $qresult = '';
                 if ($app_result === 'update') {
                     if (count($content) > 0) {
                         foreach ($content as $cont) {
                             if (is_numeric($cont['user_id'])) {
                                 array_push($tot_ids, $cont['user_id']);
                             }
                         }
                     }
                     $line_str_arr = array();
                     $line_str_arr['line_manager_1'] = $mngr;
                     if (count($tot_ids) > 0) {
                         foreach ($tot_ids as $emp_id) {
                             $qdata = array('pa_initialization_id' => $init_id, 'manager_levels' => 1, 'employee_id' => $emp_id, 'module_flag' => 1, 'createdby' => $loginUserId, 'createdby_role' => $loginuserRole, 'createdby_group' => $loginuserGroup, 'modifiedby' => $loginUserId, 'modifiedby_role' => $loginuserRole, 'modifiedby_group' => $loginuserGroup, 'createddate' => gmdate("Y-m-d H:i:s"), 'modifieddate' => gmdate("Y-m-d H:i:s"), 'isactive' => 1);
                             $qdata = array_merge($qdata, $line_str_arr);
                             if ($init_data['initialize_status'] == 1) {
                                 $qresult = $ques_org_model->SaveorUpdatePrivilegeData($qdata, '');
                             } else {
                                 $qresult = $ques_temp_model->SaveorUpdateData($qdata, '');
                             }
                         }
                     }
                 }
                 if ($qresult !== '' && $app_result !== '') {
                     $red_result = 'saved';
                 }
                 $message = "Appraisal process updated successfully";
             }
         }
         if ($red_result === 'saved') {
             $message = "Appraisal process updated successfully";
             $this->_helper->FlashMessenger()->setNamespace('conf_success')->addMessage($message);
             $this->_redirect('appraisalinit/confmanagers/i/' . sapp_Global::_encrypt($init_id));
         }
     }
     $this->view->ratingsflag = $ratingsflag;
     $this->render('configuremanagers');
 }
 public function updateprivilegesforallemployees($initializestep, $appraisaldata)
 {
     $auth = Zend_Auth::getInstance();
     if ($auth->hasIdentity()) {
         $loginUserId = $auth->getStorage()->read()->id;
         $loginuserRole = $auth->getStorage()->read()->emprole;
         $loginuserGroup = $auth->getStorage()->read()->group_id;
         $loginuserArr = array('loginuserid' => $loginUserId, 'loginuserrole' => $loginuserRole, 'loginusergroup' => $loginuserGroup);
     }
     $appraisalQsModel = new Default_Model_Appraisalquestions();
     $app_init_model = new Default_Model_Appraisalinit();
     $appraisalPrivMainModel = new Default_Model_Appraisalqsmain();
     $appraisalPrivTempModel = new Default_Model_Appraisalqstemp();
     $appraisalempratingsmodel = new Default_Model_Appraisalemployeeratings();
     $usersmodel = new Default_Model_Users();
     $departmentsmodel = new Default_Model_Departments();
     $announcementsModel = new Default_Model_Announcements();
     $deptids = '';
     $title = 'Performance Appraisal';
     $description = 'Performance appraisal initialized';
     //echo '<pre>';print_r($this->getRequest()->getPost());exit;
     $questionArr = $this->_request->getParam('check');
     $managercmntsArr = $this->_request->getParam('mgrcmnt');
     $managerratingsArr = $this->_request->getParam('mgrrating');
     $empratingsArr = $this->_request->getParam('empratings');
     $empcmntsArr = $this->_request->getParam('empcmnt');
     $appraisalid = $this->_request->getParam('appraisalid');
     $initializeflag = $this->_request->getParam('initializeflag');
     $initializestep = $this->_request->getParam('initializestep');
     $group_settings = $this->_request->getParam('group_settings');
     $finalarray = array();
     $msgarray = array();
     $mgrIndex = 'MC';
     $mgrratIndex = 'MR';
     $empIndex = 'EC';
     $empratIndex = 'ER';
     $questions = '';
     $qsprivileges = '';
     $trDb = Zend_Db_Table::getDefaultAdapter();
     $trDb->beginTransaction();
     try {
         if (!empty($questionArr)) {
             for ($i = 0; $i < sizeof($questionArr); $i++) {
                 if (isset($managercmntsArr[$questionArr[$i]])) {
                     $managercomments = 1;
                 } else {
                     $managercomments = 0;
                 }
                 if (isset($managerratingsArr[$questionArr[$i]])) {
                     $managerratings = 1;
                 } else {
                     $managerratings = 0;
                 }
                 if (isset($empratingsArr[$questionArr[$i]])) {
                     $empratings = 1;
                 } else {
                     $empratings = 0;
                 }
                 if (isset($empcmntsArr[$questionArr[$i]])) {
                     $empcomments = 1;
                 } else {
                     $empcomments = 0;
                 }
                 /*$finalstring = '{'."$mgrratIndex:1,$mgrIndex:$managercomments,$empratIndex:$empratings,$empIndex:$empcomments".'}';
                 		$finalarray[$questionArr[$i]] = $finalstring;
                 		$finalstring = '';*/
                 $commntsarry = array($mgrratIndex => $managerratings, $mgrIndex => $managercomments, $empratIndex => $empratings, $empIndex => $empcomments);
                 $finalarray[$questionArr[$i]] = $commntsarry;
             }
             $questions = implode(',', $questionArr);
             $qsprivileges = json_encode($finalarray, true);
             $tablename = 'main_pa_questions_privileges_temp';
             /* Updating Group settings if it is 0 */
             if ($group_settings == 0) {
                 $updatestatus = $app_init_model->updategroupsettings(1, $appraisalid);
             }
             /* End */
             /* Updating privileges tables with questions */
             $privilegesdata = array('hr_qs' => $questions, 'hr_group_qs_privileges' => $qsprivileges, 'modifiedby' => $loginUserId, 'modifiedby_role' => $loginuserRole, 'modifiedby_group' => $loginuserGroup, 'modifieddate' => gmdate("Y-m-d H:i:s"));
             $privielgeswhere = " pa_initialization_id = '" . $appraisalid . "' and module_flag=1 and isactive= 1 ";
             $updateprivileges = $appraisalPrivTempModel->SaveorUpdateData($privilegesdata, $privielgeswhere);
             //$updateprivileges = $appraisalQsModel->updatequestionprivileges($tablename,$questions, $qsprivileges,$appraisalid,$loginuserArr);
             /* End */
             $initdata = array('initialize_status' => 2, 'modifiedby' => $loginUserId, 'modifiedby_role' => $loginuserRole, 'modifiedby_group' => $loginuserGroup, 'modifieddate' => gmdate("Y-m-d H:i:s"));
             $initwhere = array('id=?' => $appraisalid);
             /**  Initialization 
              * If initialize
              * Inserting to main table from temp table
              * Updating temp table to isactive 0
              * Updating initialization status in initialization table
              * Sending mails to managers
              * Else
              * Updating initialization status in initialization table
              */
             if ($initializestep == 1) {
                 $initdata['initialize_status'] = 1;
                 $insertQstable = $appraisalQsModel->insertQsData($appraisalid, $loginuserArr);
                 $updateTmptable = $appraisalPrivTempModel->updateQsTempData($appraisalid, $loginuserArr);
                 $app_init_model->SaveorUpdateAppraisalInitData($initdata, $initwhere);
                 /**
                  * Sending mails to managers OR employees based on enable step.
                  */
                 if ($appraisaldata['enable_step'] == 1) {
                     /**
                      * Start 
                      * Sending Mails to Managers if enabled to managers
                      */
                     $getLine1ManagerId = $appraisalPrivMainModel->getLine1ManagerIdMain($appraisalid);
                     if (!empty($getLine1ManagerId)) {
                         foreach ($getLine1ManagerId as $val) {
                             $options['subject'] = APPLICATION_NAME . ': Performance Appraisal Initiated.';
                             $options['header'] = 'Performance Appraisal';
                             $options['toEmail'] = $val['emailaddress'];
                             $options['toName'] = $val['userfullname'];
                             $options['message'] = 'Dear ' . $val['userfullname'] . ', performance appraisal initiated.';
                             $options['cron'] = 'yes';
                             // sapp_Global::_sendEmail($options);
                         }
                     }
                     /**
                      * Mail to performance appraisal group
                      */
                     if (defined('PER_APPRAISAL_' . $appraisaldata['businessunit_id']) && $appraisaldata['businessunit_id'] != '') {
                         $options['subject'] = APPLICATION_NAME . ': Performance Appraisal Initiated To managers.';
                         $options['header'] = 'Performance Appraisal';
                         $options['toEmail'] = constant('PER_APPRAISAL_' . $appraisaldata['businessunit_id']);
                         $options['toName'] = 'Performance Appraisal';
                         $options['message'] = 'Performance appraisal initiated to managers.';
                         $options['cron'] = 'yes';
                         //sapp_Global::_sendEmail($options);
                     }
                     /**
                      * End
                      */
                 } else {
                     /**
                      * Start 
                      * Inserting or Updating employee ratings table when enabled to employees
                      * If record exists then updating else inserting
                      */
                     $employeeidArr = $appraisalPrivMainModel->getemployeeIDs($appraisalid);
                     if (!empty($employeeidArr)) {
                         foreach ($employeeidArr as $emp) {
                             $emprating_Arr = array('pa_initialization_id' => $appraisalid, 'employee_id' => $emp['employee_id'], 'line_manager_1' => $emp['line_manager_1'] != '' ? $emp['line_manager_1'] : NULL, 'line_manager_2' => $emp['line_manager_2'] != '' ? $emp['line_manager_2'] : NULL, 'line_manager_3' => $emp['line_manager_3'] != '' ? $emp['line_manager_3'] : NULL, 'line_manager_4' => $emp['line_manager_4'] != '' ? $emp['line_manager_4'] : NULL, 'line_manager_5' => $emp['line_manager_5'] != '' ? $emp['line_manager_5'] : NULL, 'modifiedby' => $loginUserId, 'modifiedby_role' => $loginuserRole, 'modifiedby_group' => $loginuserGroup, 'modifieddate' => gmdate("Y-m-d H:i:s"));
                             $employeeexistArr = $appraisalempratingsmodel->checkEmployeeExists($appraisalid, $emp['employee_id']);
                             if ($employeeexistArr[0]['empcount'] > 0) {
                                 $qwhere = " employee_id = '" . $emp['employee_id'] . "' and pa_initialization_id='" . $appraisalid . "' and isactive=1";
                             } else {
                                 $emprating_Arr['createdby'] = $loginUserId;
                                 $emprating_Arr['createdby_role'] = $loginuserRole;
                                 $emprating_Arr['createdby_group'] = $loginuserGroup;
                                 $emprating_Arr['createddate'] = gmdate("Y-m-d H:i:s");
                                 $qwhere = '';
                             }
                             $appraisalempratingsmodel->SaveorUpdateAppraisalSkillsData($emprating_Arr, $qwhere);
                             /**
                              * End
                              */
                             /** Start
                              * Sending Mails to employees
                              */
                             $employeeDetailsArr = $usersmodel->getUserDetailsByID($emp['employee_id'], '');
                             if (!empty($employeeDetailsArr)) {
                                 $options['subject'] = APPLICATION_NAME . ': Performance Appraisal Initiated.';
                                 $options['header'] = 'Performance Appraisal';
                                 $options['toEmail'] = $employeeDetailsArr[0]['emailaddress'];
                                 $options['toName'] = $employeeDetailsArr[0]['userfullname'];
                                 $options['message'] = 'Dear ' . $employeeDetailsArr[0]['userfullname'] . ', performance appraisal initiated.';
                                 $options['cron'] = 'yes';
                                 //  sapp_Global::_sendEmail($options);
                             }
                             /**
                              * End
                              */
                         }
                     }
                     if (defined('PER_APPRAISAL_' . $appraisaldata['businessunit_id']) && $appraisaldata['businessunit_id'] != '') {
                         $options['subject'] = APPLICATION_NAME . ': Performance Appraisal Initiated To Employees.';
                         $options['header'] = 'Performance Appraisal';
                         $options['toEmail'] = constant('PER_APPRAISAL_' . $appraisaldata['businessunit_id']);
                         $options['toName'] = 'Performance Appraisal';
                         $options['message'] = 'Performance appraisal initiated to employees.';
                         $options['cron'] = 'yes';
                         // sapp_Global::_sendEmail($options);
                     }
                 }
                 /**
                  * End Sending Mails and updating emp ratings table
                  */
                 /** Start
                  * Announecements
                  */
                 if ($appraisaldata['enable_step'] == 2) {
                     $appImpleData = sapp_PerformanceHelper::check_per_implmentation($appraisaldata['businessunit_id'], $appraisaldata['department_id']);
                     if ($appImpleData['performance_app_flag'] == 1) {
                         $deptArr = $departmentsmodel->getAllDeptsForUnit($appraisaldata['businessunit_id']);
                         if (!empty($deptArr)) {
                             foreach ($deptArr as $dept) {
                                 $deptids .= $dept['id'] . ',';
                             }
                             $deptids = rtrim($deptids, ',');
                         }
                     } else {
                         $deptids = $initialize_Arr['deptid'];
                     }
                     /*	$announcement_arr = array(
                                                   'businessunit_id' => $appraisaldata['businessunit_id']!=''?$appraisaldata['businessunit_id']:NULL,
                                                   'department_id' => $deptids!=''?$deptids:NULL,
                                                   'title' => $title,
                                                   'description' => $description,
                                                   'attachments' => NULL,
                                                   'status' => 2,
                                                   'isactive' => 1,
                     			'createdby' => $loginUserId,
                     						'createdby_role'=>$loginuserRole,
                     			'createdby_group'=>$loginuserGroup,
                                                   'modifiedby' => $loginUserId,
                     						'modifiedby_role'=>$loginuserRole,
                     			'modifiedby_group'=>$loginuserGroup,
                     			'createddate'=>gmdate("Y-m-d H:i:s"),
                                                   'modifieddate'=>gmdate("Y-m-d H:i:s")
                                       			);
                                       			
                                       	$Id = $announcementsModel->SaveorUpdateAnnouncementsData($announcement_arr, ''); */
                 }
                 /**
                  * End
                  */
                 sapp_PerformanceHelper::update_QsParmas_Allemps($questions, $appraisaldata['category_id']);
             } else {
                 $app_init_model->SaveorUpdateAppraisalInitData($initdata, $initwhere);
             }
             $trDb->commit();
             if ($initializestep == 1) {
                 $msgarray = $this->_helper->getHelper("FlashMessenger")->addMessage(array("success" => 'Appraisal initialized successfully'));
                 $this->_redirect('appraisalinit');
             } else {
                 $msgarray = $this->_helper->getHelper("FlashMessenger")->addMessage(array("success" => 'Appraisal configurations are saved to be initialized later.'));
                 $this->_redirect('appraisalinit/assigngroups/i/' . sapp_Global::_encrypt($appraisalid));
             }
         }
     } catch (Exception $e) {
         $trDb->rollBack();
         $msgarray = $this->_helper->getHelper("FlashMessenger")->addMessage(array("error" => $e->getMessage()));
     }
     return $msgarray;
 }