/**
  * This action is used to save/edit group details created by manager.
  * @return json Array of status and message.
  */
 public function savemanagergroupAction()
 {
     $post_values = $this->getRequest()->getPost();
     //echo "<pre>";print_r($post_values);echo "</pre>";exit;
     $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);
     }
     $finalarray = $deleted_emp_arr = $result = array();
     $mgrIndex = 'MC';
     $mgrratIndex = 'MR';
     $empIndex = 'EC';
     $empratIndex = 'ER';
     $questionArr = $post_values['check'];
     $managercmntsArr = isset($post_values['mgrcmnt']) ? $post_values['mgrcmnt'] : array();
     $managerratingsArr = isset($post_values['mgrrating']) ? $post_values['mgrrating'] : array();
     $empratingsArr = isset($post_values['empratings']) ? $post_values['empratings'] : array();
     $empcmntsArr = isset($post_values['empcmnt']) ? $post_values['empcmnt'] : array();
     $empids = $post_values['existetd_mem_str'];
     $groupid = $post_values['groupid'];
     $group_name = $post_values['group_name'];
     $appraisal_id = $post_values['appraisal_id'];
     $manager_id = $post_values['manager_id'];
     $original_mem_str = $post_values['original_mem_str'];
     $action_flag = $post_values['action_flag'];
     $selected_emp_arr = explode(',', $empids);
     $result['flag'] = 'appraisalmanager';
     $trDb = Zend_Db_Table::getDefaultAdapter();
     $trDb->beginTransaction();
     try {
         if ($group_name != '' && !empty($questionArr) && $empids != '') {
             $appraisalGroupModel = new Default_Model_Appraisalgroups();
             $appraisalPrivMainModel = new Default_Model_Appraisalqsmain();
             $CheckDuplicateName = $appraisalGroupModel->getDuplicateGroupName($appraisal_id, $group_name, $groupid != '' ? $groupid : '');
             if (!empty($CheckDuplicateName)) {
                 $duplicateGroupName = $CheckDuplicateName[0]['grpcnt'];
             }
             if ($duplicateGroupName > 0) {
                 $result['result'] = 'error';
                 $result['msg'] = 'Group name already exists.';
             } else {
                 if (!empty($original_mem_str)) {
                     $privilegesdata = array('manager_group_id' => null, 'manager_qs' => null, 'manager_qs_privileges' => null, 'modifiedby' => $loginUserId, 'modifiedby_role' => $loginuserRole, 'modifiedby_group' => $loginuserGroup, 'modifieddate' => gmdate("Y-m-d H:i:s"));
                     $privielgeswhere = " pa_initialization_id = '" . $appraisal_id . "' and line_manager_1 = '" . $manager_id . "' and employee_id IN ({$original_mem_str}) and module_flag=1 and isactive= 1 ";
                     $updateprivileges = $appraisalPrivMainModel->SaveorUpdatePrivilegeData($privilegesdata, $privielgeswhere);
                 }
                 if (!empty($questionArr)) {
                     for ($i = 0; $i < sizeof($questionArr); $i++) {
                         $managercomments = isset($managercmntsArr[$questionArr[$i]]) ? 1 : 0;
                         $managerratings = isset($managerratingsArr[$questionArr[$i]]) ? 1 : 0;
                         $empratings = isset($empratingsArr[$questionArr[$i]]) ? 1 : 0;
                         $empcomments = isset($empcmntsArr[$questionArr[$i]]) ? 1 : 0;
                         $commntsarry = array($mgrratIndex => $managerratings, $mgrIndex => $managercomments, $empratIndex => $empratings, $empIndex => $empcomments);
                         $finalarray[$questionArr[$i]] = $commntsarry;
                     }
                     $questions = implode(',', $questionArr);
                     $qsprivileges = json_encode($finalarray, true);
                     $groupdata = array('pa_initialization_id' => $appraisal_id, 'group_name' => trim($group_name), 'modifiedby' => $loginUserId, 'modifiedby_role' => $loginuserRole, 'modifiedby_group' => $loginuserGroup, 'modifieddate' => gmdate("Y-m-d H:i:s"));
                     if ($groupid != '') {
                         $where = array('id=?' => $groupid);
                         $actionflag = 2;
                     } else {
                         $groupdata['createdby_role'] = $loginuserRole;
                         $groupdata['createdby_group'] = $loginuserGroup;
                         $groupdata['createdby'] = $loginUserId;
                         $groupdata['createddate'] = gmdate("Y-m-d H:i:s");
                         $groupdata['isactive'] = 1;
                         $where = '';
                         $actionflag = 1;
                     }
                     $Id = $appraisalGroupModel->SaveorUpdateAppraisalGroupsData($groupdata, $where);
                     if ($Id != 'update') {
                         $groupid = $Id;
                     }
                     $privilegesdata = array('manager_group_id' => $groupid, 'manager_qs' => $questions, 'manager_qs_privileges' => $qsprivileges, 'modifiedby' => $loginUserId, 'modifiedby_role' => $loginuserRole, 'modifiedby_group' => $loginuserGroup, 'modifieddate' => gmdate("Y-m-d H:i:s"));
                     $privielgeswhere = " pa_initialization_id = '" . $appraisal_id . "' and line_manager_1 = '" . $manager_id . "' and employee_id IN ({$empids}) and module_flag=1 and isactive= 1 ";
                     $updateprivileges = $appraisalPrivMainModel->SaveorUpdatePrivilegeData($privilegesdata, $privielgeswhere);
                     //echo '<pre>';print_r($finalarray);echo "</pre>";
                     $trDb->commit();
                     $result['result'] = 'success';
                     $result['msg'] = "Group " . ($action_flag == 'edit' ? "updated" : "created") . " successfully";
                 } else {
                     $result['result'] = 'error';
                     $result['msg'] = 'No questions to add';
                 }
             }
         } else {
             $result['result'] = 'error';
             $result['msg'] = 'Something went wrong.';
         }
     } catch (Exception $e) {
         $trDb->rollBack();
         $result['result'] = 'error';
         $result['msg'] = $e->getMessage();
     }
     $this->_helper->json($result);
 }
