From 51af5340d2b5b815c256261494c7f2265c8d6afb Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Wed, 10 Dec 2025 18:58:10 +0530 Subject: [PATCH 1/4] 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 2/4] 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 3/4] 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 4/4] 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) {