Merge branch 'dev' of bitbucket.org:jubilian/nhance-enrollment into dev

This commit is contained in:
sanjeev.p 2025-12-23 16:27:43 +05:30
commit d2ba82ff3d
13 changed files with 260 additions and 61 deletions

View File

@ -507,7 +507,7 @@ class ClientController extends AdminController
// echo "<pre>"; // echo "<pre>";
// print_r($data); die; // 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']); // dd($data['placeHolders']);
@ -653,7 +653,7 @@ class ClientController extends AdminController
$editData['client_policy'] = $clientPoliceData; $editData['client_policy'] = $clientPoliceData;
$editData['client_policy']['role'] = get_role_id(); $editData['client_policy']['role'] = get_role_id();
$editData['notification'] = $this->notificationModel->select('template_name,enabled')->where('client_id', $id)->findAll(); $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(); $editData['auto_fetch_client_list'] = $this->getClientListFromPost();

View File

@ -279,10 +279,15 @@ class EmployeeController extends AdminController
$client_id = $this->request->getPost('client_id'); $client_id = $this->request->getPost('client_id');
$policy_id = $this->request->getPost('policy_id'); $policy_id = $this->request->getPost('policy_id');
$branch_id = $this->request->getPost('branch_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'); $action = $this->request->getPost('upload-action-type');
$status = 'inprogress'; $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]); $this->myLogger->logme("error", '{file_id} uploaded success', ['file_id' => $file_id]);
//start validation process //start validation process
@ -328,7 +333,7 @@ class EmployeeController extends AdminController
$data['fileList'] = $this->fileModel $data['fileList'] = $this->fileModel
->select([ ->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.emp_code',
'up.first_name', 'up.first_name',
'c.short_name', 'c.short_name',

View File

@ -236,7 +236,7 @@ class EmployeeRestController extends AdminController
$data = $this->request->getJSON(); $data = $this->request->getJSON();
//enrolment check //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){ if($openForEnrollment == false){
return $this->respond(['status' => 'failed','code' => 404,'data' => [],'message' => 'Enrollment closed.'], 200); return $this->respond(['status' => 'failed','code' => 404,'data' => [],'message' => 'Enrollment closed.'], 200);
} }
@ -573,7 +573,7 @@ class EmployeeRestController extends AdminController
// print_r($requestData); // print_r($requestData);
// dd($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); } if($openForEnrollment == false){ return $this->respond(['status' => 'failed','code' => 404,'data' => 'Enrollment closed'], 404); }
foreach ($requestData as $key => $value) foreach ($requestData as $key => $value)
@ -1455,16 +1455,46 @@ class EmployeeRestController extends AdminController
$array->family_floaters_of_dependent_and_gst_value = 0; $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') $checkGmcParentsPolicyExist = $this->clientPolicyModel->select("
->join('policy_type', 'client_policy.policy_type_id = policy_type.id', 'left') client_policy.id as ClientPolicyId,
->where('client_policy.policy_type_id', 3 ) client_policy.client_id as ClientId,
->where('client_policy.is_addon', 1 ) client_policy.policy_type_id as policy_type_id,
->where('client_policy.client_id', $this->request->getGet('client_id') ) policy_type.long_name as Policy_Name ,
->where('client_policy.client_branch_id', $this->request->getGet('client_branch_id') ) client_policy.is_addon as is_addon ,
->where('client_policy.is_active', 1 ) (
->where('client_policy.enrolment_visibility', 1 ) SELECT COALESCE(
->get() MAX(
->getResult(); 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) if($checkGmcParentsPolicyExist)
{ {
$GmcParrentsData = $this->getGmcParrentsPolicy($checkGmcParentsPolicyExist,$emp_code,$client_id,$client_branch_id); $GmcParrentsData = $this->getGmcParrentsPolicy($checkGmcParentsPolicyExist,$emp_code,$client_id,$client_branch_id);
@ -1746,7 +1776,36 @@ class EmployeeRestController extends AdminController
public function getAdditionalGPAPolicy($empData,$policy_type,$emp_code,$client_id,$client_branch_id,$login_by_hr) 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.policy_type_id', $policy_type )
->where('client_policy.is_addon', 1 ) ->where('client_policy.is_addon', 1 )
->where('client_policy.client_id', $client_id ) ->where('client_policy.client_id', $client_id )
@ -2062,6 +2121,7 @@ class EmployeeRestController extends AdminController
{ {
try { try {
$emp_code = $this->request->getGet('emp_code');
$addOnEmployeeData = $this->employeeModel->where('is_active', 1 ) $addOnEmployeeData = $this->employeeModel->where('is_active', 1 )
->where('emp_code',$this->request->getGet('emp_code')) ->where('emp_code',$this->request->getGet('emp_code'))
->where('client_id',$this->request->getGet('client_id')) ->where('client_id',$this->request->getGet('client_id'))
@ -2070,7 +2130,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('client_branch_id',$this->request->getGet('client_branch_id'))
->where('policy_status', 1) ->where('policy_status', 1)
->where('is_active', 1) ->where('is_active', 1)
@ -2079,6 +2162,7 @@ class EmployeeRestController extends AdminController
if(count($clientPolicy)) if(count($clientPolicy))
{ {
$self = $this->employeeModel->where('employees.is_active', 1) $self = $this->employeeModel->where('employees.is_active', 1)
->where('employees.emp_code', $this->request->getGet('emp_code')) ->where('employees.emp_code', $this->request->getGet('emp_code'))
->where('employees.client_id', $this->request->getGet('client_id')) ->where('employees.client_id', $this->request->getGet('client_id'))
@ -3632,15 +3716,25 @@ class EmployeeRestController extends AdminController
} }
public function findThePolicyIsOpenForEnrollment($plicy_id) public function findThePolicyIsOpenForEnrollment($plicy_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('employees.family_floater_key','self')
->where('employee_polices.client_policy_id',$plicy_id)
->where('employee_polices.enrollment_open_date <= CURDATE()', null, false)
->where('employee_polices.enrollment_close_date >= CURDATE()', null, false)
->where('employees.is_active', 1)
->where('employee_polices.is_active', 1)
->find();
if($policy) if($policy)
return true; return true;
else else
return false; return false;
} }
@ -3782,7 +3876,9 @@ class EmployeeRestController extends AdminController
->where('employees.is_active', 1) ->where('employees.is_active', 1)
->where('employee_polices.is_active', 1) ->where('employee_polices.is_active', 1)
->where('cp.enrolment_visibility', 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) ->where('cp.policy_status', 1)
->whereIn('cp.policy_type_id', [1, 2, 3, 6, 7]) ->whereIn('cp.policy_type_id', [1, 2, 3, 6, 7])
->orderBy('employees.created_at', 'desc') ->orderBy('employees.created_at', 'desc')
@ -3834,7 +3930,9 @@ class EmployeeRestController extends AdminController
->where('employees.is_active', 1) ->where('employees.is_active', 1)
->where('employee_polices.is_active', 1) ->where('employee_polices.is_active', 1)
->where('cp.enrolment_visibility', 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) ->where('cp.policy_status', 1)
->whereIn('cp.policy_type_id', [1, 2, 3, 6, 7]) ->whereIn('cp.policy_type_id', [1, 2, 3, 6, 7])
->orderBy('employees.created_at', 'desc'); ->orderBy('employees.created_at', 'desc');

View File

@ -2085,6 +2085,9 @@ public function getFileMetaDataByFileId($file_id, $status = 'success'){
$policy_data['basic_cover_si'] = $row[9]; $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['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['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']); $employee = $this->employeeModel->checkExistingEmployee($value,$file['client_branch_id']);
unset($value['temp']); unset($value['temp']);
@ -2167,6 +2170,8 @@ public function getFileMetaDataByFileId($file_id, $status = 'success'){
'client_policy_id' => $file['policy_id'], 'client_policy_id' => $file['policy_id'],
'employee_policy_id' => $emp_policy_id ?? null, 'employee_policy_id' => $emp_policy_id ?? null,
'employee_id' => $emp_id, 'employee_id' => $emp_id,
'enrollment_open_date' => $file['enrollment_open_date'] ?? null,
'enrollment_close_date' => $file['enrollment_close_date'] ?? null,
'mail_type' => 'member_welcome_mail', 'mail_type' => 'member_welcome_mail',
]; ];
//store email and mail content via helper to send notification //store email and mail content via helper to send notification

View File

@ -51,12 +51,23 @@ class sendMailNotification
$nhance_logo = $_ENV['NHANCE_LOGO']; $nhance_logo = $_ENV['NHANCE_LOGO'];
$client_logo = base_url() . "public/uploads/logo/" . $client_data['client_logo']; $client_logo = base_url() . "public/uploads/logo/" . $client_data['client_logo'];
$enrollment_open_date = !empty($dataToInsert['enrollment_open_date'] ?? null)
? change_date_format($dataToInsert['enrollment_open_date'], 'Y-m-d', 'F d, Y')
: 'N/A';
$enrollment_close_date = !empty($dataToInsert['enrollment_close_date'] ?? null)
? change_date_format($dataToInsert['enrollment_close_date'], 'Y-m-d', 'F d, Y')
: 'N/A';
$mail_content = str_replace(["[[client_logo]]", "{{client_logo}}"], "<img src='$client_logo' alt='Client Logo' width='20'>", $mail_content); $mail_content = str_replace(["[[client_logo]]", "{{client_logo}}"], "<img src='$client_logo' alt='Client Logo' width='20'>", $mail_content);
$mail_content = str_replace(["[[nhance_logo]]", "{{nhance_logo}}"], "<img src='$nhance_logo' alt='Nhance Logo' width='20'>", $mail_content); $mail_content = str_replace(["[[nhance_logo]]", "{{nhance_logo}}"], "<img src='$nhance_logo' alt='Nhance Logo' width='20'>", $mail_content);
$mail_content = str_replace(["[[member_name]]", "{{member_name}}"], $employee_name, $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(["[[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(["[[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}}"], "<a href='$app_link'>Review Details</a>", $mail_content); $mail_content = str_replace(["[[app_link]]", "{{app_link}}"], "<a href='$app_link'>Review Details</a>", $mail_content);
if ($dataToInsert['relationship'] == 'Self' && $mail != null || $mail != '') { if ($dataToInsert['relationship'] == 'Self' && $mail != null || $mail != '') {
@ -1247,6 +1258,13 @@ class sendMailNotification
$app_link = $_ENV['App_Url']; $app_link = $_ENV['App_Url'];
$nhance_logo = $_ENV['NHANCE_LOGO']; $nhance_logo = $_ENV['NHANCE_LOGO'];
$enrollment_open_date = !empty($dataToInsert['enrollment_open_date'] ?? null)
? date('F d, Y', strtotime(str_replace('/', '-', $dataToInsert['enrollment_open_date'] ?? '')))
: date('F d, Y');
$enrollment_close_date = !empty($dataToInsert['enrollment_close_date'] ?? null)
? date('F d, Y', strtotime(str_replace('/', '-', $dataToInsert['enrollment_close_date'] ?? '')))
: date('F d, Y', strtotime('+15 days'));
$client_logo = base_url() . "public/uploads/logo/" . $client_data['client_logo']; $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(["[[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(["[[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}}"], "<a href='$app_link'>Review Details</a>", $mail_content); $mail_content = str_replace(["[[app_link]]", "{{app_link}}"], "<a href='$app_link'>Review Details</a>", $mail_content);
if ($mail != null || $mail != '') { if ($mail != null || $mail != '') {

View File

@ -556,7 +556,9 @@ if (!function_exists('change_date_format')) {
if ($source_format !== null && $output_format !== null) { if ($source_format !== null && $output_format !== null) {
$date = DateTime::createFromFormat($source_format, $date_str); $date = DateTime::createFromFormat($source_format, $date_str);
if (!$date) { 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); return $date->format($output_format);
} }
@ -565,7 +567,9 @@ if (!function_exists('change_date_format')) {
if ($source_format !== null && $output_format === null) { if ($source_format !== null && $output_format === null) {
$date = DateTime::createFromFormat($source_format, $date_str); $date = DateTime::createFromFormat($source_format, $date_str);
if (!$date) { 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 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 // If no format matches, throw an exception
$allowed_placeholders = implode(', ', $allowed_formats); $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) { } 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; return null;

View File

@ -160,8 +160,10 @@ class EmployeeModel extends Model
client_policy.id as ClientPolicyId, client_policy.id as ClientPolicyId,
client_policy.is_premium_summery, client_policy.is_premium_summery,
CASE CASE
WHEN client_policy.open_for_enrollment IS NULL THEN 0 WHEN employee_polices.enrollment_open_date <= CURDATE()
ELSE client_policy.open_for_enrollment AND employee_polices.enrollment_close_date >= CURDATE()
THEN 1
ELSE 0
END AS OpenForEnrollment, END AS OpenForEnrollment,
client_policy.disclaimer, client_policy.disclaimer,
client_policy.policy_type_id , client_policy.policy_type_id ,

View File

@ -35,7 +35,9 @@ class EmployeePolicyModel extends Model
"claim_status", "claim_status",
'ecard_sent_status', 'ecard_sent_status',
'payable_employee', 'payable_employee',
'file_id' 'file_id',
"enrollment_open_date",
"enrollment_close_date",
]; ];
// Callbacks // Callbacks

View File

@ -20,7 +20,9 @@ class FileModel extends Model
"policy_id", "policy_id",
"client_branch_id", "client_branch_id",
"uploaded_by", "uploaded_by",
"updated_by" "updated_by",
"enrollment_open_date",
"enrollment_close_date",
]; ];

View File

@ -156,7 +156,7 @@ input:checked + .slider:before {
<th>Client Branch</th> <th>Client Branch</th>
<!-- <th>TPA</th> --> <!-- <th>TPA</th> -->
<th>Date</th> <th>Date</th>
<th>Enrolment Status</th> <!-- <th>Enrolment Status</th> -->
<th>Status</th> <th>Status</th>
<th>Action</th> <th>Action</th>
</tr> </tr>
@ -299,7 +299,8 @@ input:checked + .slider:before {
<label for="inception_type" style="position: relative;bottom: 5px;left: 85px;">Enable <label for="inception_type" style="position: relative;bottom: 5px;left: 85px;">Enable
Employee Enrolment Process</label> Employee Enrolment Process</label>
</div> --> </div> -->
<div class="form-group col-md-4" style="padding-top:50px;padding-bottom: 0px;">
<!-- <div class="form-group col-md-4" style="padding-top:50px;padding-bottom: 0px;">
<label for="inception_type" style=" position: relative;bottom: 5px;"> <label for="inception_type" style=" position: relative;bottom: 5px;">
<label class="switch"> <label class="switch">
<input id="inception_type" type="checkbox" name="inception_type"> <input id="inception_type" type="checkbox" name="inception_type">
@ -307,27 +308,29 @@ input:checked + .slider:before {
</label>Enable </label>Enable
Employee Enrolment Process Employee Enrolment Process
</label> </label>
</div> </div> -->
<div class="form-row">
<div class="form-group col-md-4">
<label for="open_date">Open Date<span class="text-danger">*</span></label>
<input value="" type="text" class="form-control dateofdata"
placeholder="Enter Open Date " name="open_date" id="open_date">
</div>
<div class="form-group col-md-4"> <!-- <div class="form-row">
<label for="close_date">Close Date<span class="text-danger">*</span></label> <div class="form-group col-md-4">
<input value="" type="text" class="form-control dateofdata" <label for="open_date">Open Date<span class="text-danger">*</span></label>
placeholder="Enter Close Date " name="close_date" id="close_date"> <input value="" type="text" class="form-control dateofdata"
</div> placeholder="Enter Open Date " name="open_date" id="open_date">
</div>
<div class="form-group col-md-4">
<label for="close_date">Close Date<span class="text-danger">*</span></label>
<input value="" type="text" class="form-control dateofdata"
placeholder="Enter Close Date " name="close_date" id="close_date">
</div>
<div class="form-group col-md-4">
<label for="reminder_date">Reminder Date<span class="text-danger">*</span></label>
<input value="" type="text" class="form-control dateofdata"
placeholder="Enter Remainder Dates( eg, 28,29,30 )" name="reminder_date"
id="reminder_date">
</div>
</div> -->
<div class="form-group col-md-4">
<label for="reminder_date">Reminder Date<span class="text-danger">*</span></label>
<input value="" type="text" class="form-control dateofdata"
placeholder="Enter Remainder Dates( eg, 28,29,30 )" name="reminder_date"
id="reminder_date">
</div>
</div>
<div class="form-group col-md-12"> <div class="form-group col-md-12">
<label for="disclaimer">Disclaimer<span class="text-danger">*</span></label> <label for="disclaimer">Disclaimer<span class="text-danger">*</span></label>
<textarea class="form-control" placeholder="Enter Disclaimer" name="disclaimer" <textarea class="form-control" placeholder="Enter Disclaimer" name="disclaimer"
@ -389,6 +392,7 @@ input:checked + .slider:before {
</label> </label>
Is LGBTQ Enable</label> Is LGBTQ Enable</label>
</div> </div>
<div class="form-group col-md-4" style="padding-top:50px;padding-bottom: 0px;"> <div class="form-group col-md-4" style="padding-top:50px;padding-bottom: 0px;">
<label for="is_premium_summery" style=" position: relative;bottom: 5px;"> <label for="is_premium_summery" style=" position: relative;bottom: 5px;">
<label class="switch"> <label class="switch">
@ -625,9 +629,9 @@ $(document).ready(function() {
<! -- <td>${item.insurer_short} - ${item.insurer_branch_name}</td> --> <! -- <td>${item.insurer_short} - ${item.insurer_branch_name}</td> -->
<td>${policy_name_data}</td> <td>${policy_name_data}</td>
<td>${item.branch_name ? item.branch_name : ' - '}</td> <td>${item.branch_name ? item.branch_name : ' - '}</td>
<! -- <td>${tpaValue}</td> --> <!-- <td>${tpaValue}</td> -->
<td>${(item.policy_start_date)} / ${(item.policy_end_date)}</td> <td>${(item.policy_start_date)} / ${(item.policy_end_date)}</td>
<td style="text-align: center;">${(enrollmentStatus)}</td> <!-- <td style="text-align: center;">${(enrollmentStatus)}</td> -->
<td>${checkDateStatus(item.policy_end_date, 1)}</td> <td>${checkDateStatus(item.policy_end_date, 1)}</td>
<td> <td>
<div class="btn-group dropdown"> <div class="btn-group dropdown">
@ -890,7 +894,7 @@ $("#policy_form").submit(function(event) {
<!-- <td>${tpaValue}</td> --> <!-- <td>${tpaValue}</td> -->
<td>${(item.policy_start_date)} / ${(item.policy_end_date)}</td> <td>${(item.policy_start_date)} / ${(item.policy_end_date)}</td>
<td style="text-align: center;">${(enrollmentStatus)}</td> <!-- <td style="text-align: center;">${(enrollmentStatus)}</td> -->
<td>${checkDateStatus(item.policy_end_date, 1)}</td> <td>${checkDateStatus(item.policy_end_date, 1)}</td>
<td> <td>
<div class="btn-group dropdown"> <div class="btn-group dropdown">

View File

@ -71,6 +71,16 @@ option:disabled {
?> ?>
</select> </select>
</div> </div>
<div class="form-group col-md-4">
<label for="open_date">Enrollment Open Date<span class="text-danger">*</span></label>
<input value="" type="text" class="form-control" placeholder="Enter Open Date " name="enrollment_open_date" id="enrollment_open_date" required>
</div>
<div class="form-group col-md-4">
<label for="close_date">Enrollment Close Date<span class="text-danger">*</span></label>
<input value="" type="text" class="form-control" placeholder="Enter Close Date " name="enrollment_close_date" id="enrollment_close_date" required>
</div>
</div> </div>
<hr> <hr>
@ -180,6 +190,26 @@ $(document).ready(function() {
$("#policy_id").select2(); $("#policy_id").select2();
$("#branch_id").select2(); $("#branch_id").select2();
var enrollment_open_date = flatpickr("#enrollment_open_date", {
dateFormat: "d/m/Y",
allowInput: false,
minDate: "today",
onChange: function (selectedDates) {
if (selectedDates.length) {
enrollment_close_date.setDate(
new Date(selectedDates[0].getTime() + 15 * 24 * 60 * 60 * 1000),
true
);
}
}
});
var enrollment_close_date = flatpickr("#enrollment_close_date", {
dateFormat: "d/m/Y",
allowInput: false,
minDate: "today"
});
}); });
// Declare a global variable to store API response data // Declare a global variable to store API response data

View File

@ -44,8 +44,27 @@
// echo $reason; // echo $reason;
?> ?>
<tr> <td class="reload truncate"
<td><b><?php echo ($key + 1) ?></b></td> data-toggle="tooltip"
data-placement="top"
data-html="true"
title="<?php
echo 'Enrollment Open Date : ' .
(!empty($file['enrollment_open_date'])
? change_date_format($file['enrollment_open_date'], 'Y-m-d', 'd/m/Y')
: 'N/A'
) .
'<br>' .
'Enrollment Close Date : ' .
(!empty($file['enrollment_close_date'])
? change_date_format($file['enrollment_close_date'], 'Y-m-d', 'd/m/Y')
: 'N/A'
);
?>">
<b>
<?php echo ($key + 1) ?>
</b></td>
<td style="overflow: hidden;" class="reload truncate" data-toggle="tooltip" data-placement="top" title="<?php echo $file['file_name'] ?>"> <td style="overflow: hidden;" class="reload truncate" data-toggle="tooltip" data-placement="top" title="<?php echo $file['file_name'] ?>">
<?php echo $file['file_name']?> <?php echo $file['file_name']?>
</td> </td>

View File

@ -250,7 +250,7 @@
<select id="member_welcome_mailmodal_customButton" class="form-control" style="border:none;right: 6px;width: auto;position: absolute;z-index: 1;top: 17px;height: 32px;float: right;" onchange="copyToClipboard(this)"> <select id="member_welcome_mailmodal_customButton" class="form-control" style="border:none;right: 6px;width: auto;position: absolute;z-index: 1;top: 17px;height: 32px;float: right;" onchange="copyToClipboard(this)">
<option value="">PlaceHolders</option> <option value="">PlaceHolders</option>
<?php foreach ($placeHolders as $value): ?> <?php foreach ($placeHolders as $value): ?>
<?php if ($value == 'member_name' || $value == 'nhance_logo' || $value == 'client_logo' || $value == 'app_link' || $value == 'client_name' || $value == 'member_summary') { ?> <?php if ($value == 'member_name' || $value == 'nhance_logo' || $value == 'client_logo' || $value == 'app_link' || $value == 'client_name' || $value == 'member_summary' || $value == 'enrollment_open_date' || $value == 'enrollment_close_date') { ?>
<?php $valueChange = str_replace('_', ' ', $value); <?php $valueChange = str_replace('_', ' ', $value);
$valueChange = ucwords($valueChange); ?> $valueChange = ucwords($valueChange); ?>
<option value="{{<?php echo $value; ?>}}"><?php echo $valueChange; ?></option> <option value="{{<?php echo $value; ?>}}"><?php echo $valueChange; ?></option>