public function validateconfigAction($from_year = 0, $to_year = 0, $bunit = 0, $dept_id = 0, $dept_flag = 0, $mode = 0, $call_flag = 0, $is_edit = 0, $appraisal_id = 0, $existing_period = '') { //if ajax call(to year on change) if ($call_flag == 0) { $from_year = $this->_getParam('from_year', null); $to_year = $this->_getParam('to_year', null); $bunit = $this->_getParam('bunit', null); $dept_id = $this->_getParam('dept_id', null); $dept_flag = $this->_getParam('flag', null); $mode = $this->_getParam('mode', null); $is_edit = $this->_getParam('is_edit', null); $appraisal_id = $this->_getParam('appraisal_id', null); $existing_period = $this->_getParam('existing_period', null); } $dept = isset($dept_flag) && $dept_flag == 0 ? $dept_id : 0; $app_init_model = new Default_Model_Appraisalinit(); $exist_appraisal = $app_init_model->checkappadmin($bunit, $dept_id); $json_status = 'fail'; $json_msg_str = ''; $json_app_mode = ''; $json_app_period = 0; $json_app_disp_period = ''; $json_is_exist = 0; $json_rating_type = ''; $existing_app_flag = $app_init_model->getexistingperformanceappflag($bunit, $from_year, $to_year); $app_flag_diff = 0; if (isset($existing_app_flag) && $existing_app_flag != $dept_flag) { $app_flag_diff++; } if ($is_edit == 1) { //get the data for the appraisal based on id to compare from year, to year and period $appraisal_data = $app_init_model->getConfigData($appraisal_id); $appr_from_year = isset($appraisal_data[0]['from_year']) ? $appraisal_data[0]['from_year'] : 0; $appr_to_year = isset($appraisal_data[0]['to_year']) ? $appraisal_data[0]['to_year'] : 0; $appr_mode = isset($appraisal_data[0]['appraisal_mode']) ? $appraisal_data[0]['appraisal_mode'] : ''; $appr_period = isset($appraisal_data[0]['appraisal_period']) ? $appraisal_data[0]['appraisal_period'] : 0; $appraisal_ratings = isset($appraisal_data[0]['appraisal_ratings']) ? $appraisal_data[0]['appraisal_ratings'] : 0; $actual_appr_period = $this->period_helper($appr_mode, $appr_period); if ($from_year == $appr_from_year && $to_year == $appr_to_year && $existing_period == $actual_appr_period) { if ($call_flag == 0) { $this->_helper->json(array('status' => 'success', 'msg_str' => $json_msg_str, 'app_mode' => $appr_mode, 'app_period' => $appr_period, 'app_disp_period' => $actual_appr_period, 'is_exist' => 1, 'rating_type' => $appraisal_ratings)); return; } else { return 'success'; } } } if ((!$exist_appraisal || $is_edit == 1) && $app_flag_diff == 0) { //get the existing appraisal data using business unit $appraisal_data = array(); $json_status = 'success'; // $json_mode = ''; $appraisal_data = $app_init_model->getAppraisalPeriodOnBuDept($bunit, $dept, $from_year, $to_year, 'AND'); $year_diff_exist = 0; if (empty($appraisal_data)) { $appraisal_data_diff = array(); //calculate the difference between toyear and from year // if(is_numeric($from_year) && is_numeric($to_year)) // { $year_diff = $to_year - $from_year; // } //if year difference is 0 if ($year_diff == 0) { //check with from year or to year $appraisal_data_diff = $app_init_model->getAppraisalPeriodOnBuDept($bunit, $dept, $from_year, $to_year, 'OR'); if (!empty($appraisal_data_diff)) { $year_diff_exist++; } } else { if ($year_diff == 1) { //check with from year or (to year - 1) $to_in_year = $to_year - 1; $appraisal_data_diff = $app_init_model->getAppraisalPeriodOnBuDept($bunit, $dept, $from_year, $to_in_year, 'AND'); if (!empty($appraisal_data_diff)) { $year_diff_exist++; } } } // if($year_diff_exist == 0 && $dept_flag == 0) // { // $appraisal_data = $app_init_model->getAppraisalPeriodOnBuDept($bunit,$dept,$from_year,$to_year,'AND',1); // } } $exist_flag = 0; $exist_str = ''; if (!$year_diff_exist) { if (!empty($appraisal_data)) { foreach ($appraisal_data as $app_data) { $appraisal_mode = !empty($app_data['appraisal_mode']) ? $app_data['appraisal_mode'] : ''; $appraisal_period = !empty($app_data['appraisal_period']) ? $app_data['appraisal_period'] : 0; // $appraisal_id = !empty($app_data['id'])?$app_data['id']:0; switch ($appraisal_mode) { case 'Quarterly': if ($appraisal_period <= 4) { $exist_flag++; // $exist_str .= $appraisal_id.','; } break; case 'Half-yearly': if ($appraisal_period <= 2) { $exist_flag++; // $exist_str .= $appraisal_id.','; } break; case 'Yearly': if ($appraisal_period <= 1) { $exist_flag++; // $exist_str .= $appraisal_id.','; } break; } } if ($exist_flag > 0) { // $json_status = 'fail'; $exist_dept_flag = isset($appraisal_data[0]['performance_app_flag']) ? $appraisal_data[0]['performance_app_flag'] : ''; //if existing // $json_app_mode = ''; // $json_app_period = 0; if ($dept_flag == $exist_dept_flag) { $appraisal_mode = isset($appraisal_data[0]['appraisal_mode']) ? $appraisal_data[0]['appraisal_mode'] : ''; $appraisal_period = isset($appraisal_data[0]['appraisal_period']) ? $appraisal_data[0]['appraisal_period'] : 0; $appraisal_rating_type = isset($appraisal_data[0]['appraisal_ratings']) ? $appraisal_data[0]['appraisal_ratings'] : ''; $json_status = 'success'; switch ($appraisal_mode) { case 'Quarterly': if ($appraisal_period <= 4) { $appraisal_period++; if ($appraisal_period > 4) { $json_status = 'fail'; } } break; case 'Half-yearly': if ($appraisal_period <= 2) { $appraisal_period++; if ($appraisal_period > 2) { $json_status = 'fail'; } } break; case 'Yearly': if ($appraisal_period <= 1) { $appraisal_period++; if ($appraisal_period > 1) { $json_status = 'fail'; } } break; } if ($json_status == 'fail') { $json_msg_str = 'Appraisal is completed for the selected years.'; } else { $json_app_period = $appraisal_period; $json_app_mode = $appraisal_mode; $json_app_disp_period = $this->period_helper($json_app_mode, $json_app_period); $json_rating_type = $appraisal_rating_type; } $json_is_exist = 1; } else { $json_status = 'fail'; $json_msg_str = 'Appraisal is already configured ' . ($exist_dept_flag == 1 ? 'business unit' : 'department') . ' wise.'; $json_app_mode = ''; $json_app_period = 1; } } else { $json_status = 'success'; $json_msg_str = ''; $json_app_mode = ''; $json_app_period = 1; } } else { $json_status = 'success'; $json_msg_str = ''; $json_app_mode = ''; $json_app_period = 1; } } else { $json_status = 'fail'; $json_msg_str = 'Please select valid year range.'; $json_app_mode = ''; $json_app_period = 0; } } else { $json_msg_str = 'Appraisal already exist.'; } // echo 'status '.$json_status.' msg_str '.$json_msg_str.' app_mode '.$json_app_mode.' app_period '.$json_app_period.' is_exist '.$json_is_exist; // die(); if ($call_flag == 0) { $this->_helper->json(array('status' => $json_status, 'msg_str' => $json_msg_str, 'app_mode' => $json_app_mode, 'app_period' => $json_app_period, 'app_disp_period' => $json_app_disp_period, 'is_exist' => $json_is_exist, 'rating_type' => $json_rating_type)); } else { return $json_status; } }
public function save($appraisalInitForm, $is_edit = 0) { $auth = Zend_Auth::getInstance(); if ($auth->hasIdentity()) { $loginUserId = $auth->getStorage()->read()->id; $loginuserRole = $auth->getStorage()->read()->emprole; $loginuserGroup = $auth->getStorage()->read()->group_id; } $appraisalInitModel = new Default_Model_Appraisalinit(); $dept_model = new Default_Model_Departments(); $msgarray = array(); $errorflag = 'true'; $eligibilityflag = $this->_request->getParam('eligibilityflag'); $eligibility = $this->_request->getParam('eligibility'); $eligibility_hidden = $this->_request->getParam('eligibility_hidden'); $eligibility_value = $this->_request->getParam('eligibility_value'); if ($eligibilityflag == 1) { if (empty($eligibility)) { $msgarray['eligibility'] = "Please select eligiblity."; $errorflag = 'false'; } } $enable_step = $this->_request->getParam('enable_step'); $businessunit_id = $this->_request->getParam('businessunit_id'); $department_id = $this->_request->getParam('department_id', null); $performance_app_flag = $this->_request->getParam('performance_app_flag'); $id = $this->_request->getParam('id'); if ($appraisalInitForm->isValid($this->_request->getPost()) && $errorflag == 'true') { try { $post_values = $this->_request->getPost(); $pa_configured_id = $this->_request->getParam('configuration_id'); $appraisal_mode = $this->_request->getParam('appraisal_mode'); $appraisal_period = $this->_request->getParam('appraisal_period'); $from_year = $this->_request->getParam('from_year'); $to_year = $this->_request->getParam('to_year'); $category_id = $this->_request->getParam('category_id', null); $status = $this->_request->getParam('status'); $disable_arr = $this->_request->getParam('disable_arr', array()); $management_appraisal = $this->_request->getParam('management_appraisal', null); $appraisal_ratings = $this->_request->getParam('appraisal_ratings', null); $managers_due_date = $this->_request->getParam('managers_due_date'); $employee_due_date = $this->_request->getParam('employee_due_date'); $hid_performance_app_flag = $this->_request->getParam('hid_performance_app_flag'); $hid_appraisal_period = $this->_request->getParam('hid_appraisal_period', null); //checking whether the appraisal exists for the given peroid if ($this->getperiodAction($from_year, $to_year, $businessunit_id, $department_id, $hid_performance_app_flag, $appraisal_mode, 1, $is_edit, $id, $appraisal_period) == 'success') { if (count($eligibility) > 0) { $eligibility = implode(',', $eligibility); } else { $eligibility = null; } if (count($eligibility_hidden) > 0) { $eligibility_hidden = implode(',', $eligibility_hidden); } else { $eligibility_hidden = null; } if (count($category_id) > 0) { $category_id = implode(',', $category_id); } else { $category_id = null; } $menumodel = new Default_Model_Menu(); $actionflag = ''; $tableid = ''; $data = array('businessunit_id' => $businessunit_id, 'department_id' => $hid_performance_app_flag == 0 ? $department_id : null, 'enable_step' => $enable_step, 'appraisal_mode' => $appraisal_mode, 'appraisal_period' => $hid_appraisal_period, 'from_year' => $from_year, 'to_year' => $to_year, 'managers_due_date' => sapp_Global::change_date($managers_due_date, 'database'), 'employees_due_date' => sapp_Global::change_date($employee_due_date, 'database'), 'eligibility' => $eligibilityflag == 1 ? $eligibility : $eligibility_value, 'category_id' => $category_id, 'status' => $status, 'modifiedby' => $loginUserId, 'modifiedby_role' => $loginuserRole, 'modifiedby_group' => $loginuserGroup, 'modifieddate' => gmdate("Y-m-d H:i:s")); if ($id != '') { $where = array('id=?' => $id); $actionflag = 2; } else { $app_data = $appraisalInitModel->check_per_implmentation($businessunit_id, $department_id); $data['pa_configured_id'] = !empty($app_data) ? $app_data['id'] : ''; $data['appraisal_ratings'] = !empty($app_data) ? $app_data['appraisal_ratings'] : 1; $data['createdby_role'] = $loginuserRole; $data['createdby_group'] = $loginuserGroup; $data['createdby'] = $loginUserId; $data['createddate'] = gmdate("Y-m-d H:i:s"); $data['isactive'] = 1; $where = ''; $actionflag = 1; } $Id = $appraisalInitModel->SaveorUpdateAppraisalInitData($data, $where); if ($Id == 'update') { $tableid = $id; $this->_helper->FlashMessenger()->setNamespace('appinit_success')->addMessage('Appraisal process updated successfully'); } else { $this->_helper->FlashMessenger()->setNamespace('appinit_success')->addMessage('Appraisal process added successfully'); $tableid = $Id; } $menuidArr = $menumodel->getMenuObjID('/appraisalinit'); $menuID = $menuidArr[0]['id']; $result = sapp_Global::logManager($menuID, $actionflag, $loginUserId, $tableid); $this->_redirect('appraisalinit/confmanagers/i/' . sapp_Global::_encrypt($tableid)); } else { if ($loginuserRole == SUPERADMINROLE || $loginuserGroup == MANAGEMENT_GROUP) { if ($performance_app_flag == 0) { if (isset($businessunit_id) && $businessunit_id != '') { $appraisalInitForm->setDefault('businessunit_id', $businessunit_id); $app_init_model = new Default_Model_Appraisalinit(); $appraisalInitForm->department_id->clearMultiOptions(); $appraisalInitForm->department_id->addMultiOption('', 'Select Department'); if ($id == '') { $dept_data = $app_init_model->getdeparmentsadmin($businessunit_id); if (count($dept_data) > 0) { foreach ($dept_data as $dept) { $appraisalInitForm->department_id->addMultiOption($dept['id'], utf8_encode($dept['deptname'])); } } } } if (isset($department_id) && $department_id != 0 && $department_id != '') { if ($id != '') { $dept_data = $dept_model->getParicularDepartmentId($department_id); if (count($dept_data) > 0) { $dept_data = $dept_data[0]; $appraisalInitForm->department_id->addMultiOption($dept_data['id'], $dept_data['deptname']); $appraisalInitForm->department_id->setValue($department_id); } } $appraisalInitForm->setDefault('department_id', $department_id); $app_cnt = $app_init_model->checkappadmin($businessunit_id, $department_id); if ($app_cnt > 0) { $msgarray['department_id'] = 'Appraisal already exists for this department.'; } } } } $msgarray['to_year'] = "Please select a valid year range."; return $msgarray; } } catch (Exception $e) { $msgarray['businessunit_name'] = "Something went wrong, please try again."; return $msgarray; } } else { $messages = $appraisalInitForm->getMessages(); foreach ($messages as $key => $val) { foreach ($val as $key2 => $val2) { $msgarray[$key] = $val2; break; } } if ($loginuserRole == SUPERADMINROLE || $loginuserGroup == MANAGEMENT_GROUP) { if ($performance_app_flag == 0) { if (isset($businessunit_id) && $businessunit_id != '') { $appraisalInitForm->setDefault('businessunit_id', $businessunit_id); $app_init_model = new Default_Model_Appraisalinit(); $appraisalInitForm->department_id->clearMultiOptions(); $appraisalInitForm->department_id->addMultiOption('', 'Select Department'); if ($id == '') { $dept_data = $app_init_model->getdeparmentsadmin($businessunit_id); if (count($dept_data) > 0) { foreach ($dept_data as $dept) { $appraisalInitForm->department_id->addMultiOption($dept['id'], utf8_encode($dept['deptname'])); } } } } if (isset($department_id) && $department_id != 0 && $department_id != '') { if ($id != '') { $dept_data = $dept_model->getParicularDepartmentId($department_id); if (count($dept_data) > 0) { $dept_data = $dept_data[0]; $appraisalInitForm->department_id->addMultiOption($dept_data['id'], $dept_data['deptname']); $appraisalInitForm->department_id->setValue($department_id); } } $appraisalInitForm->setDefault('department_id', $department_id); $app_cnt = $app_init_model->checkappadmin($businessunit_id, $department_id); if ($app_cnt > 0) { $msgarray['department_id'] = 'Appraisal already exists for this department.'; } } } } return $msgarray; } }