1268 lines
48 KiB
PHP
1268 lines
48 KiB
PHP
<?php
|
|
namespace App\Models;
|
|
|
|
use CodeIgniter\Model;
|
|
|
|
class TicketMasterModel extends Model
|
|
{
|
|
protected $table = 'ticket_master';
|
|
protected $primaryKey = 'id';
|
|
protected $useAutoIncrement = true;
|
|
protected $returnType = 'array';
|
|
protected $useSoftDeletes = false;
|
|
protected $protectFields = true;
|
|
protected $allowedFields = [
|
|
'id',
|
|
'ticket_type_id',
|
|
'feedback_json',
|
|
'claim_status_id',
|
|
'acm_id',
|
|
'insurer_id',
|
|
'tpa_id',
|
|
'client_id',
|
|
'priority',
|
|
'policy_no',
|
|
'emp_code',
|
|
'tpa_no',
|
|
'emp_name',
|
|
'insured_name',
|
|
'relationship',
|
|
'emp_mobile',
|
|
'emp_mail',
|
|
'mode_of_intimation',
|
|
'claim_type',
|
|
'hospital_name',
|
|
'doa',
|
|
'dod',
|
|
'claim_amount',
|
|
'pod_no',
|
|
'created_by',
|
|
'updated_by',
|
|
'created_at',
|
|
'updated_at',
|
|
'date_of_join',
|
|
'date_of_incep',
|
|
'dob',
|
|
'date_of_accident',
|
|
'date_of_death',
|
|
'date_of_intimat',
|
|
'si_amt',
|
|
'is_active',
|
|
'claim_number',
|
|
'emp_id',
|
|
'insured_emp_id',
|
|
|
|
'raised_date',
|
|
'registration_date',
|
|
'query_received_date',
|
|
'denial_date',
|
|
'approved_date',
|
|
'settled_date',
|
|
'denial_reason',
|
|
'approved_letter',
|
|
'approved_amount',
|
|
'utr_details',
|
|
'settle_letter',
|
|
'is_head_approved',
|
|
|
|
'return_remark',
|
|
'cancel_remark',
|
|
'awb_no_courier_name',
|
|
|
|
'non_id_reason',
|
|
'head_rejection_reason',
|
|
'pay_initiate_date',
|
|
'emp_personal_mail',
|
|
'client_policy_id',
|
|
|
|
'approved_description',
|
|
'file_id',
|
|
'denial_letter',
|
|
|
|
'manager_id',
|
|
'agent_id',
|
|
'vehicle_id',
|
|
|
|
'hospital_address',
|
|
'hospital_state',
|
|
'hospital_city',
|
|
'hospital_pin_code',
|
|
'hospital_phone_no',
|
|
'claim_description',
|
|
'required_docs',
|
|
'policy_transaction_id',
|
|
'tpa_claim_type',
|
|
'tpa_ailments',
|
|
'tpa_claim_status',
|
|
'tpa_claim_id',
|
|
'settled_amount',
|
|
'tpa_claim_push_reference_no',
|
|
'claim_dump_ref_id',
|
|
'last_updated_by',
|
|
'tpa_shortfall_no',
|
|
'claim_created_by',
|
|
'claim_dump_date'
|
|
|
|
|
|
];
|
|
|
|
// Callbacks
|
|
protected $allowCallbacks = true;
|
|
protected $beforeInsert = ["checkAndADDCreatedByValue"];
|
|
protected $afterInsert = [];
|
|
protected $beforeUpdate = ["checkAndUpdateUpdatedByValue"];
|
|
protected $afterUpdate = [];
|
|
protected $beforeFind = [];
|
|
protected $afterFind = [];
|
|
protected $beforeDelete = [];
|
|
protected $afterDelete = [];
|
|
|
|
protected function checkAndADDCreatedByValue(array $data)
|
|
{
|
|
// Check if 'updated_by' value is null or empty
|
|
if (empty($data['data']['created_by'])) {
|
|
// Set 'updated_by' value to the current session user ID
|
|
$data['data']['created_by'] = get_session_userid();
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
|
|
protected function checkAndUpdateUpdatedByValue(array $data)
|
|
{
|
|
// Check if 'updated_by' value is null or empty
|
|
if (empty($data['data']['updated_by'])) {
|
|
// Set 'updated_by' value to the current session user ID
|
|
$data['data']['updated_by'] = get_session_userid();
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
|
|
public function getTemplateDataByStatusID($claim_status_id, $ticket_type_id = null)
|
|
{
|
|
$builder = $this->db->table('ticket_claim_status tcs')
|
|
->select('ticket_mail_template.*')
|
|
->join('ticket_mail_template', 'ticket_mail_template.trigger_type = tcs.trigger_type')
|
|
->where('ticket_mail_template.is_active', 1)
|
|
->where('tcs.id', $claim_status_id)
|
|
->where('tcs.is_active', 1);
|
|
|
|
if ($ticket_type_id !== null && $ticket_type_id !== '') {
|
|
$builder->where('ticket_mail_template.ticket_type', $ticket_type_id);
|
|
}
|
|
|
|
$template_data = $builder->get()->getResultArray();
|
|
|
|
return $template_data;
|
|
}
|
|
|
|
public function getTemplateDataByTicketID($ticket_id)
|
|
{
|
|
$template_data = $this
|
|
->select("ticket_mail_template.*, CASE
|
|
WHEN employees.email_corporate IS NULL OR employees.email_corporate = ''
|
|
THEN ticket_master.emp_mail
|
|
ELSE employees.email_corporate
|
|
END as emp_mail, ,ticket_master.claim_status_id")
|
|
->join('ticket_claim_status', 'ticket_master.claim_status_id = ticket_claim_status.id and ticket_claim_status.is_active = 1')
|
|
->join('ticket_mail_template', '
|
|
ticket_claim_status.trigger_type = ticket_mail_template.trigger_type
|
|
and ticket_claim_status.ticket_type = ticket_mail_template.ticket_type
|
|
and ticket_mail_template.is_active = 1')
|
|
->join('employees', 'employees.id = ticket_master.emp_id', 'left')
|
|
->where('ticket_master.id', $ticket_id)
|
|
->where('ticket_master.is_active', 1)
|
|
->where('ticket_claim_status.is_active', 1)
|
|
->first();
|
|
|
|
return $template_data;
|
|
}
|
|
|
|
public function getTicketDataByTicketID($ticket_id)
|
|
{
|
|
$ticket_data = $this->select("
|
|
ticket_master.*,
|
|
CASE
|
|
WHEN employees.email_corporate IS NULL OR employees.email_corporate = ''
|
|
THEN ticket_master.emp_mail
|
|
ELSE employees.email_corporate
|
|
END as emp_mail,
|
|
|
|
user_profiles.first_name as acm,
|
|
user_profiles.mobile as acm_mobile,
|
|
user_profiles.email as acm_email,
|
|
|
|
clients.common_mails,
|
|
clients.client_name,
|
|
|
|
insurers.name as insurer_name,
|
|
tpa.name as tpa_name,
|
|
ticket_notes.note as auto_query_content
|
|
")
|
|
->join('clients', 'ticket_master.client_id = clients.id', 'left')
|
|
->join('insurers', 'ticket_master.insurer_id = insurers.id', 'left')
|
|
->join('tpa', 'ticket_master.tpa_id = tpa.id', 'left')
|
|
->join('ticket_notes', 'ticket_master.id = ticket_notes.ticket_id and ticket_notes.is_active = 1 and ticket_notes.is_auto_query = 1', 'left')
|
|
->join('user_profiles', 'ticket_master.acm_id = user_profiles.id', 'left')
|
|
->join('employees', 'employees.id = ticket_master.emp_id', 'left')
|
|
->where('ticket_master.id', $ticket_id)
|
|
->where('ticket_master.is_active', 1)
|
|
->first();
|
|
|
|
return $ticket_data;
|
|
}
|
|
|
|
//get TAT report BAND wise Data
|
|
// public function getTATReport($ticket_type = null, $start_date = null, $end_date = null)
|
|
// {
|
|
// //set default last 3 months data date
|
|
// $fromDate = date('Y-m-d', strtotime('-90 days'));
|
|
// $toDate = date('Y-m-d 23:59:59');
|
|
|
|
// if (!empty($start_date) && !empty($end_date)) {
|
|
// $fromDate = change_date_format($start_date);
|
|
// $toDate = change_date_format($end_date);
|
|
// }
|
|
// $ticket_type_data_1 = "";
|
|
// $ticket_type_data_2 = "";
|
|
// if(!empty($ticket_type)){
|
|
// $ticket_type_data_1 = "AND ticket_type = $ticket_type";
|
|
// $ticket_type_data_2 = "AND tm.ticket_type_id = $ticket_type";
|
|
// }
|
|
|
|
// // Fetch claim statuses from the `ticket_claim_status` table
|
|
// $statusQuery = " SELECT
|
|
// id, claim_status, ticket_type
|
|
// FROM ticket_claim_status
|
|
// Where is_active = 1
|
|
// $ticket_type_data_1
|
|
// ";
|
|
// $statusResult = $this->db->query($statusQuery)->getResultArray();
|
|
// // dd($statusResult);
|
|
|
|
// // Initialize dynamic query parts
|
|
// $dynamicSelect = '';
|
|
|
|
// // Loop through each claim status and generate the COALESCE and CASE statements for the SELECT
|
|
// foreach ($statusResult as $status) {
|
|
|
|
// $columnName = $status['claim_status']; // Default column name
|
|
|
|
// if (empty($ticket_type)) {
|
|
// // Append the insurance type prefix based on `ticket_type`
|
|
// switch ($status['ticket_type']) {
|
|
// case 1:
|
|
// $columnName = "GMC - {$status['claim_status']}";
|
|
// break;
|
|
// case 2:
|
|
// $columnName = "GPA - {$status['claim_status']}";
|
|
// break;
|
|
// case 3:
|
|
// $columnName = "EDLI - {$status['claim_status']}";
|
|
// break;
|
|
// case 4:
|
|
// $columnName = "GTLI - {$status['claim_status']}";
|
|
// break;
|
|
// }
|
|
// }
|
|
|
|
// $dynamicSelect .= "
|
|
// COALESCE(
|
|
// SUM(
|
|
// CASE
|
|
// WHEN subquery.status_id = {$status['id']} THEN 1
|
|
// ELSE 0
|
|
// END
|
|
// ),
|
|
// 0
|
|
// ) AS `$columnName`, ";
|
|
// }
|
|
|
|
// // Remove the trailing comma from the SELECT part
|
|
// $dynamicSelect = rtrim($dynamicSelect, ', ');
|
|
// // dd($dynamicSelect);
|
|
|
|
// // Construct the full SQL query
|
|
// $sql = "
|
|
// SELECT
|
|
// tc.TAT_Category,
|
|
// $dynamicSelect
|
|
// FROM
|
|
// (
|
|
// SELECT 'Above 20 Days' AS TAT_Category
|
|
// UNION ALL
|
|
// SELECT '13-20 Days'
|
|
// UNION ALL
|
|
// SELECT '7-12 Days'
|
|
// UNION ALL
|
|
// SELECT '0-6 Days'
|
|
// ) AS tc
|
|
// LEFT JOIN (
|
|
// SELECT
|
|
// tm.id AS ticket_id,
|
|
// tcs.claim_status,
|
|
// tcs.id AS status_id,
|
|
// CASE
|
|
// WHEN DATEDIFF(
|
|
// COALESCE(th.created_at, tm.created_at),
|
|
// COALESCE(
|
|
// (SELECT MIN(created_at) FROM ticket_history th2 WHERE th2.ticket_id = tm.id),
|
|
// tm.created_at
|
|
// )
|
|
// ) BETWEEN 0 AND 6 THEN '0-6 Days'
|
|
// WHEN DATEDIFF(
|
|
// COALESCE(th.created_at, tm.created_at),
|
|
// COALESCE(
|
|
// (SELECT MIN(created_at) FROM ticket_history th2 WHERE th2.ticket_id = tm.id),
|
|
// tm.created_at
|
|
// )
|
|
// ) BETWEEN 7 AND 12 THEN '7-12 Days'
|
|
// WHEN DATEDIFF(
|
|
// COALESCE(th.created_at, tm.created_at),
|
|
// COALESCE(
|
|
// (SELECT MIN(created_at) FROM ticket_history th2 WHERE th2.ticket_id = tm.id),
|
|
// tm.created_at
|
|
// )
|
|
// ) BETWEEN 13 AND 20 THEN '13-20 Days'
|
|
// ELSE 'Above 20 Days'
|
|
// END AS TAT_Category
|
|
// FROM
|
|
// ticket_master tm
|
|
// JOIN ticket_history th ON tm.id = th.ticket_id
|
|
// JOIN ticket_claim_status tcs ON th.field_name = 'claim_status_id'
|
|
// AND th.new_value = tcs.id
|
|
// WHERE
|
|
// tm.ticket_type_id = tcs.id
|
|
// $ticket_type_data_2
|
|
// AND tm.created_at >= '$fromDate'
|
|
// AND tm.created_at <= '$toDate'
|
|
// AND tm.is_active = 1
|
|
// AND th.is_active = 1
|
|
// AND tcs.is_active = 1
|
|
// ) AS subquery ON tc.TAT_Category = subquery.TAT_Category
|
|
// GROUP BY
|
|
// tc.TAT_Category
|
|
// ORDER BY
|
|
// FIELD(tc.TAT_Category, 'Above 20 Days', '13-20 Days', '7-12 Days', '0-6 Days');
|
|
// ";
|
|
|
|
// // Execute the query and return the result
|
|
// $data = $this->db->query($sql)->getResultArray();
|
|
// // print_rr($this->db->getLastQuery(), $data); die;
|
|
|
|
// // $tableData = [];
|
|
// // if (!empty($data)) {
|
|
// // // Extract table headers from the first row keys
|
|
// // $headers = array_keys($data[0]);
|
|
// // $tableData['headers'] = $headers;
|
|
// // $tableData['body'] = $data;
|
|
// // }
|
|
|
|
// return $data;
|
|
// }
|
|
|
|
// public function getTATReport($ticket_type = null, $start_date = null, $end_date = null)
|
|
// {
|
|
// //set default last 3 months data date
|
|
// $fromDate = date('Y-m-d', strtotime('-90 days'));
|
|
// $toDate = date('Y-m-d 23:59:59');
|
|
|
|
// if (!empty($start_date) && !empty($end_date)) {
|
|
// $fromDate = change_date_format($start_date);
|
|
// $toDate = change_date_format($end_date);
|
|
// }
|
|
// $ticket_type_data_1 = "";
|
|
// $ticket_type_data_2 = "";
|
|
// if (!empty($ticket_type)) {
|
|
// $ticket_type_data_1 = "AND ticket_type = $ticket_type";
|
|
// $ticket_type_data_2 = "WHERE tm.ticket_type_id = $ticket_type";
|
|
// }
|
|
|
|
// // Fetch claim statuses from the `ticket_claim_status` table
|
|
// $statusQuery = " SELECT
|
|
// id, claim_status, ticket_type
|
|
// FROM ticket_claim_status
|
|
// Where is_active = 1
|
|
// $ticket_type_data_1
|
|
// ";
|
|
// $statusResult = $this->db->query($statusQuery)->getResultArray();
|
|
// // dd($statusResult);
|
|
|
|
// // Initialize dynamic query parts
|
|
// $dynamicSelect = '';
|
|
|
|
// // Loop through each claim status and generate the COALESCE and CASE statements for the SELECT
|
|
// foreach ($statusResult as $status) {
|
|
|
|
// $columnName = $status['claim_status']; // Default column name
|
|
|
|
// if (empty($ticket_type)) {
|
|
// // Append the insurance type prefix based on `ticket_type`
|
|
// switch ($status['ticket_type']) {
|
|
// case 1:
|
|
// $columnName = "GMC - {$status['claim_status']}";
|
|
// break;
|
|
// case 2:
|
|
// $columnName = "GPA - {$status['claim_status']}";
|
|
// break;
|
|
// case 3:
|
|
// $columnName = "EDLI - {$status['claim_status']}";
|
|
// break;
|
|
// case 4:
|
|
// $columnName = "GTLI - {$status['claim_status']}";
|
|
// break;
|
|
// }
|
|
// }
|
|
|
|
// $dynamicSelect .= "
|
|
// COALESCE(
|
|
// SUM(
|
|
// CASE
|
|
// WHEN subquery.status_id = {$status['id']} THEN 1
|
|
// ELSE 0
|
|
// END
|
|
// ),
|
|
// 0
|
|
// ) AS `$columnName`, ";
|
|
// }
|
|
|
|
// // Remove the trailing comma from the SELECT part
|
|
// $dynamicSelect = rtrim($dynamicSelect, ', ');
|
|
// // dd($dynamicSelect);
|
|
|
|
// // Construct the full SQL query
|
|
// $sql = "
|
|
// SELECT
|
|
// tc.TAT_Category,
|
|
// $dynamicSelect
|
|
// FROM
|
|
// (
|
|
// SELECT 'Above 20 Days' AS TAT_Category
|
|
// UNION ALL
|
|
// SELECT '13-20 Days'
|
|
// UNION ALL
|
|
// SELECT '7-12 Days'
|
|
// UNION ALL
|
|
// SELECT '0-6 Days'
|
|
// ) AS tc
|
|
// LEFT JOIN (
|
|
// SELECT
|
|
// tm.id AS ticket_id,
|
|
// latest_status.claim_status_id AS status_id,
|
|
// CASE
|
|
// WHEN DATEDIFF(CURDATE(), COALESCE(latest_status.change_date, tm.created_at)) BETWEEN 0 AND 6 THEN '0-6 Days'
|
|
// WHEN DATEDIFF(CURDATE(), COALESCE(latest_status.change_date, tm.created_at)) BETWEEN 7 AND 12 THEN '7-12 Days'
|
|
// WHEN DATEDIFF(CURDATE(), COALESCE(latest_status.change_date, tm.created_at)) BETWEEN 13 AND 20 THEN '13-20 Days'
|
|
// ELSE 'Above 20 Days'
|
|
// END AS TAT_Category
|
|
// FROM
|
|
// ticket_master tm
|
|
// LEFT JOIN (
|
|
// SELECT
|
|
// th.ticket_id,
|
|
// th.new_value AS claim_status_id,
|
|
// MAX(th.created_at) AS change_date
|
|
// FROM
|
|
// ticket_history th
|
|
// WHERE
|
|
// th.field_name = 'claim_status_id'
|
|
// AND th.is_active = 1
|
|
// GROUP BY
|
|
// th.ticket_id, th.new_value
|
|
// ) AS latest_status ON latest_status.ticket_id = tm.id
|
|
// WHERE tm.is_active = 1
|
|
// AND tm.created_at >= '$fromDate'
|
|
// AND tm.created_at <= '$toDate'
|
|
// " . (!empty($ticket_type) ? " AND tm.ticket_type_id = $ticket_type" : "") . "
|
|
// GROUP BY tm.id, latest_status.claim_status_id, latest_status.change_date, tm.created_at
|
|
// ) AS subquery ON tc.TAT_Category = subquery.TAT_Category
|
|
// GROUP BY
|
|
// tc.TAT_Category
|
|
// ORDER BY
|
|
// FIELD(
|
|
// tc.TAT_Category,
|
|
// 'Above 20 Days',
|
|
// '13-20 Days',
|
|
// '7-12 Days',
|
|
// '0-6 Days'
|
|
// );
|
|
// ";
|
|
|
|
// // Execute the query and return the result
|
|
// $data = $this->db->query($sql)->getResultArray();
|
|
// // dd($data);
|
|
// print_rr($data);die();
|
|
// // print_rr($this->db->getLastQuery()->getQuery()); die;
|
|
|
|
// return $data;
|
|
// }
|
|
public function getTATReport($ticket_type = null, $start_date = null, $end_date = null)
|
|
{
|
|
// Set default date range (last 90 days)
|
|
$fromDate = date('Y-m-d', strtotime('-90 days'));
|
|
$toDate = date('Y-m-d 23:59:59');
|
|
|
|
if (! empty($start_date) && ! empty($end_date)) {
|
|
$fromDate = change_date_format($start_date);
|
|
$toDate = change_date_format($end_date);
|
|
}
|
|
|
|
// Get all active claim statuses
|
|
$statusQuery = $this->db->table('ticket_claim_status')
|
|
->select('id, claim_status')
|
|
->where('is_active', 1)
|
|
->orderBy('id', 'ASC');
|
|
|
|
if (! empty($ticket_type)) {
|
|
$statusQuery->where('ticket_type', $ticket_type);
|
|
}
|
|
|
|
$statusResult = $statusQuery->get()->getResultArray();
|
|
|
|
// Create a list of all TAT categories we want in the output
|
|
$tatCategories = [
|
|
'Above 20 Days',
|
|
'13-20 Days',
|
|
'7-12 Days',
|
|
'0-6 Days',
|
|
];
|
|
|
|
// Initialize the result array with all TAT categories
|
|
$result = [];
|
|
foreach ($tatCategories as $category) {
|
|
$row = ['TAT_Category' => $category];
|
|
foreach ($statusResult as $status) {
|
|
$row[$status['claim_status']] = 0;
|
|
}
|
|
$result[] = $row;
|
|
}
|
|
|
|
// Get the base query for ticket counts by status and TAT category
|
|
$query = $this->db->table('ticket_master tm')
|
|
->select([
|
|
'tcs.claim_status',
|
|
'CASE
|
|
WHEN DATEDIFF(CURDATE(), COALESCE(
|
|
(SELECT MAX(th.created_at)
|
|
FROM ticket_history th
|
|
WHERE th.ticket_id = tm.id
|
|
AND th.field_name = "claim_status_id"
|
|
AND th.is_active = 1),
|
|
tm.created_at
|
|
)) BETWEEN 0 AND 6 THEN "0-6 Days"
|
|
WHEN DATEDIFF(CURDATE(), COALESCE(
|
|
(SELECT MAX(th.created_at)
|
|
FROM ticket_history th
|
|
WHERE th.ticket_id = tm.id
|
|
AND th.field_name = "claim_status_id"
|
|
AND th.is_active = 1),
|
|
tm.created_at
|
|
)) BETWEEN 7 AND 12 THEN "7-12 Days"
|
|
WHEN DATEDIFF(CURDATE(), COALESCE(
|
|
(SELECT MAX(th.created_at)
|
|
FROM ticket_history th
|
|
WHERE th.ticket_id = tm.id
|
|
AND th.field_name = "claim_status_id"
|
|
AND th.is_active = 1),
|
|
tm.created_at
|
|
)) BETWEEN 13 AND 20 THEN "13-20 Days"
|
|
ELSE "Above 20 Days"
|
|
END AS tat_category',
|
|
'COUNT(*) AS count',
|
|
])
|
|
->join('ticket_claim_status tcs', 'tcs.id = tm.claim_status_id AND tcs.is_active = 1')
|
|
->where('tm.is_active', 1)
|
|
->where('tm.created_at >=', $fromDate)
|
|
->where('tm.created_at <=', $toDate)
|
|
->groupBy('tcs.claim_status, tat_category')
|
|
->orderBy('FIELD(tat_category, "Above 20 Days", "13-20 Days", "7-12 Days", "0-6 Days")');
|
|
|
|
if (! empty($ticket_type)) {
|
|
$query->where('tm.ticket_type_id', $ticket_type);
|
|
}
|
|
|
|
$countResults = $query->get()->getResultArray();
|
|
|
|
// Populate the result array with actual counts
|
|
foreach ($countResults as $row) {
|
|
foreach ($result as &$categoryRow) {
|
|
if ($categoryRow['TAT_Category'] === $row['tat_category']) {
|
|
$categoryRow[$row['claim_status']] = (int) $row['count'];
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
public function tpaWiseReport($policy_type = null, $start_date = null, $end_date = null)
|
|
{
|
|
$ticket_type_data_1 = "";
|
|
$ticket_type_data_2 = "";
|
|
$statusBinds = [];
|
|
|
|
if (! empty($policy_type)) {
|
|
$ticket_type_data_1 = "AND ticket_type = :policy_type:";
|
|
$ticket_type_data_2 = "AND master.ticket_type_id = :policy_type:";
|
|
$statusBinds['policy_type'] = $policy_type;
|
|
}
|
|
|
|
// Fetch claim statuses dynamically
|
|
$statusQuery = "SELECT id, claim_status FROM ticket_claim_status WHERE is_active = 1 $ticket_type_data_1";
|
|
$statusResult = $this->db->query($statusQuery, $statusBinds)->getResultArray();
|
|
|
|
// Initialize dynamic query parts
|
|
$dynamicSelect = '';
|
|
$dynamicTotal = '';
|
|
$dynamicClosedTotal = '';
|
|
|
|
// Loop through each claim status and generate the CASE statements
|
|
foreach ($statusResult as $status) {
|
|
$dynamicSelect .= "
|
|
COUNT(CASE WHEN master.claim_status_id = {$status['id']} THEN master.id END) AS `{$status['claim_status']}`, ";
|
|
|
|
if (in_array($status['claim_status'], [
|
|
'ID NOT GENERATED',
|
|
'NON ID',
|
|
'CDA',
|
|
'INFORMATION REQUIRED',
|
|
'UNDER PROCESS - CLAIM NO. UPDATION',
|
|
'UNDER PROCESS - INVESTIGATION STATUS',
|
|
'UNDER PROCESS - QUERY DOCUMENT RECEIVED',
|
|
'APPROVED',
|
|
'PAYMENT INITIATED',
|
|
])) {
|
|
$dynamicTotal .= "COUNT(CASE WHEN master.claim_status_id = {$status['id']} THEN master.id END) + ";
|
|
}
|
|
// Include in total count
|
|
// $dynamicTotal .= "COUNT(CASE WHEN master.claim_status_id = {$status['id']} THEN master.id END) + ";
|
|
|
|
// Include only closed-related statuses in total2 count
|
|
if (in_array($status['claim_status'], ['CLOSED', 'SETTLED', 'RETURNED', 'REJECTED'])) {
|
|
$dynamicClosedTotal .= "COUNT(CASE WHEN master.claim_status_id = {$status['id']} THEN master.id END) + ";
|
|
}
|
|
}
|
|
|
|
// Remove the trailing commas and `+` signs
|
|
$dynamicSelect = rtrim($dynamicSelect, ', ');
|
|
$dynamicTotal = rtrim($dynamicTotal, ' +');
|
|
$dynamicClosedTotal = rtrim($dynamicClosedTotal, ' +');
|
|
// print_rr($dynamicSelect);
|
|
// Construct the final SQL query
|
|
$sql = "
|
|
SELECT
|
|
tpa.id as TPA_ID,
|
|
tpa.name AS TPA_NAME,
|
|
$dynamicSelect,
|
|
($dynamicTotal) AS TOTAL,
|
|
($dynamicClosedTotal) AS CLEARED_TOTAL
|
|
FROM
|
|
ticket_master master
|
|
JOIN
|
|
tpa ON master.tpa_id = tpa.id AND tpa.is_active = 1
|
|
WHERE
|
|
master.created_at BETWEEN :start_date: AND :end_date:
|
|
AND master.is_active = 1
|
|
$ticket_type_data_2
|
|
GROUP BY
|
|
tpa.id;
|
|
";
|
|
|
|
// Execute the query
|
|
$binds = ["start_date" => $start_date, "end_date" => $end_date];
|
|
// Merge policy_type binds if present
|
|
if (! empty($statusBinds)) {
|
|
$binds = array_merge($binds, $statusBinds);
|
|
}
|
|
$result = $this->db->query($sql, $binds)->getResultArray();
|
|
// print_rr(count(($result)));
|
|
// print_rr($this->db->lastQuery);die();
|
|
return $result;
|
|
}
|
|
|
|
public function accountManagerWiseReport($policy_type = null, $start_date = null, $end_date = null)
|
|
{
|
|
|
|
if ($policy_type == 1) {
|
|
$ticket_type_data_1 = "";
|
|
$ticket_type_data_2 = "";
|
|
$statusBinds = [];
|
|
|
|
if (! empty($policy_type)) {
|
|
$ticket_type_data_1 = "AND ticket_type = :policy_type:";
|
|
$ticket_type_data_2 = "AND master.ticket_type_id = :policy_type:";
|
|
$statusBinds['policy_type'] = $policy_type;
|
|
}
|
|
|
|
// Fetch claim statuses dynamically
|
|
$statusQuery = "SELECT id, claim_status FROM ticket_claim_status WHERE is_active = 1 $ticket_type_data_1";
|
|
$statusResult = $this->db->query($statusQuery, $statusBinds)->getResultArray();
|
|
|
|
// Initialize dynamic query parts
|
|
$dynamicSelect = '';
|
|
$dynamicTotal = '';
|
|
|
|
// Loop through each claim status and generate the CASE statements
|
|
foreach ($statusResult as $status) {
|
|
$dynamicSelect .= "
|
|
COUNT(CASE WHEN master.claim_status_id = {$status['id']} THEN master.id END) AS `{$status['claim_status']}`, ";
|
|
|
|
// Include in total count
|
|
$dynamicTotal .= "COUNT(CASE WHEN master.claim_status_id = {$status['id']} THEN master.id END) + ";
|
|
|
|
// Include only closed-related statuses in total2 count
|
|
|
|
}
|
|
|
|
// Remove the trailing commas and `+` signs
|
|
$dynamicSelect = rtrim($dynamicSelect, ', ');
|
|
$dynamicTotal = rtrim($dynamicTotal, ' +');
|
|
// print_rr($dynamicSelect);
|
|
// Construct the final SQL query
|
|
$sql = "
|
|
SELECT
|
|
user_profiles.id as ACM_ID,
|
|
user_profiles.first_name AS ACM_NAME,
|
|
$dynamicSelect,
|
|
($dynamicTotal) AS TOTAL
|
|
FROM
|
|
ticket_master master
|
|
JOIN
|
|
user_profiles ON master.acm_id = user_profiles.id AND user_profiles.is_active = 1
|
|
WHERE
|
|
master.created_at BETWEEN :start_date: AND :end_date:
|
|
AND master.is_active = 1
|
|
$ticket_type_data_2
|
|
GROUP BY
|
|
user_profiles.id;
|
|
";
|
|
|
|
$binds = ["start_date" => $start_date, "end_date" => $end_date];
|
|
// Merge policy_type binds if present
|
|
if (! empty($statusBinds)) {
|
|
$binds = array_merge($binds, $statusBinds);
|
|
}
|
|
$result = $this->db->query($sql, $binds)->getResultArray();
|
|
// print_rr(count(($result)));
|
|
// print_rr($this->db->lastQuery);die();
|
|
return $result;
|
|
} else {
|
|
$ticket_type_data_1 = "";
|
|
$ticket_type_data_2 = "";
|
|
$statusBinds = [];
|
|
|
|
if (! empty($policy_type)) {
|
|
$ticket_type_data_1 = "AND ticket_type = :policy_type:";
|
|
$ticket_type_data_2 = "AND master.ticket_type_id = :policy_type:";
|
|
$statusBinds['policy_type'] = $policy_type;
|
|
}
|
|
|
|
// Fetch claim statuses dynamically
|
|
$statusQuery = "SELECT id, claim_status FROM ticket_claim_status WHERE is_active = 1 $ticket_type_data_1";
|
|
$statusResult = $this->db->query($statusQuery, $statusBinds)->getResultArray();
|
|
|
|
// Initialize dynamic query parts
|
|
$dynamicSelect = '';
|
|
$dynamicTotal = '';
|
|
$dynamicClosedTotal = '';
|
|
|
|
// Loop through each claim status and generate the CASE statements
|
|
foreach ($statusResult as $status) {
|
|
$dynamicSelect .= "
|
|
COUNT(CASE WHEN master.claim_status_id = {$status['id']} THEN master.id END) AS `{$status['claim_status']}`, ";
|
|
|
|
if (in_array($status['claim_status'], [
|
|
'CLAIM INTIMATION',
|
|
'INTIMATION TO INSURER',
|
|
'CLIENT PENDING',
|
|
'INSURER PENDING',
|
|
'INVESTIGATION',
|
|
'APPROVED',
|
|
'ON HOLD',
|
|
])) {
|
|
$dynamicTotal .= "COUNT(CASE WHEN master.claim_status_id = {$status['id']} THEN master.id END) + ";
|
|
}
|
|
// Include in total count
|
|
// $dynamicTotal .= "COUNT(CASE WHEN master.claim_status_id = {$status['id']} THEN master.id END) + ";
|
|
|
|
// Include only closed-related statuses in total2 count
|
|
if (in_array($status['claim_status'], ['CLOSED', 'SETTLED', 'NOT COVERED'])) {
|
|
$dynamicClosedTotal .= "COUNT(CASE WHEN master.claim_status_id = {$status['id']} THEN master.id END) + ";
|
|
}
|
|
}
|
|
|
|
// Remove the trailing commas and `+` signs
|
|
$dynamicSelect = rtrim($dynamicSelect, ', ');
|
|
$dynamicTotal = rtrim($dynamicTotal, ' +');
|
|
$dynamicClosedTotal = rtrim($dynamicClosedTotal, ' +');
|
|
// print_rr($dynamicSelect);
|
|
// Construct the final SQL query
|
|
$sql = "
|
|
SELECT
|
|
user_profiles.id as ACM_ID,
|
|
user_profiles.first_name AS ACM_NAME,
|
|
$dynamicSelect,
|
|
($dynamicTotal) AS TOTAL,
|
|
($dynamicClosedTotal) AS CLEARED_TOTAL
|
|
FROM
|
|
ticket_master master
|
|
JOIN
|
|
user_profiles ON master.acm_id = user_profiles.id AND user_profiles.is_active = 1
|
|
WHERE
|
|
master.created_at BETWEEN :start_date: AND :end_date:
|
|
AND master.is_active = 1
|
|
$ticket_type_data_2
|
|
GROUP BY
|
|
user_profiles.id;
|
|
";
|
|
|
|
$binds = ["start_date" => $start_date, "end_date" => $end_date];
|
|
// Execute the query
|
|
// Merge policy_type binds if present
|
|
if (! empty($statusBinds)) {
|
|
$binds = array_merge($binds, $statusBinds);
|
|
}
|
|
|
|
$result = $this->db->query($sql, $binds)->getResultArray();
|
|
// print_rr($this->db->lastQuery);die();
|
|
return $result;
|
|
|
|
}
|
|
}
|
|
|
|
//api
|
|
public function get_ticket_data($emp_id, $returnType, $ticket_type = null, $ticket_id = null)
|
|
{
|
|
$query = $this->select("
|
|
|
|
ticket_master.*,
|
|
tms.mail_subject as subject,
|
|
tms.id as ticket_message_id,
|
|
(
|
|
SELECT th1.old_value
|
|
FROM ticket_history th1
|
|
JOIN ticket_claim_status tcs ON th1.old_value = tcs.id
|
|
WHERE th1.field_name = 'claim_status_id'
|
|
AND th1.ticket_id = ticket_master.id
|
|
AND th1.id = (
|
|
SELECT MAX(th2.id)
|
|
FROM ticket_history th2
|
|
WHERE th2.ticket_id = th1.ticket_id
|
|
AND th2.field_name = 'claim_status_id'
|
|
)
|
|
) AS old_status_id
|
|
|
|
")
|
|
->join('ticket_messages tms', 'ticket_master.id = tms.ticket_id', 'left')
|
|
->where('ticket_master.is_active', 1);
|
|
$query->whereIn('sender', ['staff', 'user']);
|
|
$query->where('ticket_master.emp_id', $emp_id);
|
|
|
|
if (! empty($ticket_id)) {
|
|
$query->where('ticket_master.id', $ticket_id);
|
|
}
|
|
|
|
if (! empty($ticket_type)) {
|
|
$query->where('ticket_master.ticket_type_id', $ticket_type);
|
|
}
|
|
|
|
$query->groupBy('ticket_master.id');
|
|
$data = $query->findAll();
|
|
// dd($data, db_connect()->getLastQuery());
|
|
// print_r($this->db->getLastQuery());die;
|
|
return $data;
|
|
}
|
|
|
|
public function getDashData($claim_statuses, $limit)
|
|
{
|
|
$finalResults = [];
|
|
|
|
foreach ($claim_statuses as $typeId => $statuses) {
|
|
// Get all active, non-null claim status tickets for this type
|
|
$builder = $this->db->table('ticket_master tm')
|
|
->select('tm.id, tm.ticket_type_id, tcs.claim_status, th.last_claim_status_change')
|
|
->join('ticket_claim_status tcs', 'tm.claim_status_id = tcs.id', 'left')
|
|
->join(
|
|
'(SELECT ticket_id, MAX(created_at) AS last_claim_status_change
|
|
FROM ticket_history
|
|
WHERE field_name = \'claim_status_id\'
|
|
GROUP BY ticket_id) th',
|
|
'tm.id = th.ticket_id',
|
|
'left'
|
|
)
|
|
->where('tm.ticket_type_id', $typeId)
|
|
->where('tm.is_active', 1)
|
|
->where('tm.claim_status_id IS NOT NULL');
|
|
|
|
$results = $builder->get()->getResultArray();
|
|
|
|
$summary = [
|
|
'ticket_type_id' => $typeId,
|
|
];
|
|
|
|
$total = 0;
|
|
foreach ($statuses as $status) {
|
|
$alias = strtolower(str_replace(' ', '_', $status));
|
|
$summary[$alias] = 0;
|
|
$summary[$alias . '_ids'] = '';
|
|
|
|
$dateLimit = $limit[$typeId][$status] ?? 3;
|
|
$threshold = date('Y-m-d H:i:s', strtotime("-{$dateLimit} days"));
|
|
|
|
$ticketIds = [];
|
|
// dd($results);
|
|
foreach ($results as $row) {
|
|
if (
|
|
$row['claim_status'] === $status &&
|
|
(
|
|
! $row['last_claim_status_change'] ||
|
|
$row['last_claim_status_change'] <= $threshold
|
|
)
|
|
) {
|
|
$summary[$alias]++;
|
|
$ticketIds[] = $row['id'];
|
|
if ($status == "APPROVED" || $status == "SETTLED" || $status == "CLOSED") {
|
|
continue;
|
|
}
|
|
|
|
$total++;
|
|
|
|
}
|
|
}
|
|
|
|
// Convert ticket IDs array to a comma-separated string
|
|
$summary[$alias . '_ids'] = implode(',', $ticketIds);
|
|
}
|
|
|
|
$summary['total'] = $total;
|
|
|
|
// Add approved but not settled IDs and count
|
|
$approvedNotSettled = $this->getNotSettledbutApprovedCount($typeId);
|
|
$summary['approved_not_settled'] = $approvedNotSettled['count'];
|
|
$summary['approved_not_settled_ids'] = $approvedNotSettled['ticket_ids'];
|
|
|
|
$finalResults[$typeId] = $summary;
|
|
}
|
|
|
|
// dd($finalResults);
|
|
return $finalResults;
|
|
}
|
|
|
|
public function getNotSettledbutApprovedCount($ticket_type)
|
|
{
|
|
// Fetch the approved and settled claim_status IDs
|
|
$builder = $this->db->table("ticket_claim_status approved")
|
|
->select("approved.id AS approved_id, settled.id AS settled_id")
|
|
->join("ticket_claim_status settled", "approved.ticket_type = settled.ticket_type")
|
|
->where("approved.claim_status", "APPROVED")
|
|
->where("settled.claim_status", "SETTLED")
|
|
->where("approved.ticket_type", $ticket_type)
|
|
->where("approved.is_active", 1)
|
|
->where("settled.is_active", 1);
|
|
|
|
$ids = $builder->get()->getRowArray();
|
|
|
|
// If no matching status IDs are found, return empty
|
|
if (! $ids) {
|
|
return ['count' => 0, 'ticket_ids' => ''];
|
|
}
|
|
|
|
// Extract approved and settled status IDs
|
|
$approved_id = $ids['approved_id'];
|
|
$settled_id = $ids['settled_id'];
|
|
|
|
// Subquery to get the latest approval time for each ticket
|
|
$subquery = $this->db->table('ticket_history')
|
|
->select('ticket_id, MAX(created_at) AS approved_time')
|
|
->where('field_name', 'claim_status_id')
|
|
->where('new_value', $approved_id)
|
|
->groupBy('ticket_id');
|
|
|
|
// Main query to find tickets that are approved but not settled
|
|
$builder = $this->db->table('ticket_master tm');
|
|
|
|
$builder->join("({$subquery->getCompiledSelect()}) latest_approval", 'tm.id = latest_approval.ticket_id', 'inner');
|
|
|
|
// Left join to find if there is a settled status for each ticket after approval
|
|
$builder->join(
|
|
'ticket_history th_settled',
|
|
"th_settled.ticket_id = tm.id
|
|
AND th_settled.field_name = 'claim_status_id'
|
|
AND th_settled.new_value = {$settled_id}
|
|
AND th_settled.created_at > latest_approval.approved_time",
|
|
'left',
|
|
false// Important for raw ON condition
|
|
);
|
|
|
|
// Filtering conditions: not settled and approved time older than 12 days
|
|
$builder->where('tm.claim_status_id !=', $settled_id);
|
|
$builder->where('tm.is_active', 1);
|
|
$builder->where("latest_approval.approved_time <= DATE_SUB(NOW(), INTERVAL 12 DAY)", null, false);
|
|
$builder->where('th_settled.id IS NULL', null, false);
|
|
|
|
// Final select to get ticket IDs of approved but not settled tickets
|
|
$builder->select('tm.id');
|
|
|
|
// Execute the query
|
|
$query = $builder->get();
|
|
$ticketIds = array_column($query->getResultArray(), 'id'); // Extract the IDs
|
|
|
|
// Convert ticket IDs array to a comma-separated string
|
|
$ticketIdsString = implode(',', $ticketIds);
|
|
|
|
// Return the count and comma-separated ticket IDs
|
|
return [
|
|
'count' => count($ticketIds),
|
|
'ticket_ids' => $ticketIdsString,
|
|
];
|
|
}
|
|
|
|
public function getPolicyTermsJson($ticket_id)
|
|
{
|
|
$sql = " SELECT cp.policy_terms
|
|
FROM ticket_master tm
|
|
JOIN client_policy cp ON cp.id = tm.client_policy_id
|
|
WHERE tm.id = :ticket_id:
|
|
AND tm.is_active = 1
|
|
AND cp.is_active = 1
|
|
";
|
|
|
|
$binds = ["ticket_id" => $ticket_id];
|
|
$query = $this->db->query($sql, $binds);
|
|
|
|
if ($query && $query->getNumRows() > 0) {
|
|
$row = $query->getRowArray();
|
|
return json_encode(['policy_terms' => $row['policy_terms']]);
|
|
}
|
|
|
|
return json_encode(['policy_terms' => null]);
|
|
}
|
|
|
|
// ---------- CLAIM DUMP UPLOAD-------------------------------------------------------------------------------------------
|
|
|
|
public function getPolicyData($params)
|
|
{
|
|
$client_name = $params['client_name'] ?? null;
|
|
$insurer_short_name = $params['insurer_short_name'] ?? null;
|
|
$tpa_short_name = $params['tpa_short_name'] ?? null;
|
|
$policy_no = $params['policy_no'] ?? null;
|
|
|
|
$builder = $this->db->table('client_policy');
|
|
$builder->select('client_policy.*');
|
|
$builder->join('clients c', 'client_policy.client_id = c.id');
|
|
$builder->join('insurers i', 'client_policy.insurer_id = i.id');
|
|
$builder->join('tpa', 'client_policy.tpa_id = tpa.id and tpa.is_active = 1', 'left');
|
|
$builder->where('c.is_active', 1);
|
|
$builder->where('client_policy.is_active', 1);
|
|
$builder->where('i.is_active', 1);
|
|
$builder->where('c.client_name', trim($client_name));
|
|
$builder->where('i.short_name', trim($insurer_short_name));
|
|
if (! empty($tpa_short_name)) {
|
|
$builder->where('tpa.short_name', trim($tpa_short_name));
|
|
}
|
|
$builder->where('client_policy.policy_no', trim($policy_no));
|
|
|
|
$query = $builder->get();
|
|
$result = $query->getResultArray();
|
|
// dd($this->db->getLastQuery());
|
|
return $result;
|
|
}
|
|
|
|
public function getTheClaimDetails($params)
|
|
{
|
|
$client_name = $params['client_name'] ?? null;
|
|
$policy_no = $params['policy_no'] ?? null;
|
|
$insurer_short_name = $params['insurer_short_name'] ?? null;
|
|
$tpa_short_name = $params['tpa_short_name'] ?? null;
|
|
$emp_code = $params['emp_code'] ?? null;
|
|
$emp_name = $params['emp_name'] ?? null;
|
|
$insured_name = $params['insured_name'] ?? null;
|
|
$claim_no = $params['claim_no'] ?? null;
|
|
$tpa_no = $params['tpa_no'] ?? null;
|
|
$relationship = $params['relationship'] ?? null;
|
|
|
|
$builder = $this->table('ticket_master');
|
|
$builder->select('ticket_master.*');
|
|
$builder->join('clients c', 'ticket_master.client_id = c.id');
|
|
$builder->join('insurers i', 'ticket_master.insurer_id = i.id');
|
|
$builder->join('tpa', 'ticket_master.tpa_id = tpa.id', 'left');
|
|
$builder->where('c.is_active', 1);
|
|
$builder->where('i.is_active', 1);
|
|
$builder->where('tpa.is_active', 1);
|
|
$builder->where('ticket_master.is_active', 1);
|
|
|
|
$builder->where('c.client_name', trim($client_name));
|
|
$builder->where('i.short_name', trim($insurer_short_name));
|
|
$builder->where('ticket_master.policy_no', trim($policy_no));
|
|
$builder->where('ticket_master.emp_code', trim($emp_code));
|
|
$builder->where('ticket_master.emp_name', trim($emp_name));
|
|
$builder->where('ticket_master.insured_name', trim($insured_name));
|
|
$builder->where('ticket_master.tpa_no', trim($tpa_no));
|
|
$builder->where('ticket_master.claim_number', trim($claim_no));
|
|
$builder->where('ticket_master.relationship', trim($relationship));
|
|
|
|
if (! empty($tpa_short_name)) {
|
|
$builder->where('tpa.short_name', trim($tpa_short_name));
|
|
}
|
|
|
|
$query = $builder->get();
|
|
$result = $query->getResultArray();
|
|
|
|
return $result;
|
|
|
|
}
|
|
|
|
public function getEmployeeAndEmployeePolicyDetails($params)
|
|
{
|
|
$client_name = $params['client_name'] ?? null;
|
|
$emp_code = $params['emp_code'] ?? null;
|
|
$emp_name = $params['emp_name'] ?? null;
|
|
$policy_no = $params['policy_no'] ?? null;
|
|
$relationship = $params['relationship'] ?? null;
|
|
$insured_name = $params['insured_name'] ?? null;
|
|
$is_from = $params['is_from'] ?? null;
|
|
|
|
// $client_name = "6-Eleven";
|
|
// $emp_code = "EMP0020K12";
|
|
// $emp_name = "Lokesh";
|
|
// $policy_no = "GMC-1999/2000/2021/2022";
|
|
|
|
$base_policy_id = null;
|
|
if($is_from == "claim_dump"){
|
|
$client_policy_data = $this->db->table('client_policy')->where('policy_no', trim($policy_no))->where('is_active', 1)->get()->getRowArray();
|
|
if(isset($client_policy_data) && !empty($client_policy_data)){
|
|
if(!empty($client_policy_data['base_policy'])) {
|
|
$base_policy_id = $client_policy_data['base_policy'];
|
|
}
|
|
}
|
|
}
|
|
|
|
$builder = $this->db->table('employees e');
|
|
$builder->select("
|
|
e.id as emp_id,
|
|
e.client_id,
|
|
e.client_branch_id,
|
|
e.emp_code,
|
|
e.name as emp_name,
|
|
e.mobile as emp_mobile,
|
|
e.email_corporate as emp_mail,
|
|
e.email_personal as emp_mail_personal,
|
|
|
|
ep.id as emp_policy_id,
|
|
ep.tpa_id as tpa_no,
|
|
|
|
cp.id as client_policy_id,
|
|
cp.insurer_id,
|
|
cp.tpa_id,
|
|
cp.policy_no,
|
|
CASE
|
|
WHEN cp.policy_type_id = 2 THEN 1
|
|
WHEN cp.policy_type_id = 1 THEN 2
|
|
WHEN cp.policy_type_id = 6 THEN 3
|
|
WHEN cp.policy_type_id = 7 THEN 4
|
|
ELSE NULL
|
|
END AS ticket_type_id
|
|
", false);
|
|
$builder->join('employee_polices ep', 'e.id = ep.employee_id');
|
|
$builder->join('clients c', 'e.client_id = c.id');
|
|
$builder->join('client_policy cp', 'ep.client_policy_id = cp.id');
|
|
|
|
$builder->where('e.is_active', 1);
|
|
$builder->where('ep.is_active', 1);
|
|
$builder->where('c.is_active', 1);
|
|
$builder->where('cp.is_active', 1);
|
|
$builder->where('e.emp_code', trim($emp_code));
|
|
$builder->where('e.name', trim($emp_name));
|
|
$builder->where('c.client_name', trim($client_name));
|
|
|
|
if(!empty($base_policy_id)) {
|
|
$builder->where('cp.id', trim($base_policy_id));
|
|
} else {
|
|
$builder->where('cp.policy_no', trim($policy_no));
|
|
}
|
|
|
|
$builder->where('LOWER(e.relationship)', strtolower('self'));
|
|
|
|
$query = $builder->get();
|
|
$result = $query->getRowArray();
|
|
|
|
return $result;
|
|
}
|
|
|
|
public function getAcmUserDetails($params)
|
|
{
|
|
$acm_name = $params['acm_name'] ?? null;
|
|
$acm_mobile = $params['acm_mobile'] ?? null;
|
|
|
|
if ($acm_mobile != null) {
|
|
|
|
$builder = $this->db->table('user_profiles');
|
|
$builder->select("user_profiles.*");
|
|
$builder->where('user_profiles.is_active', 1);
|
|
$builder->where('user_profiles.mobile', trim($acm_mobile));
|
|
$query = $builder->get();
|
|
$result = $query->getRowArray();
|
|
|
|
return $result;
|
|
}
|
|
|
|
return [];
|
|
}
|
|
|
|
public function getInsuredDetails($params)
|
|
{
|
|
$client_id = $params['client_id'] ?? null;
|
|
$emp_code = $params['emp_code'] ?? null;
|
|
$policy_id = $params['client_policy_id'] ?? null;
|
|
$insured_name = $params['insured_name'] ?? null;
|
|
|
|
$builder = $this->db->table('employees e');
|
|
$builder->select("
|
|
e.id as emp_id,
|
|
e.client_id,
|
|
e.client_branch_id,
|
|
e.emp_code,
|
|
e.name as emp_name,
|
|
e.mobile as emp_mobile,
|
|
e.email_corporate as emp_mail,
|
|
e.email_personal as emp_mail_personal,
|
|
|
|
ep.id as emp_policy_id,
|
|
ep.tpa_id as tpa_no,
|
|
");
|
|
$builder->join('employee_polices ep', 'e.id = ep.employee_id');
|
|
$builder->where('e.is_active', 1);
|
|
$builder->where('ep.is_active', 1);
|
|
$builder->where('e.emp_code', trim($emp_code));
|
|
$builder->where('e.name', trim($insured_name));
|
|
$builder->where('e.client_id', trim($client_id));
|
|
$builder->where('ep.client_policy_id', trim($policy_id));
|
|
|
|
$query = $builder->get();
|
|
$result = $query->getRowArray();
|
|
// dd($this->db->getLastQuery());
|
|
return $result;
|
|
|
|
}
|
|
|
|
public function isTpaApiServiceEnabled($ticket_id)
|
|
{
|
|
$result = $this->db->table('ticket_master tm')
|
|
->select('tas.*')
|
|
->join('client_policy cp', 'tm.client_policy_id = cp.id')
|
|
->join('tpa_api_services tas', 'cp.tpa_id = tas.tpa_id')
|
|
->where('tm.id', $ticket_id)
|
|
->where('tm.is_active', 1)
|
|
->where('cp.is_active', 1)
|
|
->where('tas.is_active', 1)
|
|
->get()->getRowArray();
|
|
|
|
return count($result ?? []) > 0 ? true : false; // true if any API service is enabled, false if no API service is enabled
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------------------------------
|
|
|
|
}
|