myLogger = \Config\Services::mylogger(); $this->db = \Config\Database::connect(); //models $this->employeeModel = new EmployeeModel(); $this->employeePolicyModel = new EmployeePolicyModel(); $this->clientModel = new ClientModel(); $this->clientPolicyModel = new ClientPolicyModel(); $this->batchListModel = new BatchListModel(); $this->batchFileModel = new BatchFileModel(); $this->empEndorsementModel = new EmpEndorsementModel(); } public function getPendingActions() { //get pending actions like inception, corrections,deletions,SI enhanccnement to users $inception = $this->getPendingActionForInception(); $correction = $this->getPendingActionForCorrection(); $si_enhancement = $this->getPendingActionForSIEnhancement(); $deletion = $this->getPendingActionForDeletion(); $tpa = $this->getPendingActionForTPAIDEmpty(); $uhid = $this->getPendingActionForUHIDEmpty(); // dd($inception, $si_enhancement, $correction, $deletion, $tpa, $uhid); $data = ['inception' => $inception, 'correction' => $correction, 'si_enhancement' => $si_enhancement, 'deletion' => $deletion, 'tpa' => $tpa, 'uhid' => $uhid]; return $this->respond($data); } public function getPendingActionForInception() { // Build the query $builder = $this->db->table('client_policy cp'); $builder->select(' clients.client_name, policies.name as policy_name, cp.id as client_policy_id, cp.client_id, cp.policy_id, cp.policy_type_id, cp.is_addon, cp.policy_status, cp.open_for_enrollment, cp.inception_type, COUNT(ep.id) AS employee_policy_count '); $builder->join('employee_polices ep', 'cp.id = ep.client_policy_id AND ep.is_active = 1', 'left'); $builder->join('clients', 'cp.client_id = clients.id'); $builder->join('policies', 'cp.policy_id = policies.id'); $builder->where('cp.is_active', 1); $builder->where('cp.open_for_enrollment', 1); $builder->where('cp.is_addon', 1); $builder->where('cp.policy_status', 1); $builder->where('cp.inception_type', 1); $builder->whereIn('cp.policy_type_id', [1, 2, 30]); $builder->groupBy('cp.id, cp.client_id, cp.policy_id, cp.policy_type_id, cp.is_addon, cp.policy_status, cp.open_for_enrollment'); $builder->having('employee_policy_count = 0 OR employee_policy_count IS NULL'); // Execute the query $query = $builder->get(); // Fetch the results $results = $query->getResultArray(); return $results; } public function getPendingActionForCorrection() { // Subquery builder $subqueryBuilder = $this->db->table('emp_endorsement') ->select(' clients.client_name as client_name, clients.id as client_id, emp_endorsement.id, emp_endorsement.pk, emp_endorsement.endorsement_id, emp_endorsement.group_key, emp_endorsement.emp_code, emp_endorsement.table_name, emp_endorsement.actions, emp_endorsement.name, emp_endorsement.status, employees.name as ename ') ->join('employees', 'emp_endorsement.pk = employees.id AND employees.is_active = 1 AND employees.emp_status = \'active\'') ->join('clients', 'employees.client_id = clients.id AND clients.is_active = 1', 'left') ->where([ 'emp_endorsement.actions' => 'c', 'emp_endorsement.is_active' => 1, 'emp_endorsement.status' => 'pending', 'emp_endorsement.endorsement_id' => null ]) ->groupBy('emp_endorsement.pk, emp_endorsement.emp_code, emp_endorsement.table_name, emp_endorsement.actions, emp_endorsement.name'); // Main query builder $builder = $this->db->table('clients'); $builder->select(' subquery.client_name, subquery.client_id, COUNT(subquery.id) AS subquery_count'); $builder->join('(' . $subqueryBuilder->getCompiledSelect() . ') AS subquery', 'clients.id = subquery.client_id', 'left'); $builder->groupBy('clients.id'); // Execute the query $query = $builder->get(); // Fetch the results $results = $query->getResultArray(); $filteredResults = array_filter($results, function($value) { return $value['subquery_count'] != 0; }); return $filteredResults; } public function getPendingActionForSIEnhancement() { // Build the subquery $subqueryBuilder = $this->db->table('emp_endorsement') ->select(' clients.client_name as client_name, clients.id as client_id, client_policy.id as client_policy_id, policies.name as policy_name, policies.id as pid, emp_endorsement.id, emp_endorsement.pk, emp_endorsement.endorsement_id, emp_endorsement.group_key, emp_endorsement.emp_code, emp_endorsement.table_name, emp_endorsement.actions, emp_endorsement.name, emp_endorsement.status ') ->join('employee_polices', 'emp_endorsement.pk = employee_polices.id AND employee_polices.is_active = 1 AND employee_polices.status = \'active\'') ->join('client_policy', 'employee_polices.client_policy_id = client_policy.id AND client_policy.is_active = 1 AND client_policy.policy_status = 1') ->join('clients', 'client_policy.client_id = clients.id AND clients.is_active = 1') ->join('policies', 'client_policy.policy_id = policies.id AND policies.is_active = 1') ->where([ 'emp_endorsement.actions' => 'si', 'emp_endorsement.is_active' => 1, 'emp_endorsement.status' => 'pending', 'emp_endorsement.endorsement_id' => null ]) ->groupBy('emp_endorsement.pk, emp_endorsement.emp_code, emp_endorsement.table_name, emp_endorsement.actions, emp_endorsement.name'); // Build the main query $builder = $this->db->table('clients'); $builder->select(' clients.id, subquery.client_name, subquery.client_id, subquery.client_policy_id, subquery.policy_name, COUNT(subquery.id) AS subquery_count'); $builder->join('(' . $subqueryBuilder->getCompiledSelect() . ') AS subquery', 'clients.id = subquery.client_id', 'left'); $builder->groupBy('clients.id'); // Execute the query $query = $builder->get(); // Fetch the results $results = $query->getResultArray(); $filteredResults = array_filter($results, function($value) { return $value['subquery_count'] != 0; }); return $filteredResults; } public function getPendingActionForDeletion() { // Build the subquery $subqueryBuilder = $this->db->table('emp_endorsement') ->select(' clients.client_name as client_name, clients.id as client_id, client_policy.id as client_policy_id, policies.name as policy_name, policies.id as pid, emp_endorsement.pk, emp_endorsement.id, emp_endorsement.group_key, emp_endorsement.emp_code, emp_endorsement.table_name, emp_endorsement.actions, emp_endorsement.name, emp_endorsement.status ') ->join('employee_polices', 'emp_endorsement.pk = employee_polices.id AND employee_polices.is_active = 1 AND employee_polices.status = \'active\' AND emp_endorsement.table_name = \'employee_polices\'', 'left') ->join('client_policy', 'employee_polices.client_policy_id = client_policy.id AND client_policy.is_active = 1 AND client_policy.policy_status = 1', 'left') ->join('clients', 'client_policy.client_id = clients.id AND clients.is_active = 1', 'left') ->join('policies', 'client_policy.policy_id = policies.id AND policies.is_active = 1', 'left') ->where([ 'emp_endorsement.actions' => 'd', 'emp_endorsement.is_active' => 1, 'emp_endorsement.status' => 'pending', 'emp_endorsement.endorsement_id' => null, 'emp_endorsement.table_name' => 'employee_polices' ]) ->groupBy('emp_endorsement.pk, emp_endorsement.emp_code, emp_endorsement.actions, emp_endorsement.name'); // Build the main query $builder = $this->db->table('clients'); $builder->select(' clients.id, subquery.client_name, subquery.client_id, subquery.client_policy_id, subquery.policy_name, COUNT(subquery.id) AS subquery_count'); $builder->join('(' . $subqueryBuilder->getCompiledSelect() . ') AS subquery', 'clients.id = subquery.client_id', 'left'); $builder->groupBy('clients.id'); // Execute the query $query = $builder->get(); // Fetch the results $results = $query->getResultArray(); $filteredResults = array_filter($results, function($value) { return $value['subquery_count'] != 0; }); return $filteredResults; } public function getPendingActionForUHIDEmpty() { // Build the query $builder = $this->db->table('employee_polices'); $builder->select(' employee_polices.client_policy_id, employee_polices.uhid, clients.short_name, clients.client_name, policies.name as policy_name, clients.id as client_id '); $builder->join('client_policy', 'employee_polices.client_policy_id = client_policy.id AND client_policy.is_active = 1 AND client_policy.policy_status = 1'); $builder->join('clients', 'clients.id = client_policy.client_id'); $builder->join('policies', 'policies.id = client_policy.policy_id'); $builder->where('employee_polices.uhid', null); $builder->where('employee_polices.status', 'active'); $builder->where('employee_polices.is_active', 1); $builder->groupBy('employee_polices.client_policy_id'); // Execute the query $query = $builder->get(); // Fetch the results $results = $query->getResultArray(); return $results; } public function getPendingActionForTPAIDEmpty() { // Build the query $builder = $this->db->table('employee_polices'); $builder->select(' employee_polices.client_policy_id, employee_polices.uhid, employee_polices.tpa_id, clients.short_name, clients.client_name, policies.name as policy_name, clients.id as client_id '); $builder->join('client_policy', 'employee_polices.client_policy_id = client_policy.id AND client_policy.is_active = 1 AND client_policy.policy_status = 1'); $builder->join('clients', 'clients.id = client_policy.client_id'); $builder->join('policies', 'policies.id = client_policy.policy_id'); $builder->where('employee_polices.tpa_id', null); $builder->where('employee_polices.uhid IS NOT NULL'); $builder->where('employee_polices.status', 'active'); $builder->where('employee_polices.is_active', 1); $builder->groupBy('employee_polices.client_policy_id'); // Execute the query $query = $builder->get(); // Fetch the results $results = $query->getResultArray(); return $results; } }