public function save($processesform, $processdata) { $baseUrl = DOMAIN; $baseUrl = rtrim($baseUrl, '/'); $auth = Zend_Auth::getInstance(); if ($auth->hasIdentity()) { $loginUserId = $auth->getStorage()->read()->id; $loginuserRole = $auth->getStorage()->read()->emprole; } $usermodel = new Default_Model_Users(); $hrem = 'true'; $mngmntem = 'true'; $agencyEmail = ''; $lmanager1Email = ''; $lmanager1Name = 'Manager'; $agencysalutationName = 'Agency'; $id = $this->getRequest()->getParam('id'); $idData = $this->getRequest()->getParam('unitId'); $idArr = array(); $idArr = explode('-', $idData); $specimen_id = $idArr[0]; $userflag = $idArr[1]; $msgarray = array(); if ($idArr[1] == 2) { $flag = 'cand'; $person = 'candidate'; } else { $flag = 'emp'; $person = 'employee'; } $processesmodel = new Default_Model_Processes(); $empscreeningModel = new Default_Model_Empscreening(); $statusFlag = ''; $close = ''; $controllername = 'processes'; $errorflag = 'true'; $BGStatus = ''; $oldbgstatus = ''; $mailsentflag = 0; if (!empty($processdata)) { $newStatus = $this->getRequest()->getParam('process_status'); $previousstatus = $processdata[0]['process_status']; $agencyid = $processdata[0]['agencyid']; $checktype = $processdata[0]['checktypeid']; $processStatus = $processesmodel->getProcessStatus($specimen_id, $userflag, $agencyid, $checktype); if (!empty($processStatus) && sizeof($processStatus) > 0) { $oldstatus = $processStatus[0]['process_status']; $BGStatus = $processStatus[0]['bgcheck_status']; /* Check - Adding a record with same userid, agencyid and check type */ $exists = 'false'; for ($i = 0; $i < sizeof($processStatus); $i++) { if (($processStatus[$i]['process_status'] == 'On hold' || $processStatus[$i]['process_status'] == 'In process') && $processStatus[$i]['process_status'] == $newStatus) { $exists = 'true'; } } if ($newStatus == $previousstatus) { $msgarray['StatusError'] = "Please change the status."; $errorflag = "false"; } else { if ($BGStatus != 'Complete' && $exists == 'true') { $msgarray['StatusError'] = "The " . $person . " is already assigned to the selected agency. Please re-assign the " . $person . " to another agency."; $errorflag = "false"; } } /* END */ } } else { $checktype = $this->_request->getParam('checktype'); $radio_pocId = $this->_request->getParam('contactRadio'); $agencyid = $this->_request->getParam('agencyids'); $newStatus = 'In process'; $agencyData = array(); $agencyPOCData = array(); if (empty($checktype) && $checktype == '') { $msgarray['checktype'] = "Please check atleast one screening type"; $errorflag = "false"; } else { if (empty($radio_pocId) || $radio_pocId == '') { $msgarray['contactRadio'] = "Please select point of contact"; $errorflag = "false"; } } if ($checktype) { $agencyArr = array(); $agencyArr = $checktype; $agencyData = $empscreeningModel->getAgencyData($agencyArr, '', ''); } if (!isset($agencyid) || $agencyid == '') { $agencyid = $this->getRequest()->getParam('defaultagencyid'); } if (!isset($agencyid) || $agencyid == '') { $msgarray['agencyids'] = "Please select agency."; $errorflag = "false"; } if ($agencyid) { $agencyPOCData = $empscreeningModel->getAgencyPOCData($agencyid); } $this->view->agencyData = $agencyData; $this->view->agencyPOCData = $agencyPOCData; /* Checking for configurations - screening type and agencies */ $checktypeModal = new Default_Model_Bgscreeningtype(); $agencymodel = new Default_Model_Agencylist(); $typesData = $checktypeModal->fetchAll('isactive=1', 'type')->toArray(); $agencyData = $agencymodel->fetchAll('isactive=1', 'agencyname')->toArray(); for ($i = 0; $i < sizeof($agencyPOCData); $i++) { if ($agencyPOCData[$i]['id'] == $radio_pocId) { $agencyEmail = $agencyPOCData[$i]['email']; $agencyfname = $agencyPOCData[$i]['first_name']; $agencylname = $agencyPOCData[$i]['last_name']; $agencysalutationName = $agencyfname . ' ' . $agencylname; } } if (empty($typesData)) { $msgarray['checktype'] = 'Screening types are not configured yet.'; $errorflag = 'false'; } if (empty($agencyData)) { $msgarray['agencyids'] = 'Agencies are not added yet.'; $errorflag = 'false'; } $this->view->msgarray = $msgarray; /* */ /* Check - Adding a record with same userid, agencyid and check type (for each check type ) */ if (is_array($checktype) && $errorflag != "false") { for ($i = 0; $i < sizeof($checktype); $i++) { $processStatus = array(); $processStatus = $processesmodel->getProcessStatus($specimen_id, $userflag, $agencyid, $checktype[$i]); if (!empty($processStatus) && sizeof($processStatus > 0)) { $exists = 'false'; for ($i = 0; $i < sizeof($processStatus); $i++) { if ($processStatus[$i]['process_status'] == 'On hold' || $processStatus[$i]['process_status'] == 'In process') { $exists = 'true'; } } $oldstatus = $processStatus[0]['process_status']; $BGStatus = $processStatus[0]['bgcheck_status']; if ($exists == 'true' && $BGStatus != 'Complete') { $msgarray['StatusError'] = "The " . $person . " is already assigned to the selected agency. Please re-assign the " . $person . " to another agency."; $errorflag = "false"; } } $oldbgstatusData = $processesmodel->getProcessStatus($specimen_id, $userflag, '', ''); if (!empty($oldbgstatusData)) { $oldbgstatus = $oldbgstatusData[0]['bgcheck_status']; } else { $oldbgstatus = ''; } } } /* END */ } if ($processesform->isValid($this->_request->getPost()) && $errorflag != 'false') { $date = new Zend_Date(); $menumodel = new Default_Model_Menu(); $actionflag = ''; $tableid = ''; /* A New process is created for a user whose background check status is in 'Complete' status. Then updating the bg status to 'In process' */ if (($BGStatus == 'Complete' || $oldbgstatus == 'Complete' || $BGStatus == 'On hold' || $oldbgstatus == 'On hold') && $newStatus == 'In process') { $totalstatusData = array('bgcheck_status' => 'In process', 'modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s")); $totalstatusWhere = array('specimen_id=?' => $specimen_id, 'flag=?' => $userflag); $empscreeningModel->SaveorUpdateDetails($totalstatusData, $totalstatusWhere); /* Updating back ground check status to In process in employees/candidates status */ if ($userflag == 1) { $empData = array('backgroundchk_status' => 'In process', 'modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s")); $empWhere = array('id=?' => $specimen_id); $usermodel->addOrUpdateUserModel($empData, $empWhere); } else { $candModel = new Default_Model_Candidatedetails(); $candData = array('backgroundchk_status' => 'In process', 'modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s")); $candWhere = array('id=?' => $specimen_id); $candModel->SaveorUpdateUserData($candData, $candWhere); } /* END */ /* Mail to HRD, Line 1 and Line 2 managers that the background checks has been re-opened */ if ($BGStatus != 'On hold' && $oldbgstatus != 'On hold') { $empData = $empscreeningModel->getEmpPersonalData($specimen_id, $userflag); if ($userflag == 1) { $username = $empData[0]['name']; $lmanager1Email = $empData[0]['rmanager_email']; $lmanager1Name = $empData[0]['reporting_manager']; } else { $username = $empData[0]['candidate_name']; $lmanager1Email = ''; } $bid = ''; if (isset($empData[0]['businessid'])) { $bid = $empData[0]['businessid']; } if (isset($lmanager1Email) && $lmanager1Email != '') { $manager1 = array($lmanager1Email); } else { $manager1 = array(); } if (isset($agencyEmail) && $agencyEmail != '') { $agencyemail1 = array($agencyEmail); } else { $agencyemail1 = array(); } if (defined('BG_CHECKS_MNGMNT_' . $bid) && $bid != '') { $mngmntemailId = explode(",", constant('BG_CHECKS_MNGMNT_' . $bid)); } else { $mngmntem = 'false'; $mngmntemailId = array(); } if (defined('BG_CHECKS_HR_' . $bid) && $bid != '') { $hremailId = explode(",", constant('BG_CHECKS_HR_' . $bid)); } else { $hrem = 'false'; $hremailId = array(); } $emailArr = array_merge($agencyemail1, $manager1, $mngmntemailId, $hremailId); for ($i = 0; $i < sizeof($emailArr); $i++) { $salutation = 'Dear Sir/Madam,'; if ($i == 0) { $salutation = 'Dear ' . ucfirst($agencysalutationName) . ','; $options['toName'] = ucfirst($agencysalutationName); } if ($i == 1) { $salutation = 'Dear ' . ucfirst($lmanager1Name) . ','; $options['toName'] = ucfirst($lmanager1Name); } if ($i == 2) { $salutation = 'Dear Management,'; $options['toName'] = 'Management'; } if ($i == 3) { $salutation = 'Dear HR,'; $options['toName'] = 'HR'; } $options['subject'] = APPLICATION_NAME . ' : Background checks re-opened'; $options['header'] = 'Background checks re-opened'; $options['toEmail'] = $emailArr[$i]; $createdbyName = $usermodel->getUserDetails($loginUserId); if ($i == 0) { $mailsentflag = 1; $options['message'] = '<div>' . $salutation . '<div>The background check for ' . ucfirst($username) . ' has been re-opened by ' . $createdbyName[0]['userfullname'] . '. </div> <div style="padding:20px 0 10px 0;">Please <a href="' . $baseUrl . '/index/popup" target="_blank" style="color:#b3512f;">click here</a> to login and check the details.</div> </div>'; } else { $options['message'] = '<div>' . $salutation . '<div>The background check for ' . ucfirst($username) . ' has been re-opened by ' . $createdbyName[0]['userfullname'] . '. </div> <div style="padding:20px 0 10px 0;">Please <a href="' . $baseUrl . '/index/popup" target="_blank" style="color:#b3512f;">click here</a> to login and check the details.</div> </div>'; } $options['cron'] = 'yes'; sapp_Global::_sendEmail($options); } } /* END */ } /* END */ $data = array('specimen_id' => $specimen_id, 'flag' => $userflag, 'bgagency_id' => $agencyid, 'modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s")); if ($id != '') { $data['process_status'] = $newStatus; $data['explanation'] = NULL; $where = array('id=?' => $id); $actionflag = 2; } else { $data['process_status'] = $newStatus; $data['bgagency_pocid'] = $radio_pocId; $data['createdby'] = $loginUserId; $data['createddate'] = gmdate("Y-m-d H:i:s"); $data['isactive'] = 1; $where = ''; $actionflag = 1; if ($newStatus == 'In process' && ($BGStatus != 'Complete' || $oldbgstatus != 'Complete' || $BGStatus != 'On hold' || $oldbgstatus != 'On hold') && $mailsentflag == 0) { $empData = $empscreeningModel->getEmpPersonalData($specimen_id, $userflag); $table = ''; if ($userflag == 1) { $username = $empData[0]['name']; $lmanager1Email = $empData[0]['rmanager_email']; $lmanager1Name = $empData[0]['reporting_manager']; $table = '<div> <table border="1" style="border-collapse:collapse;"> <tr><td>Employee ID</td><td>' . $empData[0]['employee_id'] . '</td></tr> <tr><td>Employee Email</td><td>' . $empData[0]['email_id'] . '</td></tr> <tr><td>Employee Designation</td><td>' . $empData[0]['designation'] . '</td></tr> </table> </div>'; } else { $username = $empData[0]['candidate_name']; $lmanager1Email = ''; $table = '<div>Candidate Email : ' . $empData[0]['email'] . '</div>'; } if ($agencysalutationName != '') { $salutation = 'Dear ' . ucfirst($agencysalutationName) . ','; $options['toName'] = ucfirst($agencysalutationName); } else { $salutation = 'Dear Sir/Madam,'; $options['toName'] = 'Agency'; } $createdbyName = $usermodel->getUserDetails($loginUserId); $options['subject'] = APPLICATION_NAME . ' : Background checks initiated'; $options['header'] = 'Background checks initiated'; $options['toEmail'] = $agencyEmail; $options['message'] = '<div>' . $salutation . '<div>' . ucfirst($username) . ' has been sent for background checks by ' . ucfirst($createdbyName[0]['userfullname']) . '. Please find the details below.</div>' . $table . ' <div style="padding:20px 0 10px 0;">Please <a href="' . $baseUrl . '/index/popup" target="_blank" style="color:#b3512f;">click here</a> to login and check the details.</div> </div>'; $options['cron'] = 'yes'; sapp_Global::_sendEmail($options); } } if (is_array($checktype)) { for ($i = 0; $i < sizeof($checktype); $i++) { $data['bgcheck_type'] = $checktype[$i]; $detailId = $empscreeningModel->SaveorUpdateDetails($data, $where); } } else { $data['bgcheck_type'] = $checktype; $detailId = $empscreeningModel->SaveorUpdateDetails($data, $where); } /* If all the processes are in 'Complete' status, then updating the background check status to 'Complete' and sending mail to HR, reporting manager */ $checkAllprocesses = $processesmodel->getProcessStatus($specimen_id, $userflag); $completecount = 0; $onholdcount = 0; for ($i = 0; $i < sizeof($checkAllprocesses); $i++) { if ($checkAllprocesses[$i]['process_status'] == 'Complete') { $completecount = $completecount + 1; } } if ($completecount == sizeof($checkAllprocesses)) { $totalstatusData = array('bgcheck_status' => 'Complete', 'modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s")); $totalstatusWhere = array('specimen_id=?' => $specimen_id, 'flag=?' => $userflag); $empscreeningModel->SaveorUpdateDetails($totalstatusData, $totalstatusWhere); /* Updating back ground check status to Completed in employees/candidates status */ if ($userflag == 1) { $usermodel = new Default_Model_Users(); $empData = array('backgroundchk_status' => 'Completed', 'modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s")); $empWhere = array('id=?' => $specimen_id); $usermodel->addOrUpdateUserModel($empData, $empWhere); } else { $candModel = new Default_Model_Candidatedetails(); $candData = array('backgroundchk_status' => 'Completed', 'modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s")); $candWhere = array('id=?' => $specimen_id); $candModel->SaveorUpdateUserData($candData, $candWhere); } /* END */ /* Mail to HRD, Line 1 and Line 2 managers */ if ($newStatus == 'Complete') { $empData = $empscreeningModel->getEmpPersonalData($specimen_id, $userflag); if ($userflag == 1) { $username = $empData[0]['name']; $lmanager1Email = $empData[0]['rmanager_email']; $lmanager1Name = $empData[0]['reporting_manager']; } else { $username = $empData[0]['name']; $lmanager1Email = ''; } $bid = ''; if (isset($empData[0]['businessid'])) { $bid = $empData[0]['businessid']; } if (isset($lmanager1Email) && $lmanager1Email != '') { $manager1 = array($lmanager1Email); } else { $manager1 = array(); } if (defined('BG_CHECKS_MNGMNT_' . $bid) && $bid != '') { $mngmntemailId = explode(",", constant('BG_CHECKS_MNGMNT_' . $bid)); } else { $mngmntemailId = array(); } if (defined('BG_CHECKS_HR_' . $bid) && $bid != '') { $hremailId = explode(",", constant('BG_CHECKS_HR_' . $bid)); } else { $hremailId = array(); } $emailArr = array_merge($manager1, $mngmntemailId, $hremailId); for ($i = 0; $i < sizeof($emailArr); $i++) { $salutation = 'Dear Sir/Madam,'; if ($i == 0) { $salutation = 'Dear ' . ucfirst($lmanager1Name) . ','; $options['toName'] = ucfirst($lmanager1Name); } else { if ($i == 1) { $salutation = 'Dear Management,'; $options['toName'] = 'Management'; } else { $salutation = 'Dear HR,'; $options['toName'] = 'HR'; } } $options['subject'] = APPLICATION_NAME . ' : Background checks completed'; $options['header'] = 'Background checks completed'; $options['toEmail'] = $emailArr[$i]; $options['message'] = '<div>' . $salutation . '<div>The background check for ' . ucfirst($username) . ' has been completed.</div> <div style="padding:20px 0 10px 0;">Please <a href="' . $baseUrl . '/index/popup" target="_blank" style="color:#b3512f;">click here</a> to login and check the details.</div> </div>'; $options['cron'] = 'yes'; sapp_Global::_sendEmail($options); } } /* END */ } /* End */ /* If all the processes are in 'On hold' status, then updating the background check status to 'On hold' */ for ($i = 0; $i < sizeof($checkAllprocesses); $i++) { if ($checkAllprocesses[$i]['process_status'] == 'On hold') { $onholdcount = $onholdcount + 1; } } if ($onholdcount == sizeof($checkAllprocesses)) { $totalstatusData = array('bgcheck_status' => 'On hold', 'modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s")); $totalstatusWhere = array('specimen_id=?' => $specimen_id, 'flag=?' => $userflag); $empscreeningModel->SaveorUpdateDetails($totalstatusData, $totalstatusWhere); /* Updating back ground check status to Completed in employees/candidates status */ if ($userflag == 1) { $usermodel = new Default_Model_Users(); $empData = array('backgroundchk_status' => 'On hold', 'modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s")); $empWhere = array('id=?' => $specimen_id); $usermodel->addOrUpdateUserModel($empData, $empWhere); } else { $candModel = new Default_Model_Candidatedetails(); $candData = array('backgroundchk_status' => 'On hold', 'modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s")); $candWhere = array('id=?' => $specimen_id); $candModel->SaveorUpdateUserData($candData, $candWhere); } /* END */ } /* END */ if ($detailId == 'update') { $tableid = $id; $this->view->eventact = 'updated'; } else { $tableid = $detailId; $this->view->eventact = 'added'; } $actionflag = 2; //Edit of the candidate or employee $menuidArr = $menumodel->getMenuObjID('/empscreening'); $menuID = $menuidArr[0]['id']; $result = sapp_Global::logManager($menuID, $actionflag, $loginUserId, $specimen_id . '-' . $userflag); $close = 'close'; $this->view->popup = $close; } else { $messages = $processesform->getMessages(); foreach ($messages as $key => $val) { foreach ($val as $key2 => $val2) { $msgarray[$key] = $val2; break; } if (empty($checktypesData)) { $msgarray['checktype'] = 'Screening types are not configured yet.'; } if (empty($checkagencyData)) { $msgarray['agencyids'] = 'Agencies are not added yet.'; } } return $msgarray; } $this->view->statusFlag = $statusFlag; }
public function editAction() { $auth = Zend_Auth::getInstance(); if ($auth->hasIdentity()) { $loginUserId = $auth->getStorage()->read()->id; $loginuserRole = $auth->getStorage()->read()->emprole; $loginuserGroup = $auth->getStorage()->read()->group_id; } $idData = $this->getRequest()->getParam('id'); /* Checking for configurations - screening type and agencies*/ $msgarray = array(); $errorflag = 'true'; $checktypeModal = new Default_Model_Bgscreeningtype(); $agencymodel = new Default_Model_Agencylist(); $typesData = $checktypeModal->fetchAll('isactive=1', 'type')->toArray(); $agencyData = $agencymodel->fetchAll('isactive=1', 'agencyname')->toArray(); if (empty($typesData)) { $msgarray['checktype'] = 'Screening types are not configured yet.'; $errorflag = 'false'; } if (empty($agencyData)) { $msgarray['agencyids'] = 'Agencies are not added yet.'; $errorflag = 'false'; } $this->view->msgarray = $msgarray; /* */ $empscreeningform = new Default_Form_empscreening(); $empscreeningModel = new Default_Model_Empscreening(); $submitButon = $empscreeningform->getElement("submit"); $submitButon->setAttrib('style', 'display:none;'); $idArr = array(); $idArr = explode('-', $idData); if (sizeof($idArr) > 1) { $id = intVal($idArr[0]); $userflag = intVal($idArr[1]); $idData = $id . '-' . $userflag; } else { $id = ''; $userflag = ''; $idData = ''; } $errorpagedata = ''; if ($userflag == 2) { $flag = 'cand'; } else { $flag = 'emp'; } if ($userflag == 1 || $userflag == 2 && sapp_Global::_isactivemodule(RESOURCEREQUISITION)) { if ($id && $id != $loginUserId) { $data = $empscreeningModel->getsingleEmpscreeningData($id, $userflag); if (!empty($data) && $data != 'norows') { $empscreeningform->setAttrib('action', BASE_URL . 'empscreening/edit/id/' . $idData); $empscreeningform->removeElement("employee"); $empscreeningform->removeElement("checktype"); $empscreeningform->removeElement("checkagency"); $empscreeningform->populate($data); $specimenId = $data['specimen_id']; $hrEmail = 'false'; $mngmntEmail = 'false'; $empData = array(); $personalData = array(); $addressData = array(); $companyData = array(); if (isset($specimenId) && isset($flag)) { $personalData = $empscreeningModel->getEmpPersonalData($specimenId, $flag); $addressData = $empscreeningModel->getEmpAddressData($specimenId, $flag); $companyData = $empscreeningModel->getEmpCompanyData($specimenId, $flag); if (isset($personalData[0]['businessid'])) { if (defined('BG_CHECKS_HR_' . $personalData[0]['businessid'])) { $hrEmail = constant('BG_CHECKS_HR_' . $personalData[0]['businessid']); } if (defined('BG_CHECKS_MNGMNT_' . $personalData[0]['businessid'])) { $mngmntEmail = constant('BG_CHECKS_MNGMNT_' . $personalData[0]['businessid']); } } } $checkstatuses = $empscreeningModel->checkbgstatus($specimenId, $userflag, 'status'); $inprocess = 'no'; for ($i = 0; $i < sizeof($checkstatuses); $i++) { if (($checkstatuses[$i]['process_status'] == 'In process' || $checkstatuses[$i]['process_status'] == 'On hold') && $checkstatuses[$i]['explanation'] == '' && $checkstatuses[$i]['bgcheck_status'] != 'Complete') { $inprocess = 'yes'; } } $this->view->inprocessStatus = $inprocess; $this->view->personalData = $personalData; $this->view->addressData = $addressData; $this->view->companyData = $companyData; $this->view->hrEmail = $hrEmail; $this->view->mngmntEmail = $mngmntEmail; $this->view->errorpagedata = ''; } else { $this->view->ermsg = 'nodata'; } } if ($loginuserGroup != '' && $loginuserGroup != HR_GROUP && $loginuserGroup != MANAGEMENT_GROUP) { $elements = $empscreeningform->getElements(); if (count($elements) > 0) { foreach ($elements as $key => $element) { if ($key != "Cancel" && $key != "Edit" && $key != "Delete" && $key != "Attachments") { $element->setAttrib("disabled", "disabled"); } } } } if (!empty($personalData)) { if ($personalData[0]['backgroundchk_status'] == 'Completed') { $empscreeningform->setDefault('bgcheck_status', 'Complete'); } if ($personalData[0]['backgroundchk_status'] == 'In process') { $empscreeningform->setDefault('bgcheck_status', 'In process'); } if ($personalData[0]['backgroundchk_status'] == 'On hold') { $empscreeningform->setDefault('bgcheck_status', 'On hold'); } $processData = $this->processesGrid($idData, $personalData[0]['ustatus']); $this->view->dataArray = $processData; $this->view->form = $empscreeningform; $this->view->ermsg = ''; } else { $this->view->ermsg = 'nodata'; } if ($this->getRequest()->getPost()) { $result = $this->save($empscreeningform); $this->view->msgarray = $result; $this->view->messages = $result; } } else { $errorpagedata = 'nodata'; $this->view->ermsg = $errorpagedata; } }