diff --git a/app/Config/Database.php b/app/Config/Database.php index d1632d6..f7f63c3 100755 --- a/app/Config/Database.php +++ b/app/Config/Database.php @@ -108,6 +108,10 @@ class Database extends Config 'ssl_ca' => ROOTPATH . 'ca.pem', 'ssl_verify' => true, ]; + $this->postDB['encrypt'] = [ + 'ssl_ca' => ROOTPATH . 'ca.pem', + 'ssl_verify' => true, + ]; } } } diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index 5afb6bb..3d989a0 100755 --- a/app/Controllers/ClientController.php +++ b/app/Controllers/ClientController.php @@ -507,7 +507,7 @@ class ClientController extends AdminController // echo "
";
// print_r($data); die;
- $data['placeHolders'] = ['member_name', 'nhance_logo', 'tpa_id', 'ecard_download_link', 'client_logo', 'policy_no', 'member_summary', 'app_link', 'post_enrollment_app_link', 'client_name'];
+ $data['placeHolders'] = ['member_name', 'nhance_logo', 'tpa_id', 'ecard_download_link', 'client_logo', 'policy_no', 'member_summary', 'app_link', 'post_enrollment_app_link', 'client_name', 'enrollment_open_date', 'enrollment_close_date'];
// dd($data['placeHolders']);
@@ -653,7 +653,7 @@ class ClientController extends AdminController
$editData['client_policy'] = $clientPoliceData;
$editData['client_policy']['role'] = get_role_id();
$editData['notification'] = $this->notificationModel->select('template_name,enabled')->where('client_id', $id)->findAll();
- $editData['placeHolders'] = ['member_name', 'member_mobile', 'nhance_logo', 'tpa_id', 'ecard_download_link', 'client_logo', 'policy_no', 'member_summary', 'app_link', 'post_enrollment_app_link', 'client_name'];
+ $editData['placeHolders'] = ['member_name', 'member_mobile', 'nhance_logo', 'tpa_id', 'ecard_download_link', 'client_logo', 'policy_no', 'member_summary', 'app_link', 'post_enrollment_app_link', 'client_name', 'enrollment_open_date', 'enrollment_close_date'];
$editData['auto_fetch_client_list'] = $this->getClientListFromPost();
@@ -4623,7 +4623,7 @@ class ClientController extends AdminController
// $res = $employeeRestController->getExcelErrorData(['file_id' => 897]);
// $employeeRestController->employeesOnboardPreprocess(['file_id' => 644]);
// $employeeRestController->employeesOnboardProcess(['file_id' => 835]);
- // $employeeRestController->employeesEnrollmentInsert(['file_id' => 836]);
+ // $res = $employeeRestController->employeesEnrollmentInsert(['file_id' => 1138]);
// $r = Jobs::addJob(['job_name' => 'employeesEnrollmentInsert','payload' => ['file_id' => 721]]);
// dd($res);
diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php
index dcb7ec7..f6ae2ae 100755
--- a/app/Controllers/EmployeeController.php
+++ b/app/Controllers/EmployeeController.php
@@ -279,10 +279,15 @@ class EmployeeController extends AdminController
$client_id = $this->request->getPost('client_id');
$policy_id = $this->request->getPost('policy_id');
$branch_id = $this->request->getPost('branch_id');
+ $enrollment_open_date = $this->request->getPost('enrollment_open_date');
+ $enrollment_close_date = $this->request->getPost('enrollment_close_date');
$action = $this->request->getPost('upload-action-type');
$status = 'inprogress';
- $file_id = $this->fileModel->insert(['file_name' => $filename, 'client_id' => $client_id, 'policy_id' => $policy_id, 'created_by' => $loggedInUserID, 'status' => $status, 'action' => $action, 'client_branch_id' => $branch_id,'uploaded_by' => 1]); //here field policy_id have client_policy_id and not policy id from policy master
+ $enrollment_open_date = change_date_format($enrollment_open_date, 'd/m/Y', 'Y-m-d');
+ $enrollment_close_date = change_date_format($enrollment_close_date, 'd/m/Y', 'Y-m-d');
+
+ $file_id = $this->fileModel->insert(['file_name' => $filename, 'client_id' => $client_id, 'policy_id' => $policy_id, 'created_by' => $loggedInUserID, 'status' => $status, 'action' => $action, 'client_branch_id' => $branch_id,'uploaded_by' => 1, 'enrollment_open_date' => $enrollment_open_date, 'enrollment_close_date' => $enrollment_close_date]); //here field policy_id have client_policy_id and not policy id from policy master
$this->myLogger->logme("error", '{file_id} uploaded success', ['file_id' => $file_id]);
//start validation process
@@ -328,7 +333,7 @@ class EmployeeController extends AdminController
$data['fileList'] = $this->fileModel
->select([
- 'files.id','files.file_name','files.created_by','files.created_at','files.is_active','files.status','files.client_id','files.policy_id','files.client_branch_id','files.action','files.uploaded_by',
+ 'files.id','files.file_name','files.created_by','files.created_at','files.is_active','files.status','files.client_id','files.policy_id','files.client_branch_id','files.action','files.uploaded_by', 'enrollment_open_date', 'enrollment_close_date',
'up.emp_code',
'up.first_name',
'c.short_name',
diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php
index 348b42a..ac633a2 100755
--- a/app/Controllers/EmployeeRestController.php
+++ b/app/Controllers/EmployeeRestController.php
@@ -236,7 +236,7 @@ class EmployeeRestController extends AdminController
$data = $this->request->getJSON();
//enrolment check
- $openForEnrollment = $this->findThePolicyIsOpenForEnrollment($data[0]->client_policy_id);
+ $openForEnrollment = $this->findThePolicyIsOpenForEnrollment($data[0]->client_policy_id, $data[0]->emp_code);
if($openForEnrollment == false){
return $this->respond(['status' => 'failed','code' => 404,'data' => [],'message' => 'Enrollment closed.'], 200);
}
@@ -369,6 +369,19 @@ class EmployeeRestController extends AdminController
$basic_cover_si = $policy_terms->sum_insured;
}
+ $other_employee_policy_data = $this->employeePolicyModel
+ ->select('employee_polices.*')
+ ->join('employees', 'employee_polices.employee_id = employees.id', 'left')
+ ->where('employees.emp_code', $emp_code)
+ ->where('employee_polices.client_policy_id', $client_policy_id)
+ ->where('employee_polices.is_active', 1)
+ ->where('employees.is_active', 1)
+ ->whereIn('employee_polices.status', ['draft', 'enrolled'])
+ ->whereIn('employees.emp_status', ['draft', 'enrolled'])
+ ->where('employee_polices.enrollment_open_date is not null')
+ ->where('employee_polices.enrollment_close_date is not null')
+ ->first();
+
$checkDataExist = $this->employeePolicyModel->where('employee_id',$employee_id)->where('client_policy_id',$client_policy_id)->where('is_active', 1)->first();
if($checkDataExist){
@@ -389,6 +402,11 @@ class EmployeeRestController extends AdminController
$data['status']= 'draft';
$data['date_coverage'] = $this->getEmployeeCoverageDate($emp_code, $client_policy_id);
+ if(!empty($other_employee_policy_data)){
+ $data['enrollment_open_date']= $other_employee_policy_data['enrollment_open_date'] ?? null;
+ $data['enrollment_close_date']= $other_employee_policy_data['enrollment_close_date'] ?? null;
+ }
+
// dd($data);
$this->employeePolicyModel->insert($data);
@@ -470,7 +488,6 @@ class EmployeeRestController extends AdminController
}else{ return null; }
}
-
public function RelationshipMap($value){
if ($value === 'Mother' || $value === 'Father') {
@@ -573,7 +590,7 @@ class EmployeeRestController extends AdminController
// print_r($requestData);
// dd($requestData);
- $openForEnrollment = $this->findThePolicyIsOpenForEnrollment($requestData[0]->client_policy_id);
+ $openForEnrollment = $this->findThePolicyIsOpenForEnrollment($requestData[0]->client_policy_id, $requestData[0]->emp_code);
if($openForEnrollment == false){ return $this->respond(['status' => 'failed','code' => 404,'data' => 'Enrollment closed'], 404); }
foreach ($requestData as $key => $value)
@@ -1455,16 +1472,46 @@ class EmployeeRestController extends AdminController
$array->family_floaters_of_dependent_and_gst_value = 0;
}
- $checkGmcParentsPolicyExist = $this->clientPolicyModel->select('client_policy.id as ClientPolicyId , client_policy.client_id as ClientId, client_policy.policy_type_id as policy_type_id, policy_type.long_name as Policy_Name , client_policy.is_addon as is_addon , client_policy.open_for_enrollment as OpenForEnrollment , client_policy.inception_type as inception_type , client_policy.policy_terms as Policy_Terms , client_policy.is_premium_summery as is_premium_summery, client_policy.enrolment_visibility')
- ->join('policy_type', 'client_policy.policy_type_id = policy_type.id', 'left')
- ->where('client_policy.policy_type_id', 3 )
- ->where('client_policy.is_addon', 1 )
- ->where('client_policy.client_id', $this->request->getGet('client_id') )
- ->where('client_policy.client_branch_id', $this->request->getGet('client_branch_id') )
- ->where('client_policy.is_active', 1 )
- ->where('client_policy.enrolment_visibility', 1 )
- ->get()
- ->getResult();
+ $checkGmcParentsPolicyExist = $this->clientPolicyModel->select("
+ client_policy.id as ClientPolicyId,
+ client_policy.client_id as ClientId,
+ client_policy.policy_type_id as policy_type_id,
+ policy_type.long_name as Policy_Name ,
+ client_policy.is_addon as is_addon ,
+ (
+ SELECT COALESCE(
+ MAX(
+ CASE
+ WHEN ep.enrollment_open_date <= CURDATE()
+ AND ep.enrollment_close_date >= CURDATE()
+ THEN 1
+ ELSE 0
+ END
+ ), 0
+ )
+ FROM employee_polices ep
+ INNER JOIN employees e ON e.id = ep.employee_id
+ WHERE e.is_active = 1
+ AND ep.is_active = 1
+ AND ep.enrollment_open_date IS NOT NULL
+ AND ep.enrollment_close_date IS NOT NULL
+ AND e.emp_code = '{$emp_code}'
+ AND ep.client_policy_id = client_policy.id
+ ) AS OpenForEnrollment,
+ client_policy.inception_type as inception_type ,
+ client_policy.policy_terms as Policy_Terms ,
+ client_policy.is_premium_summery as is_premium_summery,
+ client_policy.enrolment_visibility
+ ")
+ ->join('policy_type', 'client_policy.policy_type_id = policy_type.id', 'left')
+ ->where('client_policy.policy_type_id', 3 )
+ ->where('client_policy.is_addon', 1 )
+ ->where('client_policy.client_id', $this->request->getGet('client_id') )
+ ->where('client_policy.client_branch_id', $this->request->getGet('client_branch_id') )
+ ->where('client_policy.is_active', 1 )
+ ->where('client_policy.enrolment_visibility', 1 )
+ ->get()
+ ->getResult();
if($checkGmcParentsPolicyExist)
{
$GmcParrentsData = $this->getGmcParrentsPolicy($checkGmcParentsPolicyExist,$emp_code,$client_id,$client_branch_id);
@@ -1746,7 +1793,36 @@ class EmployeeRestController extends AdminController
public function getAdditionalGPAPolicy($empData,$policy_type,$emp_code,$client_id,$client_branch_id,$login_by_hr)
{
- $checkPolicyExist = $this->clientPolicyModel->select('client_policy.id as ClientPolicyId , client_policy.client_id as ClientId, client_policy.policy_type_id as policy_type_id, client_policy.is_addon as is_addon , client_policy.open_for_enrollment as OpenForEnrollment , client_policy.inception_type as inception_type , client_policy.policy_terms as Policy_Terms , client_policy.enrolment_visibility,client_policy.is_premium_summery')
+ $checkPolicyExist = $this->clientPolicyModel->select("
+ client_policy.id as ClientPolicyId ,
+ client_policy.client_id as ClientId,
+ client_policy.policy_type_id as policy_type_id,
+ client_policy.is_addon as is_addon ,
+ (
+ SELECT COALESCE(
+ MAX(
+ CASE
+ WHEN ep.enrollment_open_date <= CURDATE()
+ AND ep.enrollment_close_date >= CURDATE()
+ THEN 1
+ ELSE 0
+ END
+ ), 0
+ )
+ FROM employee_polices ep
+ INNER JOIN employees e ON e.id = ep.employee_id
+ WHERE e.is_active = 1
+ AND ep.is_active = 1
+ AND ep.enrollment_open_date IS NOT NULL
+ AND ep.enrollment_close_date IS NOT NULL
+ AND e.emp_code = '{$emp_code}'
+ AND ep.client_policy_id = client_policy.id
+ ) AS OpenForEnrollment,
+ client_policy.inception_type as inception_type ,
+ client_policy.policy_terms as Policy_Terms ,
+ client_policy.enrolment_visibility,
+ client_policy.is_premium_summery
+ ")
->where('client_policy.policy_type_id', $policy_type )
->where('client_policy.is_addon', 1 )
->where('client_policy.client_id', $client_id )
@@ -2062,6 +2138,7 @@ class EmployeeRestController extends AdminController
{
try {
+ $emp_code = $this->request->getGet('emp_code');
$addOnEmployeeData = $this->employeeModel->where('is_active', 1 )
->where('emp_code',$this->request->getGet('emp_code'))
->where('client_id',$this->request->getGet('client_id'))
@@ -2070,7 +2147,30 @@ class EmployeeRestController extends AdminController
- $clientPolicy = $this->clientPolicyModel->where('client_id',$this->request->getGet('client_id'))
+ $clientPolicy = $this->clientPolicyModel->select("
+ client_policy.*,
+ (
+ SELECT COALESCE(
+ MAX(
+ CASE
+ WHEN ep.enrollment_open_date <= CURDATE()
+ AND ep.enrollment_close_date >= CURDATE()
+ THEN 1
+ ELSE 0
+ END
+ ), 0
+ )
+ FROM employee_polices ep
+ INNER JOIN employees e ON e.id = ep.employee_id
+ WHERE e.is_active = 1
+ AND ep.is_active = 1
+ AND ep.enrollment_open_date IS NOT NULL
+ AND ep.enrollment_close_date IS NOT NULL
+ AND e.emp_code = '{$emp_code}'
+ AND ep.client_policy_id = client_policy.id
+ ) AS open_for_enrollment
+ ")
+ ->where('client_id',$this->request->getGet('client_id'))
->where('client_branch_id',$this->request->getGet('client_branch_id'))
->where('policy_status', 1)
->where('is_active', 1)
@@ -2079,6 +2179,7 @@ class EmployeeRestController extends AdminController
if(count($clientPolicy))
{
+
$self = $this->employeeModel->where('employees.is_active', 1)
->where('employees.emp_code', $this->request->getGet('emp_code'))
->where('employees.client_id', $this->request->getGet('client_id'))
@@ -3632,15 +3733,28 @@ class EmployeeRestController extends AdminController
}
- public function findThePolicyIsOpenForEnrollment($plicy_id)
+ public function findThePolicyIsOpenForEnrollment($policy_id, $emp_code)
{
- $policy = $this->clientPolicyModel->where('id',$plicy_id)->where('open_for_enrollment',1)->find();
-
+ // $policy = $this->clientPolicyModel->where('id',$plicy_id)->where('open_for_enrollment',1)->find();
+ $policy = $this->employeePolicyModel
+ ->join('employees', 'employee_polices.employee_id = employees.id')
+ ->where('employees.emp_code',$emp_code)
+ ->where('employee_polices.client_policy_id',$policy_id)
+ ->where('employee_polices.enrollment_open_date <= CURDATE()', null, false)
+ ->where('employee_polices.enrollment_close_date >= CURDATE()', null, false)
+ ->where('employee_polices.enrollment_open_date is not null')
+ ->where('employee_polices.enrollment_close_date is not null')
+ ->where('employees.is_active', 1)
+ ->where('employee_polices.is_active', 1)
+ ->whereIn('employee_polices.status', ['draft', 'enrolled'])
+ ->whereIn('employees.emp_status', ['draft', 'enrolled'])
+ ->first();
+
if($policy)
- return true;
+ return true;
else
- return false;
+ return false;
}
@@ -3782,7 +3896,9 @@ class EmployeeRestController extends AdminController
->where('employees.is_active', 1)
->where('employee_polices.is_active', 1)
->where('cp.enrolment_visibility', 1)
- ->where('cp.open_for_enrollment', 1)
+ // ->where('cp.open_for_enrollment', 1)
+ ->where('employee_polices.enrollment_open_date <= CURDATE()', null, false)
+ ->where('employee_polices.enrollment_close_date >= CURDATE()', null, false)
->where('cp.policy_status', 1)
->whereIn('cp.policy_type_id', [1, 2, 3, 6, 7])
->orderBy('employees.created_at', 'desc')
@@ -3834,7 +3950,9 @@ class EmployeeRestController extends AdminController
->where('employees.is_active', 1)
->where('employee_polices.is_active', 1)
->where('cp.enrolment_visibility', 1)
- ->where('cp.open_for_enrollment', 1)
+ // ->where('cp.open_for_enrollment', 1)
+ ->where('employee_polices.enrollment_open_date <= CURDATE()', null, false)
+ ->where('employee_polices.enrollment_close_date >= CURDATE()', null, false)
->where('cp.policy_status', 1)
->whereIn('cp.policy_type_id', [1, 2, 3, 6, 7])
->orderBy('employees.created_at', 'desc');
diff --git a/app/Controllers/EmployeeServiceController.php b/app/Controllers/EmployeeServiceController.php
index 300e6aa..320903b 100755
--- a/app/Controllers/EmployeeServiceController.php
+++ b/app/Controllers/EmployeeServiceController.php
@@ -1981,221 +1981,251 @@ public function getFileMetaDataByFileId($file_id, $status = 'success'){
public function employeesEnrollmentInsert($params)
{
// dd($this->request);
- helper('excel_util_helper');
- //get file name
- $file_id = $params['file_id'];
- $file = $this->fileModel->find($file_id);
- // dd($file);
- $return = [];
- if(!isset($file))
- {
- //file not found in DB
- return array('status' => false, 'msg' => 'file not found in DB');
- }
- $file_name_with_path = WRITEPATH."/uploads/excel/".$file['file_name'];
-
- //check physical file
- if(!file_exists($file_name_with_path))
- {
- //file not found update status and reason
- $message = "Physical file not found";
- // echo $message;
- $this->myLogger->logme('error',($message . ' for file id ' . $file_id));
- $this->fileModel->where('id', $file_id)->set(['status' => 'failed','reason' => json_encode(['error_summary' => array_count_values([5]),'error_data' => $message])])->update();
- return array('error_summary' => [5], 'error_data' => $message);
- }
+ helper('excel_util_helper');
+ //get file name
+ $file_id = $params['file_id'];
+ $file = $this->fileModel->find($file_id);
+ // dd($file);
+ $return = [];
+ if (!isset($file)) {
+ //file not found in DB
+ return array('status' => false, 'msg' => 'file not found in DB');
+ }
+ $file_name_with_path = WRITEPATH . "/uploads/excel/" . $file['file_name'];
- //get excel data
- $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($file_name_with_path);
- $sheet = $spreadsheet->getActiveSheet();
-
- $highestRowAndColumn = $sheet->getHighestRowAndColumn();
- $result = ['error_type' => 2,'error_summary' => [], 'error_data' => [] ];
- $columns_to_check = $this->enrollment_excel_columns;
- $keys = array_keys($columns_to_check);
- $allowedHighestColumn = end($columns_to_check);
- $excel_data = $sheet->rangeToArray('A1:' . $allowedHighestColumn['col_cell_name'] . $highestRowAndColumn['row']);
- // print_r($keys);die();
- //get existing units in the current branch
- $existing_units = $this->clientBranchModel->getExisitingUnits(client_id: $file['client_id'],client_branch_id: $file['client_branch_id']);
- //remove header
- unset($excel_data[0]);
- // dd($excel_data);
- $emp_emails = [];
+ //check physical file
+ if (!file_exists($file_name_with_path)) {
+ //file not found update status and reason
+ $message = "Physical file not found";
+ // echo $message;
+ $this->myLogger->logme('error', ($message . ' for file id ' . $file_id));
+ $this->fileModel->where('id', $file_id)->set(['status' => 'failed', 'reason' => json_encode(['error_summary' => array_count_values([5]), 'error_data' => $message])])->update();
+ return array('error_summary' => [5], 'error_data' => $message);
+ }
- //check is welcome notification enabled
- $notification = $this->notificationModel->where('client_id',$file['client_id'])->where('template_name','member_welcome_mail')->first();
- // dd($notification);
- $client_details = $this->clientModel->where('id', $file['client_id'])->first();
- $policy_details = $this->clientPolicyModel->where('id', $file['policy_id'])->first();
+ //get excel data
+ $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($file_name_with_path);
+ $sheet = $spreadsheet->getActiveSheet();
- // dd($policy_details);
-
- //get policy slab rates
- // $slab_details = $this->policiesModel->getPolicySlabRatesForEmpOnboard($file['policy_id'],$file['client_id']);
- // dd($slab_details);
+ $highestRowAndColumn = $sheet->getHighestRowAndColumn();
+ $result = ['error_type' => 2, 'error_summary' => [], 'error_data' => []];
+ $columns_to_check = $this->enrollment_excel_columns;
+ $keys = array_keys($columns_to_check);
+ $allowedHighestColumn = end($columns_to_check);
+ $excel_data = $sheet->rangeToArray('A1:' . $allowedHighestColumn['col_cell_name'] . $highestRowAndColumn['row']);
+ // print_r($keys);die();
+ //get existing units in the current branch
+ $existing_units = $this->clientBranchModel->getExisitingUnits(client_id: $file['client_id'], client_branch_id: $file['client_branch_id']);
+ //remove header
+ unset($excel_data[0]);
+ // dd($excel_data);
+ $emp_emails = [];
- foreach ($excel_data as $key => $row)
- {
- $is_row_empty = check_row_is_empty_or_null($row);
- if(!$is_row_empty)
- {
+ //check is welcome notification enabled
+ $notification = $this->notificationModel->where('client_id', $file['client_id'])->where('template_name', 'member_welcome_mail')->first();
+ // dd($notification);
+ $client_details = $this->clientModel->where('id', $file['client_id'])->first();
+ $policy_details = $this->clientPolicyModel->where('id', $file['policy_id'])->first();
- $value = [];
- $policy_data = [];
- $temp_unit = '';
- if(empty($row[12]))
- {
- $temp_unit = $existing_units[0];
- }
-
- $value['emp_code'] = $row[1];
- $value['name'] = $row[2];
- $value['doj'] = (!empty($row[3]) ? change_date_format($row[3],'d-M-Y','Y-m-d') : null );
- $value['gender'] = $row[4];
- $value['relationship'] = ucfirst(trim($row[5]));
- $value['dob'] = change_date_format($row[6],'d-M-Y','Y-m-d');
- $value['email_corporate'] = $row[7];
- $value['mobile'] = $row[8];
- $value['band'] = $row[10];
- $value['basic_pay'] = $row[11];
- $value['unit'] = $temp_unit;
- $value['family_floater_key'] = null;
- $value['client_id'] = $file['client_id'];
- $value['client_branch_id'] = $file['client_branch_id'];
- $value['file_id'] = $file_id;
- $value['is_addon_value'] = $policy_details['policy_type_id'] == 3 ? 1 : 0;
+ // dd($policy_details);
- $value['temp']['emp_id'] = null; // dummy value for using exisitng funciton in model
- if (strtolower(trim($value['relationship'])) === 'mother' || strtolower(trim($value['relationship'])) === 'father') {
- $relation = 'parent';
- } else if(strtolower(trim($value['relationship'])) === 'son' || strtolower(trim($value['relationship'])) === 'daughter'){
- $relation = 'child';
- }else if((strtolower(trim($value['relationship'])) === 'father in law' || strtolower(trim($value['relationship'])) === 'mother in law') || (strtolower(trim($value['relationship'])) === 'father-in-law' || strtolower(trim($value['relationship'])) === 'mother-in-law')){
- $relation = 'parent_in_law';
- }else if(strtolower(trim($value['relationship'])) === 'spouse'){
- $relation = 'spouse';
- }else if(strtolower(trim($value['relationship'])) === 'self'){
- $relation = 'self';
- }else {
- $relation = '';
- }
- $value['family_floater_key'] = $relation;
+ //get policy slab rates
+ // $slab_details = $this->policiesModel->getPolicySlabRatesForEmpOnboard($file['policy_id'],$file['client_id']);
+ // dd($slab_details);
+ $parent_policy_mail_sended_emp_code = [];
+ foreach ($excel_data as $key => $row) {
+ $is_row_empty = check_row_is_empty_or_null($row);
+ if (!$is_row_empty) {
- $policy_data['basic_cover_si'] = $row[9];
- $policy_data['date_coverage'] = $row[13] != "" && $row[13] != null ? change_date_format($row[13],'d-M-Y','Y-m-d') : null;
- $policy_data['client_policy_id'] = $file['policy_id'];
-
- $employee = $this->employeeModel->checkExistingEmployee($value,$file['client_branch_id']);
- unset($value['temp']);
- //save employee table
- // dd($employee['id']);
- if($employee !== null)
- {
- $value['updated_by'] = $file['created_by'];
- $value['id'] = $employee['id'];
- $value['emp_status'] = 'draft';
-
- $log_message = 'Enrollment Update Employee - '.$employee['name'].'('.$employee['emp_code'].') with PK '.$employee['id'];
- }
- else
- {
- $value['emp_status'] = 'draft';
- $value['created_by'] = $file['created_by'];
- $log_message = 'Enrollment Insert Employee- '.$value['name'] .'('.$value['emp_code'] .') with PK ';
- }
- $value = ExcelSanitizeHelper::sanitizeArrayData($value);
-
- $this->employeeModel->save($value);
- if (isset($value['id']))
- { $emp_id = $value['id']; }
- else { $emp_id = $this->employeeModel->getInsertID();
- $log_message .= $emp_id;
- }
-
- // $emp_id = $this->employeeModel->getInsertID();
- // if($emp_id != 0){ $log_message .= $emp_id; }
- // else{ $emp_id = $employee['id']; }
-
- $this->myLogger->logme('error',$log_message);
-
- //save policy table
- $employee_policy = $this->employeePolicyModel->checkExistingEmpPolicy(['employee_id' => $emp_id,'client_policy_id' => $file['policy_id']]);
- if(count($employee_policy))
- {
- $policy_data['updated_by'] = $file['created_by'];
- $policy_data['id'] = $employee_policy[0]['id'];
- $policy_data['status'] = 'draft';
- $policy_data['payable_employee'] = check_pay_by_employee_or_company($policy_details['policy_terms'], $value['relationship']);
- $policy_data['file_id'] = isset($employee_policy[0]['file_id']) && $employee_policy[0]['file_id'] != '' ? $employee_policy[0]['file_id'] : $file_id ;
- $log_message = 'Update Employee Policy for '. $value['name'].'('. $value['emp_code'].') with PK- ' . $employee_policy[0]['id'] .' client policy ID '.$employee_policy[0]['client_policy_id'].' with SI '.$policy_data['basic_cover_si'];
- // echo 'insert policy';
- }
- else
- {
- $policy_data['employee_id'] = $emp_id;
- $policy_data['client_policy_id'] = $file['policy_id'];
- $policy_data['created_by'] = $file['created_by'];
- $policy_data['status'] = 'draft';
- $policy_data['payable_employee'] = check_pay_by_employee_or_company($policy_details['policy_terms'], $value['relationship']);
- $policy_data['file_id'] = $file_id;
- $log_message = 'Insert Employee Policy for '. $value['name'].'('. $value['emp_code'].') - client policy id -'. $file['policy_id'].' - with SI '.$policy_data['basic_cover_si'];
- // echo 'update policy';
- }
-
- log_message('error',json_encode($policy_data));
- // dd($policy_data);
- $this->employeePolicyModel->save($policy_data);
- $emp_policy_id = $this->employeePolicyModel->getInsertID();
- $this->myLogger->logme('error',$log_message);
-
- $employeeRestController = new EmployeeRestController();
- $employeeRestController->updatePremiumAmount($file['policy_id'], $value['emp_code'], $file['client_branch_id']);
-
-
- //save email of self for send mail later
- if (isset($notification) && $notification['enabled'] == 1 && $notification['mail_content'] != '')
- {
- if(strtolower($value['relationship']) == 'self' && $value['email_corporate'] != "")
- {
- $params['dataToInsert'] = $value; //holds employee master data
- $params['notification'] = $notification;
- $params['client_data'] = $client_details;
- $params['common'] = [
- 'client_id' => $file['client_id'],
- 'client_branch_id' => $file['client_branch_id'],
- 'client_policy_id' => $file['policy_id'],
- 'employee_policy_id' => $emp_policy_id ?? null,
- 'employee_id' => $emp_id,
- 'mail_type' => 'member_welcome_mail',
- ];
- //store email and mail content via helper to send notification
- $emp_emails[] = sendMailNotification::sendMailNotification('member_welcome_mail', $params);
- }
- }
- }// endof if row is empty check
- } //end of for loop
-
- // dd($emp_emails);
-
- // for bulk mail queue job push
- if (!empty($emp_emails) && count($emp_emails) > 0) {
-
- $emp_emails = array_chunk($emp_emails, 20);
-
- foreach ($emp_emails as $key => $value) {
- $job_details = new Jobs();
- $r = Jobs::addJob(['job_name' => 'bulk_mail', 'payload' => $value]);
+ $value = [];
+ $policy_data = [];
+ $temp_unit = '';
+ if (empty($row[12])) {
+ $temp_unit = $existing_units[0];
}
+
+ $value['emp_code'] = $row[1];
+ $value['name'] = $row[2];
+ $value['doj'] = (!empty($row[3]) ? change_date_format($row[3], 'd-M-Y', 'Y-m-d') : null);
+ $value['gender'] = $row[4];
+ $value['relationship'] = ucfirst(trim($row[5]));
+ $value['dob'] = change_date_format($row[6], 'd-M-Y', 'Y-m-d');
+ $value['email_corporate'] = $row[7];
+ $value['mobile'] = $row[8];
+ $value['band'] = $row[10];
+ $value['basic_pay'] = $row[11];
+ $value['unit'] = $temp_unit;
+ $value['family_floater_key'] = null;
+ $value['client_id'] = $file['client_id'];
+ $value['client_branch_id'] = $file['client_branch_id'];
+ $value['file_id'] = $file_id;
+ $value['is_addon_value'] = $policy_details['policy_type_id'] == 3 ? 1 : 0;
+
+ $value['temp']['emp_id'] = null; // dummy value for using exisitng funciton in model
+ if (strtolower(trim($value['relationship'])) === 'mother' || strtolower(trim($value['relationship'])) === 'father') {
+ $relation = 'parent';
+ } else if (strtolower(trim($value['relationship'])) === 'son' || strtolower(trim($value['relationship'])) === 'daughter') {
+ $relation = 'child';
+ } else if ((strtolower(trim($value['relationship'])) === 'father in law' || strtolower(trim($value['relationship'])) === 'mother in law') || (strtolower(trim($value['relationship'])) === 'father-in-law' || strtolower(trim($value['relationship'])) === 'mother-in-law')) {
+ $relation = 'parent_in_law';
+ } else if (strtolower(trim($value['relationship'])) === 'spouse') {
+ $relation = 'spouse';
+ } else if (strtolower(trim($value['relationship'])) === 'self') {
+ $relation = 'self';
+ } else {
+ $relation = '';
+ }
+ $value['family_floater_key'] = $relation;
+
+ $policy_data['basic_cover_si'] = $row[9];
+ $policy_data['date_coverage'] = $row[13] != "" && $row[13] != null ? change_date_format($row[13], 'd-M-Y', 'Y-m-d') : null;
+ $policy_data['client_policy_id'] = $file['policy_id'];
+ $policy_data['enrollment_open_date'] = $file['enrollment_open_date'] ?? null;
+ $policy_data['enrollment_close_date'] = $file['enrollment_close_date'] ?? null;
+
+
+ $employee = $this->employeeModel->checkExistingEmployee($value, $file['client_branch_id']);
+ unset($value['temp']);
+ //save employee table
+ // dd($employee['id']);
+ if ($employee !== null) {
+ $value['updated_by'] = $file['created_by'];
+ $value['id'] = $employee['id'];
+ $value['emp_status'] = 'draft';
+
+ $log_message = 'Enrollment Update Employee - ' . $employee['name'] . '(' . $employee['emp_code'] . ') with PK ' . $employee['id'];
+ } else {
+ $value['emp_status'] = 'draft';
+ $value['created_by'] = $file['created_by'];
+ $log_message = 'Enrollment Insert Employee- ' . $value['name'] . '(' . $value['emp_code'] . ') with PK ';
+ }
+ $value = ExcelSanitizeHelper::sanitizeArrayData($value);
+
+ $this->employeeModel->save($value);
+ if (isset($value['id'])) {
+ $emp_id = $value['id'];
+ } else {
+ $emp_id = $this->employeeModel->getInsertID();
+ $log_message .= $emp_id;
+ }
+
+ // $emp_id = $this->employeeModel->getInsertID();
+ // if($emp_id != 0){ $log_message .= $emp_id; }
+ // else{ $emp_id = $employee['id']; }
+
+ $this->myLogger->logme('error', $log_message);
+
+ //save policy table
+ $employee_policy = $this->employeePolicyModel->checkExistingEmpPolicy(['employee_id' => $emp_id, 'client_policy_id' => $file['policy_id']]);
+ if (count($employee_policy)) {
+ $policy_data['updated_by'] = $file['created_by'];
+ $policy_data['id'] = $employee_policy[0]['id'];
+ $policy_data['status'] = 'draft';
+ $policy_data['payable_employee'] = check_pay_by_employee_or_company($policy_details['policy_terms'], $value['relationship']);
+ $policy_data['file_id'] = isset($employee_policy[0]['file_id']) && $employee_policy[0]['file_id'] != '' ? $employee_policy[0]['file_id'] : $file_id;
+ $log_message = 'Update Employee Policy for ' . $value['name'] . '(' . $value['emp_code'] . ') with PK- ' . $employee_policy[0]['id'] . ' client policy ID ' . $employee_policy[0]['client_policy_id'] . ' with SI ' . $policy_data['basic_cover_si'];
+ // echo 'insert policy';
+ } else {
+ $policy_data['employee_id'] = $emp_id;
+ $policy_data['client_policy_id'] = $file['policy_id'];
+ $policy_data['created_by'] = $file['created_by'];
+ $policy_data['status'] = 'draft';
+ $policy_data['payable_employee'] = check_pay_by_employee_or_company($policy_details['policy_terms'], $value['relationship']);
+ $policy_data['file_id'] = $file_id;
+ $log_message = 'Insert Employee Policy for ' . $value['name'] . '(' . $value['emp_code'] . ') - client policy id -' . $file['policy_id'] . ' - with SI ' . $policy_data['basic_cover_si'];
+ // echo 'update policy';
+ }
+
+ log_message('error', json_encode($policy_data));
+ // dd($policy_data);
+ $this->employeePolicyModel->save($policy_data);
+ $emp_policy_id = $this->employeePolicyModel->getInsertID();
+ $this->myLogger->logme('error', $log_message);
+
+ $employeeRestController = new EmployeeRestController();
+ $employeeRestController->updatePremiumAmount($file['policy_id'], $value['emp_code'], $file['client_branch_id']);
+
+
+ //save email of self for send mail later
+ if (isset($notification) && $notification['enabled'] == 1 && $notification['mail_content'] != '') {
+ if (strtolower($value['relationship']) == 'self' && $value['email_corporate'] != "") {
+ $params['dataToInsert'] = $value; //holds employee master data
+ $params['notification'] = $notification;
+ $params['client_data'] = $client_details;
+ $params['common'] = [
+ 'client_id' => $file['client_id'],
+ 'client_branch_id' => $file['client_branch_id'],
+ 'client_policy_id' => $file['policy_id'],
+ 'employee_policy_id' => $emp_policy_id ?? null,
+ 'employee_id' => $emp_id,
+ 'mail_type' => 'member_welcome_mail',
+ ];
+ $params['enrollment_open_date'] = $file['enrollment_open_date'] ?? null;
+ $params['enrollment_close_date'] = $file['enrollment_close_date'] ?? null;
+
+ //store email and mail content via helper to send notification
+ $emp_emails[] = sendMailNotification::sendMailNotification('member_welcome_mail', $params);
+ } else if ($policy_details['policy_type_id'] == 3 && $policy_details['is_addon'] == 3 && !in_array($row[1], $parent_policy_mail_sended_emp_code)) {
+
+ $sefData = $this->employeeModel
+ ->where('is_active', 1)
+ ->whereIn('emp_status', ['draft', 'enrolled'])
+ ->where('family_floater_key', 'self')
+ ->where('emp_code', $row[1])
+ ->where('client_id', $file['client_id'])
+ ->where('client_branch_id', $file['client_branch_id'])
+ ->where('email_corporate is not null')
+ ->first();
+
+ if (!empty($sefData)) {
+
+ $value['email_corporate'] = $sefData['email_corporate'];
+ $value['name'] = $sefData['name'];
+ $value['mobile'] = $sefData['mobile'];
+
+ $params['dataToInsert'] = $value; //holds employee master data
+ $params['notification'] = $notification;
+ $params['client_data'] = $client_details;
+ $params['common'] = [
+ 'client_id' => $file['client_id'],
+ 'client_branch_id' => $file['client_branch_id'],
+ 'client_policy_id' => $file['policy_id'],
+ 'employee_policy_id' => $emp_policy_id ?? null,
+ 'employee_id' => $emp_id,
+ 'mail_type' => 'member_welcome_mail',
+ ];
+ $params['enrollment_open_date'] = $file['enrollment_open_date'] ?? null;
+ $params['enrollment_close_date'] = $file['enrollment_close_date'] ?? null;
+
+ //store email and mail content via helper to send notification
+ $emp_emails[] = sendMailNotification::sendMailNotification('member_welcome_mail', $params);
+ $parent_policy_mail_sended_emp_code[] = $row[1];
+ }
+ }
+ }
+ } // endof if row is empty check
+ } //end of for loop
+
+ // dd($emp_emails);
+
+ // for bulk mail queue job push
+ if (!empty($emp_emails) && count($emp_emails) > 0) {
+
+ $emp_emails = array_chunk($emp_emails, 20);
+
+ foreach ($emp_emails as $key => $value) {
+ $job_details = new Jobs();
+ $r = Jobs::addJob(['job_name' => 'bulk_mail', 'payload' => $value]);
}
+ }
- $this->fileModel->where('id', $file_id)->set(['status' => 'success','reason' => ''])->update();
- $this->myLogger->logme("error",'{file_id} uploaded success',['file_id' => $file_id]);
+ $this->fileModel->where('id', $file_id)->set(['status' => 'success', 'reason' => ''])->update();
+ $this->myLogger->logme("error", '{file_id} uploaded success', ['file_id' => $file_id]);
- $this->setPullNotification($this->getFileMetaDataByFileId($file_id,'success'));
+ $this->setPullNotification($this->getFileMetaDataByFileId($file_id, 'success'));
- return true;
- }//end of employeesEnrollmentInsert
+ return true;
+ } //end of employeesEnrollmentInsert
}
\ No newline at end of file
diff --git a/app/Helpers/sendMailNotification.php b/app/Helpers/sendMailNotification.php
index 859cd08..ee9b31a 100755
--- a/app/Helpers/sendMailNotification.php
+++ b/app/Helpers/sendMailNotification.php
@@ -51,12 +51,23 @@ class sendMailNotification
$nhance_logo = $_ENV['NHANCE_LOGO'];
$client_logo = base_url() . "public/uploads/logo/" . $client_data['client_logo'];
+ $enrollment_open_date = !empty($params['enrollment_open_date'] ?? null)
+ ? change_date_format($params['enrollment_open_date'], 'Y-m-d', 'F d, Y')
+ : 'N/A';
+
+ $enrollment_close_date = !empty($params['enrollment_close_date'] ?? null)
+ ? change_date_format($params['enrollment_close_date'], 'Y-m-d', 'F d, Y')
+ : 'N/A';
+
$mail_content = str_replace(["[[client_logo]]", "{{client_logo}}"], "
", $mail_content);
$mail_content = str_replace(["[[nhance_logo]]", "{{nhance_logo}}"], "
", $mail_content);
$mail_content = str_replace(["[[member_name]]", "{{member_name}}"], $employee_name, $mail_content);
$mail_content = str_replace(["[[member_mobile]]", "{{member_mobile}}"], $employee_mobile_no, $mail_content);
$mail_content = str_replace(["[[client_name]]", "{{client_name}}"], $client_data['client_name'], $mail_content);
+ $mail_content = str_replace(["[[enrollment_open_date]]", "{{enrollment_open_date}}"], $enrollment_open_date, $mail_content);
+ $mail_content = str_replace(["[[enrollment_close_date]]", "{{enrollment_close_date}}"], $enrollment_close_date, $mail_content);
+
$mail_content = str_replace(["[[app_link]]", "{{app_link}}"], "Review Details", $mail_content);
if ($dataToInsert['relationship'] == 'Self' && $mail != null || $mail != '') {
@@ -1247,6 +1258,13 @@ class sendMailNotification
$app_link = $_ENV['App_Url'];
$nhance_logo = $_ENV['NHANCE_LOGO'];
+ $enrollment_open_date = !empty($params['enrollment_open_date'] ?? null)
+ ? date('F d, Y', strtotime(str_replace('/', '-', $params['enrollment_open_date'] ?? '')))
+ : date('F d, Y');
+
+ $enrollment_close_date = !empty($params['enrollment_close_date'] ?? null)
+ ? date('F d, Y', strtotime(str_replace('/', '-', $params['enrollment_close_date'] ?? '')))
+ : date('F d, Y', strtotime('+15 days'));
$client_logo = base_url() . "public/uploads/logo/" . $client_data['client_logo'];
@@ -1256,6 +1274,9 @@ class sendMailNotification
$mail_content = str_replace(["[[member_mobile]]", "{{member_mobile}}"], $mobile, $mail_content);
$mail_content = str_replace(["[[client_name]]", "{{client_name}}"], $client_data['client_name'], $mail_content);
+ $mail_content = str_replace(["[[enrollment_open_date]]", "{{enrollment_open_date}}"], $enrollment_open_date, $mail_content);
+ $mail_content = str_replace(["[[enrollment_close_date]]", "{{enrollment_close_date}}"], $enrollment_close_date, $mail_content);
+
$mail_content = str_replace(["[[app_link]]", "{{app_link}}"], "Review Details", $mail_content);
if ($mail != null || $mail != '') {
diff --git a/app/Helpers/utility_helper.php b/app/Helpers/utility_helper.php
index 765b8af..6adc430 100755
--- a/app/Helpers/utility_helper.php
+++ b/app/Helpers/utility_helper.php
@@ -556,7 +556,9 @@ if (!function_exists('change_date_format')) {
if ($source_format !== null && $output_format !== null) {
$date = DateTime::createFromFormat($source_format, $date_str);
if (!$date) {
- throw new Exception("Invalid date string for source format: $source_format");
+ // throw new Exception("Invalid date string for source format: $source_format");
+ log_message('error', "❌ Date format error : Invalid date string | Params => date_str: {$date_str}, source_format: {$source_format}, output_format: {$output_format}");
+ return null;
}
return $date->format($output_format);
}
@@ -565,7 +567,9 @@ if (!function_exists('change_date_format')) {
if ($source_format !== null && $output_format === null) {
$date = DateTime::createFromFormat($source_format, $date_str);
if (!$date) {
- throw new Exception("Invalid date string for source format: $source_format");
+ // throw new Exception("Invalid date string for source format: $source_format");
+ log_message('error', "❌ Date format error : Invalid date string | Params => date_str: {$date_str}, source_format: {$source_format}, output_format: {$output_format}");
+ return null;
}
return $date->format('Y-m-d'); // MySQL default format
}
@@ -580,10 +584,17 @@ if (!function_exists('change_date_format')) {
}
// If no format matches, throw an exception
$allowed_placeholders = implode(', ', $allowed_formats);
- throw new Exception("Invalid date string format. Allowed formats: $allowed_placeholders");
+ // throw new Exception("Invalid date string format. Allowed formats: $allowed_placeholders");
+ log_message(
+ 'error',
+ "❌ Date format error: Invalid date string. Allowed formats: {$allowed_placeholders} | Params => date_str: {$date_str}, source_format: {$source_format}, output_format: {$output_format}"
+ );
+ return null;
}
} catch (Exception $e) {
- return "Error: " . $e->getMessage();
+ // return "Error: " . $e->getMessage();
+ log_message('error', "❌ Date format error: {$e->getMessage()} | Params => date_str: {$date_str}, source_format: {$source_format}, output_format: {$output_format}");
+ return null;
}
return null;
diff --git a/app/Models/EmployeeModel.php b/app/Models/EmployeeModel.php
index c556bdb..c5bd85b 100755
--- a/app/Models/EmployeeModel.php
+++ b/app/Models/EmployeeModel.php
@@ -159,9 +159,11 @@ class EmployeeModel extends Model
client_policy.policy_id as PolicyId,
client_policy.id as ClientPolicyId,
client_policy.is_premium_summery,
- CASE
- WHEN client_policy.open_for_enrollment IS NULL THEN 0
- ELSE client_policy.open_for_enrollment
+ CASE
+ WHEN employee_polices.enrollment_open_date <= CURDATE()
+ AND employee_polices.enrollment_close_date >= CURDATE()
+ THEN 1
+ ELSE 0
END AS OpenForEnrollment,
client_policy.disclaimer,
client_policy.policy_type_id ,
diff --git a/app/Models/EmployeePolicyModel.php b/app/Models/EmployeePolicyModel.php
index d29c75f..306e6ee 100755
--- a/app/Models/EmployeePolicyModel.php
+++ b/app/Models/EmployeePolicyModel.php
@@ -35,7 +35,9 @@ class EmployeePolicyModel extends Model
"claim_status",
'ecard_sent_status',
'payable_employee',
- 'file_id'
+ 'file_id',
+ "enrollment_open_date",
+ "enrollment_close_date",
];
// Callbacks
diff --git a/app/Models/FileModel.php b/app/Models/FileModel.php
index 5b27a7d..2029ea9 100755
--- a/app/Models/FileModel.php
+++ b/app/Models/FileModel.php
@@ -20,7 +20,9 @@ class FileModel extends Model
"policy_id",
"client_branch_id",
"uploaded_by",
- "updated_by"
+ "updated_by",
+ "enrollment_open_date",
+ "enrollment_close_date",
];
diff --git a/app/Views/client_policy.php b/app/Views/client_policy.php
index b2f4917..93b0328 100755
--- a/app/Views/client_policy.php
+++ b/app/Views/client_policy.php
@@ -156,7 +156,7 @@ input:checked + .slider:before {
Client Branch
Date
- Enrolment Status
+
Status
Action
@@ -299,7 +299,8 @@ input:checked + .slider:before {
-->
-
+
+
-
-
-
-
+
-
-
-
-
-
+