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); $loginUserEmpId = $auth->getStorage()->read()->employeeId; $loginUserfullname = $auth->getStorage()->read()->userfullname; } $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); if ($appraisaldata['enable_step'] == 2) { /** * 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 updating emp ratings table */ } } } //enable_step=2 scenario //Logs storing $actionflag = 1; $tableid = ''; $menuID = INITIALIZE_APPRAISAL; sapp_Global::logManager($menuID, $actionflag, $loginUserId, $tableid); /** * Sending mails to HR,Super Admin,Management,(managers OR employees) based on enable step. */ $appraisalratingsmodel = new Default_Model_Appraisalratings(); $app_manager_model = new Default_Model_Appraisalmanager(); //to get initialization details using appraisal Id for Business Unit,Department,To Year $appraisal_details = $appraisalratingsmodel->getappdata($appraisalid); if (!empty($appraisal_details)) { $businessUnit = $appraisal_details['businessunit_id']; $department = $appraisal_details['deptid']; $bunit = $appraisal_details['unitname']; $dept = $appraisal_details['deptname']; $to_year = $appraisal_details['to_year']; $appraisalconfigmodel = new Default_Model_Appraisalconfig(); if ($department != '') { $employeeDetailsArr = $appraisalconfigmodel->getUserDetailsByID($businessUnit, $department); } else { $employeeDetailsArr = $appraisalconfigmodel->getUserDetailsByID($businessUnit, ''); } $dept_str = $dept == '' ? " " : "and department <b>{$dept}</b> "; $emp_id_str = $loginuserRole == SUPERADMINROLE ? " " : "({$loginUserEmpId})"; //Preparing Employee array for Bcc $empArr = array(); if (!empty($employeeDetailsArr)) { $empArrList = ''; foreach ($employeeDetailsArr as $emp) { array_push($empArr, $emp['emailaddress']); } } $mail_str = $appraisaldata['enable_step'] == 1 ? 'to managers' : 'to employees'; $empmgrArr = array(); if ($appraisaldata['enable_step'] == 1) { $getLine1ManagerId = $appraisalPrivMainModel->getLine1ManagerIdMain($appraisalid); foreach ($getLine1ManagerId as $mgr) { array_push($empmgrArr, $mgr['emailaddress']); } } else { $empIdArr = array(); $empIdList = ''; $employeeidArr = $appraisalPrivMainModel->getemployeeIDs($appraisalid); //fetching Employee Ids if (!empty($employeeidArr)) { foreach ($employeeidArr as $emp) { array_push($empIdArr, $emp['employee_id']); } $empIdList = implode(',', $empIdArr); //Preparing Employee Id List $empDetailsArr = $app_manager_model->getUserDetailsByEmpID($empIdList); //Fetching employee details if (!empty($empDetailsArr)) { foreach ($empDetailsArr as $emp) { array_push($empmgrArr, $emp['emailaddress']); //preparing Bcc array } } } } $totalArr = array_merge($empArr, $empmgrArr); //Sending mail to Super admin $options['subject'] = APPLICATION_NAME . ': Performance Appraisal Initialization'; $options['header'] = 'Performance Appraisal Initialization : ' . $to_year; $options['toEmail'] = SUPERADMIN_EMAIL; $options['toName'] = 'Super Admin'; $options['bcc'] = $totalArr; $options['message'] = "<div style='padding: 0; text-align: left; font-size:14px; font-family:Arial, Helvetica, sans-serif;'>\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span style='color:#3b3b3b;'>Hi,</span><br />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div style='padding:20px 0 0 0;color:#3b3b3b;'>Performance appraisal has been initialized {$mail_str} for the year <b>{$to_year}</b> for business unit <b>{$bunit}</b> {$dept_str} by " . $loginUserfullname . $emp_id_str . " </div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div style='padding:20px 0 10px 0;'>Please <a href=" . BASE_URL . " target='_blank' style='color:#b3512f;'>click here</a> to login to your <b>" . APPLICATION_NAME . "</b> account to check the details.</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div> "; $mail_id = sapp_Global::_sendEmail($options); } 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; }
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; }