db->table('client_policy') ->select('insurers.name as insurer_name, insurers.short_name as insurer_short') ->select('tpa.name as tpa_name, tpa.short_name as tpa_short') ->select('policies.name as policy_name') ->select('insurer_branch.branch_name as insurer_branch_name, insurer_branch.branch_code as insurer_branch_code') ->select('tpa_branch.branch_name as tpa_branch_name, tpa_branch.branch_code as tpa_branch_code') ->join('insurers', 'insurers.id = client_policy.insurer_id') ->join('insurer_branch', 'client_policy.insurer_branch_id = insurer_branch.id') ->join('tpa', 'tpa.id = client_policy.tpa_id') ->join('tpa_branch', 'client_policy.tpa_branch_id = tpa_branch.id') ->join('policies', 'policies.id = client_policy.policy_id') ->where('client_policy.id', $id) ->get() ->getResult(); } public function getClientPolicyByClientId($client_id){ return $this->db->table('client_policy') ->select('client_policy.*') ->select('insurers.name as insurer_name, insurers.short_name as insurer_short') ->select('tpa.name as tpa_name, tpa.short_name as tpa_short') ->select('policies.name as policy_name, policies.policy_type_id') ->select('policy_type.policy_type as policy_type_name') ->select('insurer_branch.branch_name as insurer_branch_name, insurer_branch.branch_code as insurer_branch_code') ->select('tpa_branch.branch_name as tpa_branch_name, tpa_branch.branch_code as tpa_branch_code') ->select('policy_type.policy_type as policy_type_name') ->select('client_branch.branch_name as branch_name') ->join('insurers', 'insurers.id = client_policy.insurer_id') ->join('insurer_branch', 'client_policy.insurer_branch_id = insurer_branch.id') ->join('tpa', 'tpa.id = client_policy.tpa_id', 'left') ->join('tpa_branch', 'client_policy.tpa_branch_id = tpa_branch.id', 'left') ->join('policies', 'policies.id = client_policy.policy_id') ->join('policy_type', 'policy_type.id = policies.policy_type_id') ->join('client_branch', 'client_branch.id = client_policy.client_branch_id') ->where('client_policy.client_id', $client_id) ->where('client_policy.policy_status', 1) ->where('client_policy.is_active', 1) ->get() ->getResult(); } public function getPolicyPremium($policy_id){ return $this->db->table('policies') ->select('policy_type.*') ->join('policy_type', 'policy_type.id = policies.policy_type_id') ->where('policies.id', $policy_id) ->get() ->getResult(); } public function getPolicyPremiumPolicyTypeId($policy_type_id){ return $this->db->table('policies') ->select('policy_type.*') ->join('policy_type', 'policy_type.id = policies.policy_type_id') ->where('policies.id', $policy_type_id) ->get() ->getResult(); } public function getPolicyDetails($client_id,$policy_id) { return $this->select('*') ->where('client_id',$client_id) ->where('id',$policy_id) ->get() ->getResult(); } public function getinsurerswithclientid($id){ return $this->db->table('client_policy') ->select('client_policy.*, cd_master.cd_ac_no') ->select('insurers.name as insurer_name, insurers.short_name as insurer_short') ->select('clients.client_name as client_name') ->join('clients','clients.id=client_policy.client_id') ->join('insurers', 'insurers.id = client_policy.insurer_id') ->join('cd_master', 'cd_master.insurer_id = client_policy.insurer_id') ->where('client_policy.client_id', $id) ->groupBy('client_policy.insurer_id') ->groupBy('client_policy.client_id', $id) // Group by insurer_id ->get() ->getResult(); // return $this->db->table('client_policy') // ->select('insurers.name as insurer_name, insurers.short_name as insurer_short') // ->select('clients.client_name as client_name') // ->select('MAX(client_policy.id) as max_id') // or any other appropriate aggregate function // ->join('clients', 'clients.id = client_policy.client_id') // ->join('insurers', 'insurers.id = client_policy.insurer_id') // ->where('client_policy.client_id', $id) // ->groupBy('client_policy.insurer_id') // ->groupBy('client_policy.client_id') // ->get() // ->getResult(); } public function getinsurerswithinsurenceid($insurerId){ return $this->db->table('client_policy') ->select('client_policy.*') ->select('insurers.name as insurer_name, insurers.short_name as insurer_short') ->select('clients.client_name as clientname, clients.short_name as clientshort') ->join('insurers', 'insurers.id = client_policy.insurer_id') ->join('clients', 'clients.id = client_policy.client_id') ->where('client_policy.insurer_id', $insurerId) ->groupBy('client_policy.client_id') // Group by insurer_id ->get() ->getResult(); } public function getClientById($id) { $query = $this->db->table('clients')->getWhere(['id' => $id]); // Debug statement return $query->getRow(); } public function getDepositData($clientId, $insurerId) { // Fetch the deposit data based on client and insurer IDs return $this->db->table('cash_deposit') ->select('cash_deposit.*') ->select('insurers.name as insurer_name, insurers.short_name as insurer_short') ->select('clients.client_name as clientname, clients.short_name as clientshort') // ->select('policies.name as policy_name') ->select('policy_type.policy_type') ->select('user_profiles.first_name as username') ->join('user_profiles', 'user_profiles.id = cash_deposit.created_by', 'left') ->join('insurers', 'insurers.id = cash_deposit.insurer_id', 'left') ->join('clients', 'clients.id = cash_deposit.client_id', 'left') ->join('client_policy', 'client_policy.id = cash_deposit.client_policy_id', 'left') // ->join('policies', 'policies.id = client_policy.policy_id', 'left') ->join('policy_type', 'policy_type.id = client_policy.policy_type_id', 'left') ->where('cash_deposit.client_id', $clientId) ->where('cash_deposit.insurer_id', $insurerId) ->where('cash_deposit.is_active', 1) ->orderBy('cash_deposit.id', 'DESC') ->get() ->getResult(); } public function getDepositSummary($clientId, $insurerId) { // Fetch the sum of credit and debit transactions and calculate the balance return $this->db->table('cash_deposit') ->select('SUM(CASE WHEN transaction_type = "Credit" THEN amount ELSE 0 END) AS total_credit') ->select('SUM(CASE WHEN transaction_type = "Debit" THEN amount ELSE 0 END) AS total_withdraw') ->select('SUM(CASE WHEN transaction_type = "Credit" THEN amount ELSE -amount END) AS balance') ->select('SUM(CASE WHEN sub_type = 3 THEN amount ELSE 0 END) AS total_refund') ->where('client_id', $clientId) ->where('insurer_id', $insurerId) ->get() ->getRow(); } // Inside your clientPolicyModel // Inside your clientPolicyModel // public function getDepositDataWithBalance($clientId, $insurerId) // { // // Fetch deposit data with balance information // $builder = $this->db->table('cash_deposit'); // $builder->select('id, created_at, description, sub_type, amount, transaction_type'); // $builder->where('client_id', $clientId); // $builder->where('insurer_id', $insurerId); // $builder->orderBy('created_at', 'asc'); // $depositData = $builder->get()->getResult(); // $currentBalance = 0; // foreach ($depositData as $transaction) { // if ($transaction->transaction_type == 'Credit') { // $currentBalance += $transaction->amount; // } elseif ($transaction->transaction_type == 'Debit') { // $currentBalance -= $transaction->amount; // } // $transaction->balance = $currentBalance; // } // return $depositData; // } public function getBalances($clientId) { $depositsummary = $this->getDepositlistsummary($clientId); $balances = []; foreach ($depositsummary as $summary) { $insurerId = $summary->insurer_id; $balances[$insurerId] = $summary; } return $balances; } public function getDepositlistsummary($id) { return $this->db->table('cash_deposit') ->select('insurer_id') ->select('SUM(CASE WHEN transaction_type = "Credit" THEN amount ELSE -amount END) AS balance') ->where('client_id', $id) ->groupBy('insurer_id') ->get() ->getResult(); } public function updateStatus(){ // Update client_policy table $client = $this->db->query("UPDATE client_policy SET policy_status = 0 WHERE policy_end_date < CURDATE()"); $client_count = $this->db->affectedRows(); // Update employee_polices table $employee = $this->db->query("UPDATE employee_polices SET status = 'expired' WHERE policy_end_date < CURDATE()"); $emp_count = $this->db->affectedRows(); return ['client'=>$client_count, 'emp' => $emp_count]; } public function getpolicyWithPattern($client_id){ $query = $this->db->table('client_policy') ->select('client_policy.*, policies.name, policies.policy_type_id, policy_type.policy_type') ->join('policies', 'policies.id = client_policy.policy_id') ->join('policy_type', 'policy_type.id = policies.policy_type_id') // ->where('policy_type.policy_type', 'GMC') ->whereIn('policy_type.id', [2, 3]) ->where('client_policy.client_id', $client_id) ->get() ->getResult(); return $query; } public function getTopUpPolicy($client_id, $type){ $query = " SELECT client_policy.*, policies.name, policies.policy_type_id FROM client_policy JOIN policies ON policies.id = client_policy.policy_id JOIN policy_type ON policy_type.id = policies.policy_type_id WHERE policy_type.policy_type = '{$type}' AND client_policy.client_id = {$client_id}"; $result = $this->db->query($query)->getResult(); return $result; } public function getClientPolicyByPolicyType($client_id, $type){ $query = $this->db->table('client_policy') ->select('client_policy.*, insurers.name as insurer_name, insurers.short_name as insurer_short') ->select('tpa.name as tpa_name, tpa.short_name as tpa_short') ->select('policies.name as policy_name, policies.policy_type_id') ->select('policy_type.policy_type as policy_type_name') ->select('insurer_branch.branch_name as insurer_branch_name, insurer_branch.branch_code as insurer_branch_code') ->select('tpa_branch.branch_name as tpa_branch_name, tpa_branch.branch_code as tpa_branch_code') ->join('insurers', 'insurers.id = client_policy.insurer_id') ->join('insurer_branch', 'client_policy.insurer_branch_id = insurer_branch.id') ->join('tpa', 'tpa.id = client_policy.tpa_id') ->join('tpa_branch', 'client_policy.tpa_branch_id = tpa_branch.id') ->join('policies', 'policies.id = client_policy.policy_id') ->join('policy_type', 'policy_type.id = policies.policy_type_id') ->where('client_policy.client_id', $client_id) ->where('client_policy.policy_status', 1); if ($type == 2) { $query->where('policy_type.policy_type', 'GMC - Top-up'); } else if ($type == 3) { $query->whereIn('policy_type.policy_type', ['GMC - Parents', 'GMC - Top-up(Parents)']); } $result = $query->get()->getResult(); return $result; } }