public function save($empscreeningform) { $baseUrl = BASE_URL; $baseUrl = rtrim($baseUrl, '/'); $auth = Zend_Auth::getInstance(); if ($auth->hasIdentity()) { $loginUserId = $auth->getStorage()->read()->id; $loginuserRole = $auth->getStorage()->read()->emprole; } $agencyEmail = ''; $lmanager1Email = ''; $lmanager1Name = 'Manager'; $agencysalutationName = 'Agency'; $empscreeningmodel = new Default_Model_Empscreening(); $usermodel = new Default_Model_Users(); $processesmodel = new Default_Model_Processes(); $errorflag = "true"; $id = $this->_request->getParam('id'); $checktype = $this->_request->getParam('checktype'); $radio_pocId = $this->_request->getParam('contactRadio'); $agencyids = $this->_request->getParam('agencyids'); $bgcheck_status = $this->_request->getParam('bgcheck_status'); $employee = $this->_request->getParam('employee'); $candid = $this->_request->getParam('candid'); $empid = $this->getRequest()->getParam('empid'); $specimenId = ''; $empFlag = 1; $bgtypes = ''; $BGStatus = ''; $newStatus = 'In process'; $inprocess = 'no'; $options = array(); if ($employee) { $empArr = explode('-', $employee); $empFlag = $empArr[0] == 'emp' ? 1 : 2; $specimenId = $empArr[1]; } if (isset($candid)) { $empFlag = 2; $empArr[0] = 2; $specimenId = $candid; } else { if (isset($empid)) { $empFlag = 1; $empArr[0] = 1; $specimenId = $empid; } } if (empty($checktype)) { $msgarray['checktype'] = "Please check at least one screening type."; $errorflag = "false"; } if (empty($radio_pocId) || $radio_pocId == '') { $msgarray['contactRadio'] = "Please select point of contact."; $errorflag = "false"; } if (empty($employee)) { $msgarray['employee'] = "Please select employee."; $errorflag = "false"; } if (!isset($agencyids) || $agencyids == '') { $agencyids = $this->getRequest()->getParam('defaultagencyid'); } if (!isset($agencyids) || $agencyids == '') { $msgarray['agencyids'] = "Please select agency."; $errorflag = "false"; } $checktypeModal = new Default_Model_Bgscreeningtype(); $agencymodel = new Default_Model_Agencylist(); $checktypesData = $checktypeModal->fetchAll('isactive=1', 'type')->toArray(); $checkagencyData = $agencymodel->fetchAll('isactive=1', 'agencyname')->toArray(); $employeeData = $empscreeningmodel->getEmployeesForScreening(); $candidateData = $empscreeningmodel->getCandidatesForScreening(); if (empty($checktypesData)) { $msgarray['checktype'] = 'Screening types are not configured yet.'; $errorflag = 'false'; } if (empty($checkagencyData)) { $msgarray['agencyids'] = 'Agencies are not added yet.'; $errorflag = 'false'; } if (empty($candidateData) && empty($employeeData)) { $msgarray['employee'] = 'Employees/candidates are not added yet.'; $errorflag = 'false'; } /* 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($specimenId, $empFlag, $agencyids, $checktype[$i]); if (!empty($processStatus) && sizeof($processStatus > 0)) { $oldstatus = $processStatus[0]['process_status']; $BGStatus = $processStatus[0]['bgcheck_status']; if (($oldstatus == 'On hold' || $oldstatus == 'In process') && $newStatus == $oldstatus && $BGStatus != 'Complete') { $msgarray['StatusError'] = "Already a record with the given data exists. Please insert a new record"; $errorflag = "false"; } } } } /* END */ $agencyData = array(); $agencyPOCData = array(); $empData = array(); $personalData = array(); $addressData = array(); $companyData = array(); $empscreeningModel = new Default_Model_Empscreening(); if (!empty($checktype)) { $agencyArr = array(); $agencyArr = $checktype; $agencyData = $empscreeningModel->getAgencyData($agencyArr, '', ''); } if ($agencyids) { $agencyPOCData = $empscreeningModel->getAgencyPOCData($agencyids); } if (isset($specimenId) && isset($empArr[0])) { $personalData = $empscreeningModel->getEmpPersonalData($specimenId, $empArr[0]); $addressData = $empscreeningModel->getEmpAddressData($specimenId, $empArr[0]); $companyData = $empscreeningModel->getEmpCompanyData($specimenId, $empArr[0]); } if (isset($id) && $id != '') { $idArr = array(); $idArr = explode('-', $id); $specimenid = $idArr[0]; $userflag = $idArr[1]; $personalData = $empscreeningModel->getEmpPersonalData($specimenid, $userflag); $addressData = $empscreeningModel->getEmpAddressData($specimenid, $userflag); $companyData = $empscreeningModel->getEmpCompanyData($specimenid, $userflag); if (isset($personalData[0]['ustatus'])) { $processData = $this->processesGrid($id, $personalData[0]['ustatus']); } else { $processData = $this->processesGrid($id, ''); } $this->view->dataArray = $processData; } $hrEmail = 'false'; $mngmntEmail = 'false'; 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']); } } $this->view->hrEmail = $hrEmail; $this->view->mngmntEmail = $mngmntEmail; $this->view->personalData = $personalData; $this->view->addressData = $addressData; $this->view->companyData = $companyData; $this->view->agencyData = $agencyData; $this->view->agencyPOCData = $agencyPOCData; if ($id != '') { $errorflag = 'true'; if ($bgcheck_status == '0') { $msgarray['bgcheck_status'] = "Please select status"; $errorflag = "false"; } } if ($empscreeningform->isValid($this->_request->getPost()) && $errorflag != 'false') { $date = new Zend_Date(); $actionflag = ''; $tableid = ''; if ($id == '') { /* 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' && $newStatus == 'In process') { $totalstatusData = array('bgcheck_status' => 'In process', 'modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s")); $totalstatusWhere = array('specimen_id=?' => $specimenId, 'flag=?' => $empFlag); $empscreeningModel->SaveorUpdateDetails($totalstatusData, $totalstatusWhere); } /* END */ $data = array('specimen_id' => $specimenId, 'flag' => $empFlag, 'bgagency_id' => $agencyids, 'bgagency_pocid' => $radio_pocId, 'modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s")); $data['process_status'] = $newStatus; $data['createdby'] = $loginUserId; $data['createddate'] = gmdate("Y-m-d H:i:s"); $data['isactive'] = 1; $where = ''; $actionflag = 1; if (is_array($checktype)) { for ($i = 0; $i < sizeof($checktype); $i++) { $data['bgcheck_type'] = $checktype[$i]; $detailId = $empscreeningModel->SaveorUpdateDetails($data, $where); } } /* Updating back ground check status to In process in employees/candidates status */ if ($empFlag == 1) { $empInsertionData = array('backgroundchk_status' => 'In process', 'modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s")); $empWhere = array('id=?' => $specimenId); $usermodel->addOrUpdateUserModel($empInsertionData, $empWhere, $specimenId); $options['subject'] = APPLICATION_NAME . ' :: Employee Screening'; } 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=?' => $specimenId); $candModel->SaveorUpdateUserData($candData, $candWhere); $options['subject'] = APPLICATION_NAME . ' :: Candidate Screening'; } /* END */ 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; } } $hremail = explode(",", HREMAIL); if ($empFlag == 1) { $lmanager1Email = $personalData[0]['rmanager_email']; $lmanager1Name = $personalData[0]['reporting_manager']; } $bid = ''; if (isset($personalData[0]['businessid'])) { $bid = $personalData[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 { $mngmntemailId = array(); } if (defined('BG_CHECKS_HR_' . $bid) && $bid != '') { $hremailId = explode(",", constant('BG_CHECKS_HR_' . $bid)); } else { $hremailId = array(); } $emailArr = array_merge($manager1, $agencyemail1, $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 ' . ucfirst($agencysalutationName) . ','; $options['toName'] = ucfirst($agencysalutationName); } else { if ($i == 2) { $salutation = 'Dear Management,'; $options['toName'] = 'Management'; } else { if ($i == 3) { $salutation = 'Dear HR,'; $options['toName'] = 'HR'; } } } } $createdbyName = $usermodel->getUserDetails($loginUserId); $options['subject'] = APPLICATION_NAME . ' : Background check initiated'; $options['header'] = 'Background check initiated'; $options['toEmail'] = $emailArr[$i]; $options['message'] = '<div>' . $salutation . '<div>' . ucfirst($personalData[0]['name']) . ' has been sent for background check by ' . ucfirst($createdbyName[0]['userfullname']) . '.'; if (!empty($personalData[0]['employee_id'])) { $options['message'] .= ' Please find the details below.</div> <div> <table border="1" style="border-collapse:collapse;"> <tr><td>Employee ID</td><td>' . $personalData[0]['employee_id'] . '</td></tr> <tr><td>Employee Email</td><td>' . $personalData[0]['email_id'] . '</td></tr> <tr><td>Employee Designation</td><td>' . $personalData[0]['designation'] . '</td></tr> </table> </div>'; } $options['message'] .= '<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'; $result = sapp_Global::_sendEmail($options); } } if ($id != '') { 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']; } } $data = array('modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s")); $empArr = explode('-', $id); $specimenId = $empArr[0]; $empFlag = $empArr[1]; $checkstatuses = $empscreeningModel->checkbgstatus($specimenId, $empFlag, 'status'); if (!empty($checkstatuses) && $checkstatuses[0]['bgcheck_status'] != $bgcheck_status) { if ($bgcheck_status == 'Complete') { $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'; } } if ($inprocess != 'yes') { $data['bgcheck_status'] = $bgcheck_status; $where = array('specimen_id=?' => $specimenId, 'flag=?' => $empFlag, 'isactive = 1'); $actionflag = 2; $detailId = $empscreeningModel->SaveorUpdateDetails($data, $where); /* Updating back ground check status to Completed in employees/candidates status */ if ($empFlag == 1) { $usermodel = new Default_Model_Users(); $empinsertionData = array('backgroundchk_status' => 'Completed', 'modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s")); $empWhere = array('id=?' => $specimenId); $usermodel->addOrUpdateUserModel($empinsertionData, $empWhere, $specimenId); } else { $candModel = new Default_Model_Candidatedetails(); $candData = array('backgroundchk_status' => 'Completed', 'modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s")); $candWhere = array('id=?' => $specimenId); $candModel->SaveorUpdateUserData($candData, $candWhere); } /* END */ /* Mail to HRD, L1 and L2 managers*/ $hremail = explode(",", HREMAIL); if ($empFlag == 1) { $lmanager1Email = $personalData[0]['rmanager_email']; $lmanager1Name = $personalData[0]['reporting_manager']; } 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); } if ($i == 1) { $salutation = 'Dear Management,'; $options['toName'] = 'Management'; } if ($i == 2) { $salutation = 'Dear HR,'; $options['toName'] = 'HR'; } $options['subject'] = APPLICATION_NAME . ' : Background check completed'; $options['header'] = 'Background check completed'; $options['toEmail'] = $emailArr[$i]; $options['message'] = '<div>' . $salutation . '<div>Background check for ' . ucfirst($personalData[0]['name']) . ' has been completed.'; if (!empty($personalData[0]['employee_id'])) { $options['message'] .= ' Please find the details below.</div> <div> <table border="1" style="border-collapse:collapse;"> <tr><td>Employee ID</td><td>' . $personalData[0]['employee_id'] . '</td></tr> <tr><td>Employee Email</td><td>' . $personalData[0]['email_id'] . '</td></tr> <tr><td>Employee Designation</td><td>' . $personalData[0]['designation'] . '</td></tr> </table> </div>'; } $options['message'] .= '<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'; $result = sapp_Global::_sendEmail($options); } /* END */ } } else { $data['bgcheck_status'] = $bgcheck_status; $where = array('specimen_id=?' => $specimenId, 'flag=?' => $empFlag, 'isactive = 1'); $actionflag = 2; $detailId = $empscreeningModel->SaveorUpdateDetails($data, $where); if ($empFlag == 1) { $usermodel = new Default_Model_Users(); $empInsertionData = array('backgroundchk_status' => $bgcheck_status, 'modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s")); $empWhere = array('id=?' => $specimenId); $usermodel->addOrUpdateUserModel($empInsertionData, $empWhere, $specimenId); $options['subject'] = APPLICATION_NAME . ' :: Employee Screening'; } else { $candModel = new Default_Model_Candidatedetails(); $candData = array('backgroundchk_status' => $bgcheck_status, 'modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s")); $candWhere = array('id=?' => $specimenId); $candModel->SaveorUpdateUserData($candData, $candWhere); } } } else { $inprocess = 'samebgstatus'; } } if ($inprocess == 'yes' || $inprocess == 'samebgstatus') { $this->view->inprocess = $inprocess; $this->view->specimenId = $specimenId; $this->view->empFlag = $empFlag; } else { if ($detailId == 'update') { $tableid = $id; } else { $tableid = $detailId; } $menuID = EMPSCREENING; $result = sapp_Global::logManager($menuID, $actionflag, $loginUserId, $specimenId . '-' . $empFlag); if ($detailId == 'update') { $this->_helper->getHelper("FlashMessenger")->addMessage(array("success" => "Background check process is updated successfully.")); } else { $this->_helper->getHelper("FlashMessenger")->addMessage(array("success" => "Background check process is added successfully.")); } if ($empFlag == 2) { $this->_redirect('empscreening/con/pQ=='); } else { $this->_redirect('empscreening/con/pA=='); } } } else { $messages = $empscreeningform->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.'; } if (empty($candidateData) && empty($employeeData)) { $msgarray['employee'] = 'Employees/candidates are not added yet.'; $errorflag = 'false'; } } return $msgarray; } $this->view->lgnrole = $loginuserRole; }