From 1f740207c1ee46f1d9cf0d4e7222af589b0a1283 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Sat, 6 Dec 2025 15:19:54 +0530 Subject: [PATCH 01/39] FIX_EMP_DATA --- app/Controllers/EmployeeRestController.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php index f3d0b2f..7a6692e 100755 --- a/app/Controllers/EmployeeRestController.php +++ b/app/Controllers/EmployeeRestController.php @@ -1163,10 +1163,20 @@ class EmployeeRestController extends AdminController $result = []; foreach ($empPolicy as $array) { + // Reset employee array - $empData = $employeeData; - - + // $empData = $employeeData; + $empData = $this->employeeModel + ->join('employee_polices', 'employee_polices.employee_id = employees.id') + ->where('employees.emp_code',$emp_code) + ->where('employees.client_id',$client_id) + ->where('employees.client_branch_id',$client_branch_id) + ->where('employee_polices.client_policy_id',$array->ClientPolicyId) + ->where('employees.is_active', 1 ) + ->where('employee_polices.is_active', 1 ) + ->where('employees.is_addon_value',0) + ->findAll(); + // Removes specific keys from the decoded array and assigns the result to $refusingData $decodedArray = json_decode($array->Policy_Terms); $refusingData = (object) array_diff_key((array) $decodedArray, array_flip($keysToRemove)); From 2bb38af974617286257f6f1b09d185ed506bda7e Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Sat, 6 Dec 2025 16:06:00 +0530 Subject: [PATCH 02/39] FIX_ISSUE --- app/Controllers/EmployeeRestController.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php index 7a6692e..c2622a0 100755 --- a/app/Controllers/EmployeeRestController.php +++ b/app/Controllers/EmployeeRestController.php @@ -1163,10 +1163,11 @@ class EmployeeRestController extends AdminController $result = []; foreach ($empPolicy as $array) { - + // Reset employee array // $empData = $employeeData; $empData = $this->employeeModel + ->select('employees.*') ->join('employee_polices', 'employee_polices.employee_id = employees.id') ->where('employees.emp_code',$emp_code) ->where('employees.client_id',$client_id) @@ -3900,10 +3901,17 @@ class EmployeeRestController extends AdminController return $this->respond(['status' => "failed", 'code' => 404, 'message' => "employee data not found", 'data' => []], 200); } + $selfData = array_column( + array_filter($empData, function($row) { + return isset($row['relationship']) && strtolower($row['relationship']) == 'self'; + }), + 'id' + ); + + $selfId = !empty($selfData) ? reset($selfData) : null; $floters = $this->FloterConvertion($family_floaters); $data = []; - foreach ($floters as $familyFloatesValue) { $dependent = preg_replace('/\d/', '', $familyFloatesValue); @@ -3912,6 +3920,8 @@ class EmployeeRestController extends AdminController foreach ($empData as $key => $value) { if ($value['family_floater_key'] === $dependent) { + $employee_policy = $this->employeePolicyModel->where('employee_id', $selfId)->where('client_policy_id',$new_client_policy_id)->where('is_active', 1 )->get()->getRow(); + $temp['is_value_exist'] = true; $temp['data']['family_floater_key'] = $familyFloatesValue; $temp['data']['employee_id'] = $value['id']; @@ -3920,7 +3930,7 @@ class EmployeeRestController extends AdminController $temp['data']['dob'] = $this->convertDateFormatDMY($value['dob']); $temp['data']['client_policy_id'] = $new_client_policy_id; $temp['data']['form_type'] = $dependent; - $temp['data']['basic_cover_si'] = null; + $temp['data']['basic_cover_si'] = isset($employee_policy->basic_cover_si) ? $employee_policy->basic_cover_si : 0; $temp['data']['age_validation'] = $this->getAgeRange($policy_terms, $familyFloatesValue); From 76cc67a417dacfb81ea6df2558d6547723ef174c Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Mon, 8 Dec 2025 10:32:32 +0530 Subject: [PATCH 03/39] FIX_COPY_ENBABLE --- app/Controllers/EmployeeRestController.php | 11 ++++++-- app/Helpers/utility_helper.php | 32 ++++++++++++++++++++++ app/Models/EmployeeModel.php | 3 +- 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php index c2622a0..d12c2a2 100755 --- a/app/Controllers/EmployeeRestController.php +++ b/app/Controllers/EmployeeRestController.php @@ -1160,7 +1160,8 @@ class EmployeeRestController extends AdminController if ($empPolicy) { - + + $latest_gmc_policy_id = getLatestGMCPolicy((array)$empPolicy); $result = []; foreach ($empPolicy as $array) { @@ -1259,6 +1260,11 @@ class EmployeeRestController extends AdminController $array->to_be_added_relationship = []; $array->existing_relationship = []; + if(!empty($latest_gmc_policy_id) && $latest_gmc_policy_id == $array->ClientPolicyId){ + $array->copy_dependence_data_enable = true; + }else{ + $array->copy_dependence_data_enable = false; + } // Map family floaters that already exist in the employee table $familyFloates = $array->Policy_Terms->family_floaters; @@ -1453,7 +1459,7 @@ class EmployeeRestController extends AdminController $result[] = $GmcParrentsData; } - if($this->request->getGet('policy') == 'GMC'){ + if($this->request->getGet('policy') == 'GMC' && !$checkGmcParentsPolicyExist){ // return $this->respond(['status' => 'success','code' => 200,'data' => [$array]], 200); $result[] = $array; } @@ -1473,6 +1479,7 @@ class EmployeeRestController extends AdminController }else{ return $this->respond(['status' => 'failed','code' => 404,'data' => []], 200); } + } catch (\Exception $e) { $errorData = [ diff --git a/app/Helpers/utility_helper.php b/app/Helpers/utility_helper.php index 3372200..765b8af 100755 --- a/app/Helpers/utility_helper.php +++ b/app/Helpers/utility_helper.php @@ -666,3 +666,35 @@ if (!function_exists('check_pay_by_employee_or_company')) { } +if (!function_exists('getLatestGMCPolicy')) { + + function getLatestGMCPolicy(array $empPolicy) + { + try{ + $filtered = array_filter($empPolicy, function ($row) { + $type = is_object($row) ? $row->policy_type_id : $row['policy_type_id']; + return isset($type) && (int)$type === 2; + }); + + if (count($filtered) > 1) { + + usort($filtered, function ($a, $b) { + $dateA = is_object($a) ? $a->policy_end_date : $a['policy_end_date']; + $dateB = is_object($b) ? $b->policy_end_date : $b['policy_end_date']; + return strtotime($dateB) <=> strtotime($dateA); + }); + + $row = reset($filtered); + return is_object($row) ? ($row->ClientPolicyId ?? null) : ($row['ClientPolicyId'] ?? null); + } + + return null; + + }catch(\Exception $e){ + log_message('error', 'Exception getLatestGMCPolicy :' . $e->getMessage()); + return null; + } + } + +} + diff --git a/app/Models/EmployeeModel.php b/app/Models/EmployeeModel.php index 2cfc852..c556bdb 100755 --- a/app/Models/EmployeeModel.php +++ b/app/Models/EmployeeModel.php @@ -166,7 +166,8 @@ class EmployeeModel extends Model client_policy.disclaimer, client_policy.policy_type_id , employee_polices.tpa_id as tpa_id , - employee_polices.rand_string as rand_string + employee_polices.rand_string as rand_string, + client_policy.policy_end_date ', FALSE) // Select all columns from both tables ->join('client_policy', 'client_policy.id = employee_polices.client_policy_id') ->join('policy_type', 'policy_type.id = client_policy.policy_type_id') From f39dbe7d2073ea9ee07ed5308cf5ca0039e5ebcf Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Mon, 8 Dec 2025 11:23:03 +0530 Subject: [PATCH 04/39] FIX_DEPENDENT_DELETION --- app/Controllers/EmployeeRestController.php | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php index d12c2a2..7946fc4 100755 --- a/app/Controllers/EmployeeRestController.php +++ b/app/Controllers/EmployeeRestController.php @@ -526,16 +526,22 @@ class EmployeeRestController extends AdminController try { if($this->request->getGet('id')) - { - $this->employeeModel->where('id', $this->request->getGet('id') ) - ->where('is_active', 1 ) - ->set(array('is_active'=> 0 )) - ->update(); + { + $is_from_copy = $this->request->getGet('is_from_copy') ?? null; + + if($is_from_copy == false && $is_from_copy == null){ + + $this->employeeModel->where('id', $this->request->getGet('id') ) + ->where('is_active', 1 ) + ->set(array('is_active'=> 0 )) + ->update(); + } $this->employeePolicyModel->where('employee_id',$this->request->getGet('id') ) ->where('is_active', 1 ) ->set(array('is_active'=> 0 )) ->update(); + return $this->respond(['status' => 'success','code' => 200,'data' =>[] ], 200); }else{ From 574d298d9a8922731963a846ac32e13e264f941b Mon Sep 17 00:00:00 2001 From: velz Date: Mon, 8 Dec 2025 13:10:33 +0530 Subject: [PATCH 05/39] FEAT_DB_SSL_ENABLED --- app/Config/Database.php | 3 +- ca.pem | 76 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 ca.pem diff --git a/app/Config/Database.php b/app/Config/Database.php index f59b49f..4914a59 100755 --- a/app/Config/Database.php +++ b/app/Config/Database.php @@ -37,7 +37,8 @@ class Database extends Config 'charset' => 'utf8', 'DBCollat' => 'utf8_general_ci', 'swapPre' => '', - 'encrypt' => false, + // 'encrypt' => false, + 'encrypt' => ['ssl_verify' => true,'ssl_ca' => ROOTPATH .'ca.pem'], 'compress' => false, 'strictOn' => false, 'failover' => [], diff --git a/ca.pem b/ca.pem new file mode 100644 index 0000000..a303fe9 --- /dev/null +++ b/ca.pem @@ -0,0 +1,76 @@ +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIQB/57HSuaqUkLaasdjxUdPjANBgkqhkiG9w0BAQsFADCB +mDELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu +Yy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTEwLwYDVQQDDChB +bWF6b24gUkRTIGFwLXNvdXRoLTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYDVQQH +DAdTZWF0dGxlMCAXDTIxMDUxOTE3NDAzNFoYDzIwNjEwNTE5MTg0MDM0WjCBmDEL +MAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x +EzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTEwLwYDVQQDDChBbWF6 +b24gUkRTIGFwLXNvdXRoLTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYDVQQHDAdT +ZWF0dGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtbkaoVsUS76o +TgLFmcnaB8cswBk1M3Bf4IVRcwWT3a1HeJSnaJUqWHCJ+u3ip/zGVOYl0gN1MgBb +MuQRIJiB95zGVcIa6HZtx00VezDTr3jgGWRHmRjNVCCHGmxOZWvJjsIE1xavT/1j +QYV/ph4EZEIZ/qPq7e3rHohJaHDe23Z7QM9kbyqp2hANG2JtU/iUhCxqgqUHNozV +Zd0l5K6KnltZQoBhhekKgyiHqdTrH8fWajYl5seD71bs0Axowb+Oh0rwmrws3Db2 +Dh+oc2PwREnjHeca9/1C6J2vhY+V0LGaJmnnIuOANrslx2+bgMlyhf9j0Bv8AwSi +dSWsobOhNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQb7vJT +VciLN72yJGhaRKLn6Krn2TAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQAD +ggEBAAxEj8N9GslReAQnNOBpGl8SLgCMTejQ6AW/bapQvzxrZrfVOZOYwp/5oV0f +9S1jcGysDM+DrmfUJNzWxq2Y586R94WtpH4UpJDGqZp+FuOVJL313te4609kopzO +lDdmd+8z61+0Au93wB1rMiEfnIMkOEyt7D2eTFJfJRKNmnPrd8RjimRDlFgcLWJA +3E8wca67Lz/G0eAeLhRHIXv429y8RRXDtKNNz0wA2RwURWIxyPjn1fHjA9SPDkeW +E1Bq7gZj+tBnrqz+ra3yjZ2blss6Ds3/uRY6NYqseFTZWmQWT7FolZEnT9vMUitW +I0VynUbShVpGf6946e0vgaaKw20= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQGKVv+5VuzEZEBzJ+bVfx2zAKBggqhkjOPQQDAzCBlzEL +MAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x +EzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdBbWF6 +b24gUkRTIGFwLXNvdXRoLTEgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcMB1Nl +YXR0bGUwIBcNMjEwNTE5MTc1MDU5WhgPMjEyMTA1MTkxODUwNTlaMIGXMQswCQYD +VQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEG +A1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMDAuBgNVBAMMJ0FtYXpvbiBS +RFMgYXAtc291dGgtMSBSb290IENBIEVDQzM4NCBHMTEQMA4GA1UEBwwHU2VhdHRs +ZTB2MBAGByqGSM49AgEGBSuBBAAiA2IABMqdLJ0tZF/DGFZTKZDrGRJZID8ivC2I +JRCYTWweZKCKSCAzoiuGGHzJhr5RlLHQf/QgmFcgXsdmO2n3CggzhA4tOD9Ip7Lk +P05eHd2UPInyPCHRgmGjGb0Z+RdQ6zkitKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAd +BgNVHQ4EFgQUC1yhRgVqU5bR8cGzOUCIxRpl4EYwDgYDVR0PAQH/BAQDAgGGMAoG +CCqGSM49BAMDA2cAMGQCMG0c/zLGECRPzGKJvYCkpFTCUvdP4J74YP0v/dPvKojL +t/BrR1Tg4xlfhaib7hPc7wIwFvgqHes20CubQnZmswbTKLUrgSUW4/lcKFpouFd2 +t2/ewfi/0VhkeUW+IiHhOMdU +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGATCCA+mgAwIBAgIRAKlQ+3JX9yHXyjP/Ja6kZhkwDQYJKoZIhvcNAQEMBQAw +gZgxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ +bmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTExMC8GA1UEAwwo +QW1hem9uIFJEUyBhcC1zb3V0aC0xIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4GA1UE +BwwHU2VhdHRsZTAgFw0yMTA1MTkxNzQ1MjBaGA8yMTIxMDUxOTE4NDUyMFowgZgx +CzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu +MRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTExMC8GA1UEAwwoQW1h +em9uIFJEUyBhcC1zb3V0aC0xIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4GA1UEBwwH +U2VhdHRsZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKtahBrpUjQ6 +H2mni05BAKU6Z5USPZeSKmBBJN3YgD17rJ93ikJxSgzJ+CupGy5rvYQ0xznJyiV0 +91QeQN4P+G2MjGQR0RGeUuZcfcZitJro7iAg3UBvw8WIGkcDUg+MGVpRv/B7ry88 +7E4OxKb8CPNoa+a9j6ABjOaaxaI22Bb7j3OJ+JyMICs6CU2bgkJaj3VUV9FCNUOc +h9PxD4jzT9yyGYm/sK9BAT1WOTPG8XQUkpcFqy/IerZDfiQkf1koiSd4s5VhBkUn +aQHOdri/stldT7a+HJFVyz2AXDGPDj+UBMOuLq0K6GAT6ThpkXCb2RIf4mdTy7ox +N5BaJ+ih+Ro3ZwPkok60egnt/RN98jgbm+WstgjJWuLqSNInnMUgkuqjyBWwePqX +Kib+wdpyx/LOzhKPEFpeMIvHQ3A0sjlulIjnh+j+itezD+dp0UNxMERlW4Bn/IlS +sYQVNfYutWkRPRLErXOZXtlxxkI98JWQtLjvGzQr+jywxTiw644FSLWdhKa6DtfU +2JWBHqQPJicMElfZpmfaHZjtXuCZNdZQXWg7onZYohe281ZrdFPOqC4rUq7gYamL +T+ZB+2P+YCPOLJ60bj/XSvcB7mesAdg8P0DNddPhHUFWx2dFqOs1HxIVB4FZVA9U +Ppbv4a484yxjTgG7zFZNqXHKTqze6rBBAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB +Af8wHQYDVR0OBBYEFCEAqjighncv/UnWzBjqu1Ka2Yb4MA4GA1UdDwEB/wQEAwIB +hjANBgkqhkiG9w0BAQwFAAOCAgEAYyvumblckIXlohzi3QiShkZhqFzZultbFIu9 +GhA5CDar1IFMhJ9vJpO9nUK/camKs1VQRs8ZsBbXa0GFUM2p8y2cgUfLwFULAiC/ +sWETyW5lcX/xc4Pyf6dONhqFJt/ovVBxNZtcmMEWv/1D6Tf0nLeEb0P2i/pnSRR4 +Oq99LVFjossXtyvtaq06OSiUUZ1zLPvV6AQINg8dWeBOWRcQYhYcEcC2wQ06KShZ +0ahuu7ar5Gym3vuLK6nH+eQrkUievVomN/LpASrYhK32joQ5ypIJej3sICIgJUEP +UoeswJ+Z16f3ECoL1OSnq4A0riiLj1ZGmVHNhM6m/gotKaHNMxsK9zsbqmuU6IT/ +P6cR0S+vdigQG8ZNFf5vEyVNXhl8KcaJn6lMD/gMB2rY0qpaeTg4gPfU5wcg8S4Y +C9V//tw3hv0f2n+8kGNmqZrylOQDQWSSo8j8M2SRSXiwOHDoTASd1fyBEIqBAwzn +LvXVg8wQd1WlmM3b0Vrsbzltyh6y4SuKSkmgufYYvC07NknQO5vqvZcNoYbLNea3 +76NkFaMHUekSbwVejZgG5HGwbaYBgNdJEdpbWlA3X4yGRVxknQSUyt4dZRnw/HrX +k8x6/wvtw7wht0/DOqz1li7baSsMazqxx+jDdSr1h9xML416Q4loFCLgqQhil8Jq +Em4Hy3A= +-----END CERTIFICATE----- From b39108d46f39de7ceeef94118aec67c97d02fdf7 Mon Sep 17 00:00:00 2001 From: velz Date: Mon, 8 Dec 2025 15:08:10 +0530 Subject: [PATCH 06/39] FIX_DB_SSL --- app/Config/Database.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/Config/Database.php b/app/Config/Database.php index 4914a59..fa62fa4 100755 --- a/app/Config/Database.php +++ b/app/Config/Database.php @@ -20,6 +20,7 @@ class Database extends Config * use if no other is specified. */ public string $defaultGroup = 'default'; + public string $enableSSL; /** * The default database connection. @@ -96,5 +97,17 @@ class Database extends Config if (ENVIRONMENT === 'testing') { $this->defaultGroup = 'tests'; } + + $this->enableSSL = env('DB_SSL_ENABLE'); + + if ($this->enableSSL === true || $this->enableSSL === 'true' || $this->enableSSL === 1 || $this->enableSSL === '1') { + + + // Enable SSL authentication + $this->default['encrypt'] = [ + 'ssl_ca' => ROOTPATH . 'ca.pem', + 'ssl_verify' => true, + ]; + } } } From 93bef46cc3ac09e85760943704da6d14d9b99313 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Mon, 8 Dec 2025 17:16:27 +0530 Subject: [PATCH 07/39] FIX_STATUS --- app/Controllers/EmployeeRestController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php index 7946fc4..12d9020 100755 --- a/app/Controllers/EmployeeRestController.php +++ b/app/Controllers/EmployeeRestController.php @@ -3906,7 +3906,7 @@ class EmployeeRestController extends AdminController $empData = $this->employeeModel ->where('emp_code', $emp_code) ->where('client_id', $client_id) - ->where('emp_status', 'enrolled') + // ->where('emp_status', 'enrolled') ->where('is_active', 1) ->findAll(); From 4753a877b76edaebb9a0c64f98fafe03e436414e Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Tue, 9 Dec 2025 09:41:49 +0530 Subject: [PATCH 08/39] FIX_DELETE --- app/Controllers/EmployeeRestController.php | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php index 12d9020..b614320 100755 --- a/app/Controllers/EmployeeRestController.php +++ b/app/Controllers/EmployeeRestController.php @@ -537,10 +537,18 @@ class EmployeeRestController extends AdminController ->update(); } - $this->employeePolicyModel->where('employee_id',$this->request->getGet('id') ) - ->where('is_active', 1 ) - ->set(array('is_active'=> 0 )) - ->update(); + $query = $this->employeePolicyModel + ->where('employee_id', $this->request->getGet('id')) + ->where('is_active', 1); + + // 👉 Add condition only if client_policy_id exists + $clientPolicyId = $this->request->getGet('client_policy_id') ?? null; + if (!empty($clientPolicyId)) { + $query->where('client_policy_id', $clientPolicyId); + } + + $query->set(['is_active' => 0])->update(); + return $this->respond(['status' => 'success','code' => 200,'data' =>[] ], 200); From eaac7815cfabe87f39d8990ec1463d09464e8e14 Mon Sep 17 00:00:00 2001 From: velz Date: Tue, 9 Dec 2025 10:01:17 +0530 Subject: [PATCH 09/39] FIX_DB_SSL_ISSUE --- app/Config/Database.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Config/Database.php b/app/Config/Database.php index fa62fa4..6f39178 100755 --- a/app/Config/Database.php +++ b/app/Config/Database.php @@ -38,8 +38,8 @@ class Database extends Config 'charset' => 'utf8', 'DBCollat' => 'utf8_general_ci', 'swapPre' => '', - // 'encrypt' => false, - 'encrypt' => ['ssl_verify' => true,'ssl_ca' => ROOTPATH .'ca.pem'], + 'encrypt' => false, + // 'encrypt' => ['ssl_verify' => true,'ssl_ca' => ROOTPATH .'ca.pem'], 'compress' => false, 'strictOn' => false, 'failover' => [], From bcbae21c4119fd0736ae643fda3ea903bf60eb06 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Tue, 9 Dec 2025 10:28:10 +0530 Subject: [PATCH 10/39] FIX_ADD_DEPENDENCE --- app/Controllers/EmployeeRestController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php index b614320..9527480 100755 --- a/app/Controllers/EmployeeRestController.php +++ b/app/Controllers/EmployeeRestController.php @@ -369,7 +369,7 @@ class EmployeeRestController extends AdminController $basic_cover_si = $policy_terms->sum_insured; } - $checkDataExist = $this->employeePolicyModel->where('employee_id',$employee_id)->where('client_policy_id',$client_policy_id)->first(); + $checkDataExist = $this->employeePolicyModel->where('employee_id',$employee_id)->where('client_policy_id',$client_policy_id)->where('is_active', 1)->first(); if($checkDataExist){ From 16df4424c8140b24c34998cdb10db167ecbe3c4b Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Tue, 9 Dec 2025 11:55:56 +0530 Subject: [PATCH 11/39] FIX_PRE_POLICY_COUNT --- app/Controllers/EmployeeRestController.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php index 9527480..75432ed 100755 --- a/app/Controllers/EmployeeRestController.php +++ b/app/Controllers/EmployeeRestController.php @@ -3681,9 +3681,10 @@ class EmployeeRestController extends AdminController ->join('employee_polices', 'employees.id = employee_polices.employee_id') ->join('client_policy cp', 'employee_polices.client_policy_id = cp.id') ->where('employees.is_active', 1) - ->whereIn('employees.emp_status', ['draft', 'enrolled']) + ->whereIn('employees.emp_status', ['draft']) + ->where('employees.family_floater_key', 'self') ->where('employee_polices.is_active', 1) - ->whereIn('employee_polices.status', ['draft', 'enrolled']) + ->whereIn('employee_polices.status', ['draft']) ->where('cp.enrolment_visibility', 1) ->where('cp.open_for_enrollment', 1) ->where('cp.policy_status', 1) From fdd1b3dea94e2b728e35eb3c9c43a07de9514893 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Wed, 10 Dec 2025 12:36:01 +0530 Subject: [PATCH 12/39] FIX_CHANGE_GMC_PARANTS --- app/Controllers/EmployeeRestController.php | 59 +++++++++++++--------- 1 file changed, 35 insertions(+), 24 deletions(-) diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php index 75432ed..d606525 100755 --- a/app/Controllers/EmployeeRestController.php +++ b/app/Controllers/EmployeeRestController.php @@ -1515,11 +1515,11 @@ class EmployeeRestController extends AdminController public function getGmcParrentsPolicy($GmcParrentsPolicy,$emp_code,$client_id,$client_branch_id) { - $employeeData = $this->employeeModel->where('emp_code',$emp_code) - ->where('client_id',$client_id) - ->where('client_branch_id',$client_branch_id) - ->where('is_active', 1 ) - ->where('is_addon_value',0)->findAll(); + // $employeeData = $this->employeeModel->where('emp_code',$emp_code) + // ->where('client_id',$client_id) + // ->where('client_branch_id',$client_branch_id) + // ->where('is_active', 1 ) + // ->where('is_addon_value',0)->findAll(); // return $employeeData; foreach ($GmcParrentsPolicy as $key => $array) { @@ -1528,8 +1528,18 @@ class EmployeeRestController extends AdminController // Reset employee array - $empData = $employeeData; - + // $empData = $employeeData; + $empData = $this->employeeModel + ->select('employees.*') + ->join('employee_polices', 'employee_polices.employee_id = employees.id') + ->where('employees.emp_code',$emp_code) + ->where('employees.client_id',$client_id) + ->where('employees.client_branch_id',$client_branch_id) + ->where('employee_polices.client_policy_id',$array->ClientPolicyId) + ->where('employees.is_active', 1 ) + ->where('employee_polices.is_active', 1 ) + ->where('employees.is_addon_value',0) + ->findAll(); $array->Policy_Terms = json_decode($array->Policy_Terms); @@ -1543,6 +1553,7 @@ class EmployeeRestController extends AdminController ->join('employee_polices', 'employee_polices.employee_id = employees.id') ->where('employees.emp_code',$emp_code) ->where('employees.is_active',1) + ->where('employee_polices.is_active',1) ->where('employee_polices.client_policy_id',$array->ClientPolicyId) ->get() ->getResult(); @@ -1659,29 +1670,29 @@ class EmployeeRestController extends AdminController // Add family floter buttons placement data for FE validation if(count($floters)){ - foreach ($floters as $familyFloatesValue) { + foreach ($floters as $familyFloatesValue) { - $temp2['is_value_exist'] = false; - $temp2['data']['family_floater_key'] = $familyFloatesValue; - $temp2['data']['relationship'] = ucfirst(str_replace('_', ' ', preg_replace('/\d/', '', $familyFloatesValue))); - $temp2['data']['client_policy_id'] = $array->ClientPolicyId; - $temp2['data']['button_name'] = 'Add '.ucfirst(str_replace('_', ' ', preg_replace('/\d/', '', $familyFloatesValue))); - $temp2['data']['form_type'] = preg_replace('/\d/', '', $familyFloatesValue); - $temp2['data']['age_validation'] = $this->getAgeRange($array->Policy_Terms,$familyFloatesValue); - array_push($data,$temp2); + $temp2['is_value_exist'] = false; + $temp2['data']['family_floater_key'] = $familyFloatesValue; + $temp2['data']['relationship'] = ucfirst(str_replace('_', ' ', preg_replace('/\d/', '', $familyFloatesValue))); + $temp2['data']['client_policy_id'] = $array->ClientPolicyId; + $temp2['data']['button_name'] = 'Add '.ucfirst(str_replace('_', ' ', preg_replace('/\d/', '', $familyFloatesValue))); + $temp2['data']['form_type'] = preg_replace('/\d/', '', $familyFloatesValue); + $temp2['data']['age_validation'] = $this->getAgeRange($array->Policy_Terms,$familyFloatesValue); + array_push($data,$temp2); - array_push($array->to_be_added_relationship,['relationship'=>$temp2['data']['relationship'],'age_validation'=>$temp2['data']['age_validation']]); - $array->to_be_added_relationship = array_values( - array_map('unserialize', - array_unique( - array_map('serialize', $array->to_be_added_relationship) + array_push($array->to_be_added_relationship,['relationship'=>$temp2['data']['relationship'],'age_validation'=>$temp2['data']['age_validation']]); + $array->to_be_added_relationship = array_values( + array_map('unserialize', + array_unique( + array_map('serialize', $array->to_be_added_relationship) + ) ) - ) - ); + ); + } } - } $array->relationship = []; foreach ($array->to_be_added_relationship as $key => $value) { From 6e0889b67c9d0435c4f50d204df406cc4121fc97 Mon Sep 17 00:00:00 2001 From: velz Date: Wed, 10 Dec 2025 16:47:58 +0530 Subject: [PATCH 13/39] FIX_MINOR --- app/Config/Database.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Config/Database.php b/app/Config/Database.php index 6f39178..d1632d6 100755 --- a/app/Config/Database.php +++ b/app/Config/Database.php @@ -98,7 +98,7 @@ class Database extends Config $this->defaultGroup = 'tests'; } - $this->enableSSL = env('DB_SSL_ENABLE'); + $this->enableSSL = env('DB_SSL_ENABLE') ?? false; if ($this->enableSSL === true || $this->enableSSL === 'true' || $this->enableSSL === 1 || $this->enableSSL === '1') { From 51af5340d2b5b815c256261494c7f2265c8d6afb Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Wed, 10 Dec 2025 18:58:10 +0530 Subject: [PATCH 14/39] FIX_EMP_DRAFT_COUNT --- app/Controllers/EmployeeRestController.php | 149 ++++++++++++++++++++- 1 file changed, 146 insertions(+), 3 deletions(-) diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php index d606525..8b2ecc8 100755 --- a/app/Controllers/EmployeeRestController.php +++ b/app/Controllers/EmployeeRestController.php @@ -3645,7 +3645,7 @@ class EmployeeRestController extends AdminController } - public function getPreEmployeePolicyCount() + public function getPreEmployeePolicyCountOld() { log_message('error', 'STEP 1: getPreEmployeePolicyCount API called'); @@ -3692,10 +3692,10 @@ class EmployeeRestController extends AdminController ->join('employee_polices', 'employees.id = employee_polices.employee_id') ->join('client_policy cp', 'employee_polices.client_policy_id = cp.id') ->where('employees.is_active', 1) - ->whereIn('employees.emp_status', ['draft']) + ->whereIn('employees.emp_status', ['draft', 'enrolled']) ->where('employees.family_floater_key', 'self') ->where('employee_polices.is_active', 1) - ->whereIn('employee_polices.status', ['draft']) + ->whereIn('employee_polices.status', ['draft', 'enrolled']) ->where('cp.enrolment_visibility', 1) ->where('cp.open_for_enrollment', 1) ->where('cp.policy_status', 1) @@ -3730,6 +3730,149 @@ class EmployeeRestController extends AdminController } } + public function getPreEmployeePolicyCount() + { + log_message('error', 'STEP 1: getPreEmployeePolicyCount API called'); + + $request = $this->request->getJSON(true); + $mobile_no = $request['mobile_number'] ?? null; + $email_id = $request['email_id'] ?? null; + $client_short_name = $request['client_short_name'] ?? null; + + log_message('error', 'STEP 2: Received input - ' . json_encode($request)); + + /** --------------------------------------------------------------- + * STEP 3: Resolve Client ID (If client_short_name passed) + * --------------------------------------------------------------- */ + $clientId = null; + if (!empty($client_short_name)) { + log_message('error', 'STEP 3: Looking up client with short_name: ' . $client_short_name); + + $client = $this->clientModel + ->select('id') + ->where('is_active', 1) + ->where('short_name', $client_short_name) + ->first(); + + if (!empty($client)) { + $clientId = $client['id']; + log_message('error', 'STEP 4: Found client ID: ' . $clientId); + } else { + log_message('error', 'STEP 4: No client found for short_name: ' . $client_short_name); + } + } else { + log_message('error', 'STEP 3: client_short_name is empty.'); + } + + /** --------------------------------------------------------------- + * STEP 4: Validate Request (either mobile or email is required) + * --------------------------------------------------------------- */ + if (empty($mobile_no) && empty($email_id)) { + log_message('error', 'STEP 5: Mobile number and Email both empty. Returning 0.'); + return $this->respond(['data' => 0, 'empNotEnrolledCount' => 0]); + } + + try { + /** --------------------------------------------------------------- + * STEP 6: Base Query Builder (extract common conditions) + * --------------------------------------------------------------- */ + $baseQuery = $this->employeeModel + ->join('employee_polices', 'employees.id = employee_polices.employee_id') + ->join('client_policy cp', 'employee_polices.client_policy_id = cp.id') + ->where('employees.is_active', 1) + ->where('employee_polices.is_active', 1) + ->where('cp.enrolment_visibility', 1) + ->where('cp.open_for_enrollment', 1) + ->where('cp.policy_status', 1) + ->whereIn('cp.policy_type_id', [1, 2, 6, 7]) + ->orderBy('employees.created_at', 'desc') + ->groupBy('employee_polices.client_policy_id'); + + // 🔹 Apply Client Filter if Provided + if (!empty($clientId)) { + $baseQuery->where('employees.client_id', $clientId); + log_message('error', 'Applied client ID filter: ' . $clientId); + } + + // 🔹 Apply Mobile Filter if Provided + if (!empty($mobile_no)) { + $baseQuery->where('employees.mobile', $mobile_no); + log_message('error', 'Applied mobile_no filter: ' . $mobile_no); + } + + // 🔹 Apply Email Filter if Provided + if (!empty($email_id)) { + $baseQuery->where('employees.email_corporate', $email_id); + log_message('error', 'Applied email_id filter: ' . $email_id); + } + + /** --------------------------------------------------------------- + * STEP 7: Count Enrolled + Draft (eligible) + * --------------------------------------------------------------- */ + $baseQuery->whereIn('employees.emp_status', ['draft', 'enrolled']) + ->whereIn('employee_polices.status', ['draft', 'enrolled']) + ->where('employees.family_floater_key', 'self'); + + $count = $baseQuery->get()->getNumRows(); + log_message('error', 'Eligible policy count = ' . $count); + + /** --------------------------------------------------------------- + * STEP 8: Count Only Draft (Not Enrolled yet) + * --------------------------------------------------------------- */ + $notEnrolledQuery = $this->employeeModel + ->join('employee_polices', 'employees.id = employee_polices.employee_id') + ->join('client_policy cp', 'employee_polices.client_policy_id = cp.id') + ->where('employees.is_active', 1) + ->where('employee_polices.is_active', 1) + ->where('cp.enrolment_visibility', 1) + ->where('cp.open_for_enrollment', 1) + ->where('cp.policy_status', 1) + ->whereIn('cp.policy_type_id', [1, 2, 6, 7]) + ->orderBy('employees.created_at', 'desc') + ->groupBy('employee_polices.client_policy_id'); + + // 🔹 Apply Client Filter if Provided + if (!empty($clientId)) { + $notEnrolledQuery->where('employees.client_id', $clientId); + log_message('error', 'Applied client ID filter: ' . $clientId); + } + + // 🔹 Apply Mobile Filter if Provided + if (!empty($mobile_no)) { + $notEnrolledQuery->where('employees.mobile', $mobile_no); + log_message('error', 'Applied mobile_no filter: ' . $mobile_no); + } + + // 🔹 Apply Email Filter if Provided + if (!empty($email_id)) { + $notEnrolledQuery->where('employees.email_corporate', $email_id); + log_message('error', 'Applied email_id filter: ' . $email_id); + } + + $notEnrolledQuery->whereIn('employees.emp_status', ['draft']) + ->whereIn('employee_polices.status', ['draft']); + + $not_enrolled_count = $notEnrolledQuery->get()->getNumRows(); + log_message('error', 'Not enrolled policy count = ' . $not_enrolled_count); + + /** --------------------------------------------------------------- + * STEP 9: Final Response + * --------------------------------------------------------------- */ + return $this->respond([ + 'pre_policy_count' => $count, + 'emp_not_enrolled_count' => $not_enrolled_count + ]); + + } catch (\Throwable $e) { + log_message('error', 'Exception occurred: ' . $e->getMessage()); + return $this->respond([ + 'pre_policy_count' => 0, + 'emp_not_enrolled_count' => 0 + ]); + } + } + + //-------------------------------------------------------------------------------------------- From dc88f23cc7a614f6febd8648183df9de2fe7c131 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Thu, 11 Dec 2025 09:35:25 +0530 Subject: [PATCH 15/39] FIX_ISSUE --- app/Controllers/EmployeeRestController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php index 8b2ecc8..25f697b 100755 --- a/app/Controllers/EmployeeRestController.php +++ b/app/Controllers/EmployeeRestController.php @@ -529,7 +529,7 @@ class EmployeeRestController extends AdminController { $is_from_copy = $this->request->getGet('is_from_copy') ?? null; - if($is_from_copy == false && $is_from_copy == null){ + if($is_from_copy == false || $is_from_copy == null){ $this->employeeModel->where('id', $this->request->getGet('id') ) ->where('is_active', 1 ) From c73a271dcf1191bde880d92b60091092fa4681ae Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Thu, 11 Dec 2025 09:43:52 +0530 Subject: [PATCH 16/39] FIX_ISSUE --- app/Controllers/EmployeeRestController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php index 25f697b..e3e921a 100755 --- a/app/Controllers/EmployeeRestController.php +++ b/app/Controllers/EmployeeRestController.php @@ -529,7 +529,7 @@ class EmployeeRestController extends AdminController { $is_from_copy = $this->request->getGet('is_from_copy') ?? null; - if($is_from_copy == false || $is_from_copy == null){ + if($is_from_copy == 'false' || $is_from_copy == false || $is_from_copy == 'null' || $is_from_copy == null){ $this->employeeModel->where('id', $this->request->getGet('id') ) ->where('is_active', 1 ) From d978f4574712467ec3bc7caaf822d4f3dabb900e Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Fri, 12 Dec 2025 12:25:01 +0530 Subject: [PATCH 17/39] FIX_DRAFT_COUNT --- app/Controllers/EmployeeRestController.php | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php index e3e921a..348b42a 100755 --- a/app/Controllers/EmployeeRestController.php +++ b/app/Controllers/EmployeeRestController.php @@ -3784,7 +3784,7 @@ class EmployeeRestController extends AdminController ->where('cp.enrolment_visibility', 1) ->where('cp.open_for_enrollment', 1) ->where('cp.policy_status', 1) - ->whereIn('cp.policy_type_id', [1, 2, 6, 7]) + ->whereIn('cp.policy_type_id', [1, 2, 3, 6, 7]) ->orderBy('employees.created_at', 'desc') ->groupBy('employee_polices.client_policy_id'); @@ -3820,6 +3820,15 @@ class EmployeeRestController extends AdminController * STEP 8: Count Only Draft (Not Enrolled yet) * --------------------------------------------------------------- */ $notEnrolledQuery = $this->employeeModel + ->select(" + ( + SELECT COUNT(e2.id) + FROM employees AS e2 + WHERE e2.is_active = 1 + AND e2.emp_status = 'draft' + AND e2.emp_code = employees.emp_code + ) AS draft_count + ") ->join('employee_polices', 'employees.id = employee_polices.employee_id') ->join('client_policy cp', 'employee_polices.client_policy_id = cp.id') ->where('employees.is_active', 1) @@ -3827,9 +3836,8 @@ class EmployeeRestController extends AdminController ->where('cp.enrolment_visibility', 1) ->where('cp.open_for_enrollment', 1) ->where('cp.policy_status', 1) - ->whereIn('cp.policy_type_id', [1, 2, 6, 7]) - ->orderBy('employees.created_at', 'desc') - ->groupBy('employee_polices.client_policy_id'); + ->whereIn('cp.policy_type_id', [1, 2, 3, 6, 7]) + ->orderBy('employees.created_at', 'desc'); // 🔹 Apply Client Filter if Provided if (!empty($clientId)) { @@ -3852,7 +3860,7 @@ class EmployeeRestController extends AdminController $notEnrolledQuery->whereIn('employees.emp_status', ['draft']) ->whereIn('employee_polices.status', ['draft']); - $not_enrolled_count = $notEnrolledQuery->get()->getNumRows(); + $not_enrolled_count = $notEnrolledQuery->get()->getRowArray()['draft_count'] ?? 0; log_message('error', 'Not enrolled policy count = ' . $not_enrolled_count); /** --------------------------------------------------------------- @@ -3860,7 +3868,7 @@ class EmployeeRestController extends AdminController * --------------------------------------------------------------- */ return $this->respond([ 'pre_policy_count' => $count, - 'emp_not_enrolled_count' => $not_enrolled_count + 'emp_not_enrolled_count' => (int) $not_enrolled_count ]); } catch (\Throwable $e) { From 061958c7c56ada7b418eda9524365e02ac16a76a Mon Sep 17 00:00:00 2001 From: velz Date: Mon, 15 Dec 2025 15:16:28 +0530 Subject: [PATCH 18/39] FIX_INTERNAL_API_CALL_HEADERS --- app/Config/Routes.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Config/Routes.php b/app/Config/Routes.php index eaf7741..d8d2548 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -532,7 +532,7 @@ $routes->group("employeeRest", ['filter' => ['appSignature'] ], function ($route $routes->post("verifyOtp", "RestAuthenticationController::verifyOtp"); $routes->post("checkPassword", "RestAuthenticationController::checkPassword"); $routes->get("downloadSampleExcel", "EmployeeRestController::downloadSampleExcel"); - + $routes->post("getPreEmployeePolicyCount", "EmployeeRestController::getPreEmployeePolicyCount"); }); @@ -552,7 +552,7 @@ $routes->get("sendCroneRemainderMail", "DashboardController::sendCroneRemainderM // $routes->get("getEmployeePolicy", "EmployeeRestController::getEmployeePolicy"); $routes->get("getAddOnPolicy", "EmployeeRestController::getAddOnPolicy"); $routes->post("addEmployeeAndDependence", "EmployeeRestController::addEmployeeAndDependence"); -$routes->post("getPreEmployeePolicyCount", "EmployeeRestController::getPreEmployeePolicyCount"); + From 35f096cf559157aeb5150f1a96a72388352f449d Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Mon, 22 Dec 2025 18:27:31 +0530 Subject: [PATCH 19/39] FEAT_ENROLLMENT_WINDOW_OPEN_CLOSE_DATE_CAPTURE --- app/Controllers/EmployeeController.php | 9 +- app/Controllers/EmployeeRestController.php | 142 +++++++++++++++--- app/Controllers/EmployeeServiceController.php | 3 + app/Helpers/utility_helper.php | 19 ++- app/Models/EmployeeModel.php | 10 +- app/Models/EmployeePolicyModel.php | 4 +- app/Models/FileModel.php | 4 +- app/Views/employee_upload.php | 30 ++++ app/Views/file_list.php | 23 ++- 9 files changed, 209 insertions(+), 35 deletions(-) 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..60a3e05 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); } @@ -573,7 +573,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 +1455,47 @@ 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.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(); if($checkGmcParentsPolicyExist) { $GmcParrentsData = $this->getGmcParrentsPolicy($checkGmcParentsPolicyExist,$emp_code,$client_id,$client_branch_id); @@ -1746,7 +1777,37 @@ 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.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 + ") ->where('client_policy.policy_type_id', $policy_type ) ->where('client_policy.is_addon', 1 ) ->where('client_policy.client_id', $client_id ) @@ -2062,6 +2123,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 +2132,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 +2164,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 +3718,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) - return true; + return true; else - return false; + return false; } @@ -3782,7 +3878,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 +3932,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..b5075d6 100755 --- a/app/Controllers/EmployeeServiceController.php +++ b/app/Controllers/EmployeeServiceController.php @@ -2085,6 +2085,9 @@ public function getFileMetaDataByFileId($file_id, $status = 'success'){ $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']); 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..47bf0b3 100755 --- a/app/Models/EmployeeModel.php +++ b/app/Models/EmployeeModel.php @@ -159,10 +159,12 @@ 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 - END AS OpenForEnrollment, + 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 , employee_polices.tpa_id as tpa_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/employee_upload.php b/app/Views/employee_upload.php index 4d54c71..1d20b1d 100755 --- a/app/Views/employee_upload.php +++ b/app/Views/employee_upload.php @@ -71,6 +71,16 @@ option:disabled { ?> + +
+ + +
+ +
+ + +

@@ -180,6 +190,26 @@ $(document).ready(function() { $("#policy_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 diff --git a/app/Views/file_list.php b/app/Views/file_list.php index cf7b4d6..837caac 100755 --- a/app/Views/file_list.php +++ b/app/Views/file_list.php @@ -44,8 +44,27 @@ // echo $reason; ?> - - + + + + + From d4baacb05521a106599e0c374cdea838dfcd8f4a Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Tue, 23 Dec 2025 14:22:02 +0530 Subject: [PATCH 20/39] FIX_ENROLLMENT_WINDOW --- app/Controllers/EmployeeRestController.php | 8 +++----- app/Models/EmployeeModel.php | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php index 60a3e05..05d9602 100755 --- a/app/Controllers/EmployeeRestController.php +++ b/app/Controllers/EmployeeRestController.php @@ -1478,10 +1478,9 @@ class EmployeeRestController extends AdminController 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 e.emp_code = '{$emp_code}' AND ep.client_policy_id = client_policy.id ) AS OpenForEnrollment, - -- 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, @@ -1799,10 +1798,9 @@ class EmployeeRestController extends AdminController 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 e.emp_code = '{$emp_code}' AND ep.client_policy_id = client_policy.id ) AS OpenForEnrollment, - -- 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, @@ -2151,7 +2149,7 @@ class EmployeeRestController extends AdminController 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 e.emp_code = '{$emp_code}' AND ep.client_policy_id = client_policy.id ) AS open_for_enrollment ") diff --git a/app/Models/EmployeeModel.php b/app/Models/EmployeeModel.php index 47bf0b3..c5bd85b 100755 --- a/app/Models/EmployeeModel.php +++ b/app/Models/EmployeeModel.php @@ -164,7 +164,7 @@ class EmployeeModel extends Model AND employee_polices.enrollment_close_date >= CURDATE() THEN 1 ELSE 0 - END AS OpenForEnrollment + END AS OpenForEnrollment, client_policy.disclaimer, client_policy.policy_type_id , employee_polices.tpa_id as tpa_id , From 317723c1a7768e771c16abf0118af7b4d3c3e6e0 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Tue, 23 Dec 2025 15:25:02 +0530 Subject: [PATCH 21/39] CHANGE_NEW_PLACE_HOLD_OPEND_CLOSE_DATE_WELCOME_MAIL_HANDLE --- app/Controllers/ClientController.php | 4 +- app/Controllers/EmployeeServiceController.php | 2 + app/Helpers/sendMailNotification.php | 21 ++++++++ app/Views/client_policy.php | 52 ++++++++++--------- app/Views/notification.php | 2 +- 5 files changed, 54 insertions(+), 27 deletions(-) diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index 5afb6bb..5c77edf 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();
 
diff --git a/app/Controllers/EmployeeServiceController.php b/app/Controllers/EmployeeServiceController.php
index b5075d6..15da05b 100755
--- a/app/Controllers/EmployeeServiceController.php
+++ b/app/Controllers/EmployeeServiceController.php
@@ -2170,6 +2170,8 @@ public function getFileMetaDataByFileId($file_id, $status = 'success'){
                                         'client_policy_id' => $file['policy_id'],
                                         'employee_policy_id' => $emp_policy_id ?? null,
                                         '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',
                                     ];
                                    //store email and mail content via helper to send notification
diff --git a/app/Helpers/sendMailNotification.php b/app/Helpers/sendMailNotification.php
index 859cd08..01b1d80 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($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}}"], "Client Logo", $mail_content);
             $mail_content = str_replace(["[[nhance_logo]]", "{{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($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'];
 
@@ -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/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 {
                                 
                              -->
-                            
+ + -
- - -
+ -
- - -
-