Ejemplo n.º 2
0
 public function savegroupedemployeesajaxAction()
 {
     $ajaxContext = $this->_helper->getHelper('AjaxContext');
     $ajaxContext->addActionContext('savegroupedemployeesajax', 'json')->initContext();
     $this->_helper->layout->disableLayout();
     $appraisalinitmodel = new Default_Model_Appraisalinit();
     $appraisalQsModel = new Default_Model_Appraisalquestions();
     $appraisalGroupModel = new Default_Model_Appraisalgroups();
     $appraisalPrivTempModel = new Default_Model_Appraisalqstemp();
     $appraisalPrivMainModel = new Default_Model_Appraisalqsmain();
     $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);
     }
     $finalarray = array();
     $msgarray = array();
     $deleted_emp_arr = array();
     $mgrIndex = 'MC';
     $mgrratIndex = 'MR';
     $empIndex = 'EC';
     $empratIndex = 'ER';
     $questions = '';
     $qsprivileges = '';
     $errorflag = "true";
     $result['result'] = '';
     $result['msg'] = '';
     $result['flag'] = "appraisal";
     $duplicateGroupName = 0;
     $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');
     $groupid = $this->_request->getParam('groupid');
     $group_name = $this->_request->getParam('group_name');
     $empids = $this->_request->getParam('existetd_mem_str');
     $originalempids = $this->_request->getParam('original_mem_str');
     $group_settings = $this->_request->getParam('group_settings');
     if ($originalempids != '') {
         $orig_emp_arr = explode(',', $originalempids);
     } else {
         $orig_emp_arr = array();
     }
     $selected_emp_arr = explode(',', $empids);
     $appraisaldata = $appraisalinitmodel->getConfigData($appraisalid);
     $initializestep = 0;
     $initializestep = isset($appraisaldata[0]['initialize_status']) ? $appraisaldata[0]['initialize_status'] : 0;
     if ($initializestep == 1) {
         $tablename = 'main_pa_questions_privileges';
     } else {
         $tablename = 'main_pa_questions_privileges_temp';
     }
     $trDb = Zend_Db_Table::getDefaultAdapter();
     $trDb->beginTransaction();
     try {
         if ($group_name != '' && !empty($questionArr) && $empids != '') {
             if ($groupid) {
                 $CheckDuplicateName = $appraisalGroupModel->getDuplicateGroupName($appraisalid, $group_name, $groupid);
             } else {
                 $CheckDuplicateName = $appraisalGroupModel->getDuplicateGroupName($appraisalid, $group_name, '');
             }
             if (!empty($CheckDuplicateName)) {
                 $duplicateGroupName = $CheckDuplicateName[0]['grpcnt'];
             }
             if ($duplicateGroupName > 0) {
                 $result['result'] = 'error';
                 $result['msg'] = 'Group name already exists.';
             } else {
                 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);
                     $groupdata = array('pa_initialization_id' => $appraisalid, 'group_name' => trim($group_name), 'modifiedby' => $loginUserId, 'modifiedby_role' => $loginuserRole, 'modifiedby_group' => $loginuserGroup, 'modifieddate' => gmdate("Y-m-d H:i:s"));
                     if ($groupid != '') {
                         $where = array('id=?' => $groupid);
                         $actionflag = 2;
                     } else {
                         $groupdata['createdby_role'] = $loginuserRole;
                         $groupdata['createdby_group'] = $loginuserGroup;
                         $groupdata['createdby'] = $loginUserId;
                         $groupdata['createddate'] = gmdate("Y-m-d H:i:s");
                         $groupdata['isactive'] = 1;
                         $where = '';
                         $actionflag = 1;
                     }
                     $Id = $appraisalGroupModel->SaveorUpdateAppraisalGroupsData($groupdata, $where);
                     if ($Id != 'update') {
                         $groupid = $Id;
                     }
                     /* Removing privileges for previously assigned employees*/
                     if (!empty($orig_emp_arr)) {
                         $deleted_emp_arr = array_diff($orig_emp_arr, $selected_emp_arr);
                     }
                     if (!empty($deleted_emp_arr)) {
                         foreach ($deleted_emp_arr as $val) {
                             $removeprivileges = $appraisalQsModel->removegroupqsprivileges($tablename, $appraisalid, $val, $loginuserArr);
                         }
                     }
                     /* END */
                     $privilegesdata = array('group_id' => $groupid, '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 employee_id IN({$empids}) and module_flag=1 and isactive= 1 ";
                     if ($initializestep == 1) {
                         $updateprivileges = $appraisalPrivMainModel->SaveorUpdatePrivilegeData($privilegesdata, $privielgeswhere);
                     } else {
                         $updateprivileges = $appraisalPrivTempModel->SaveorUpdateData($privilegesdata, $privielgeswhere);
                     }
                     //$updateprivileges = $appraisalQsModel->updategroupqsprivileges($tablename,$groupid,$questions, $qsprivileges,$appraisalid,$empids,$loginuserArr);
                     /* Update Group setings in initialization table */
                     if ($group_settings == 0) {
                         $updatestatus = $appraisalinitmodel->updategroupsettings(2, $appraisalid);
                     }
                     $trDb->commit();
                     $result['result'] = 'success';
                     $this->_helper->getHelper("FlashMessenger")->addMessage(array("success" => "Employee added to group succesfully."));
                 }
             }
         } else {
             $result['result'] = 'error';
             $result['msg'] = 'Something went wrong.';
         }
     } catch (Exception $e) {
         $trDb->rollBack();
         $result['result'] = 'error';
         $result['msg'] = $e->getMessage();
     }
     $this->_helper->json($result);
 }