1526 lines
68 KiB
PHP
1526 lines
68 KiB
PHP
<?php
|
|
|
|
namespace App\Controllers;
|
|
|
|
use App\Controllers\BaseController;
|
|
use CodeIgniter\HTTP\ResponseInterface;
|
|
use App\Models\TicketMasterModel;
|
|
use App\Models\TicketClaimStatusModel;
|
|
use App\Models\ClientModel;
|
|
use App\Models\TicketHistoryModel;
|
|
use App\Models\TicketMailTemplateModel;
|
|
use App\Models\TicketMessageModel;
|
|
use App\Models\TicketNoteModel;
|
|
use App\Models\UserModel;
|
|
use App\Models\ClientPolicyModel;
|
|
use App\Models\EmployeePolicyModel;
|
|
|
|
use DOMDocument;
|
|
use Psr\Log\LoggerInterface;
|
|
use Kint\Kint;
|
|
use App\Models\EmployeeModel;
|
|
|
|
use App\Helpers\MailHelper;
|
|
|
|
use CodeIgniter\API\ResponseTrait;
|
|
|
|
class TicketController extends BaseController
|
|
{
|
|
use ResponseTrait;
|
|
|
|
protected $myLogger;
|
|
public $ticketType;
|
|
public $priorityType;
|
|
public $relationshipType;
|
|
public $modeOFIntimate;
|
|
public $claimType;
|
|
public $claimStatus;
|
|
public $placeHolders;
|
|
public $extraFields;
|
|
public $nonIDReason;
|
|
|
|
protected $clientModel;
|
|
protected $ticketMasterModel;
|
|
protected $ticketHistoryModel;
|
|
protected $ticketMailTemplateModel;
|
|
protected $ticketMessageModel;
|
|
protected $ticketNoteModel;
|
|
protected $triggerType;
|
|
protected $userModel;
|
|
protected $employeeModel;
|
|
protected $clientPolicyModel;
|
|
protected $employeePolicyModel;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->myLogger = \Config\Services::mylogger();
|
|
|
|
$this->ticketMasterModel = new TicketMasterModel();
|
|
|
|
$this->ticketType = [1 => "Claim-GMC", 2 => "Claim-GPA", 3 => "EDLI", 4 => "GTLI"];
|
|
$this->priorityType = [
|
|
1 => "Low",
|
|
2 => "Medium",
|
|
3 => "High",
|
|
4 => "Urgent",
|
|
5 => "Emergency",
|
|
6 => "Critical"
|
|
];
|
|
$this->relationshipType = [
|
|
"self" => "Self",
|
|
"spouse" => "Spouse",
|
|
"son" => "Son",
|
|
"daughter" => "Daughter",
|
|
"father" => "Father",
|
|
"mother" => "Mother",
|
|
"father-in-law" => "Father-in-Law",
|
|
"mother-in-law" => "Mother-in-Law"
|
|
];
|
|
$this->modeOFIntimate = [
|
|
1 => "In Person",
|
|
2 => "Courier",
|
|
3 => "Online Mode - Email",
|
|
4 => "Smart Service Desk",
|
|
5 => "Direct to TPA"
|
|
];
|
|
$this->claimType = [
|
|
1 => [
|
|
1 => "Main Hospitalization",
|
|
3 => "Pre / Post",
|
|
2 => "OPD",
|
|
4 => "ReOpen",
|
|
],
|
|
2 => [
|
|
1 => "TTD",
|
|
2 => "PTD",
|
|
3 => "PPD",
|
|
4 => "Death",
|
|
]
|
|
];
|
|
$this->triggerType = [
|
|
1 => "Trigger 1",
|
|
2 => "Trigger 2",
|
|
3 => "Trigger 3",
|
|
4 => "Trigger 4",
|
|
5 => "Trigger 5",
|
|
6 => "Trigger 6",
|
|
7 => "Trigger 7",
|
|
8 => "Trigger 8",
|
|
];
|
|
$this->placeHolders = [
|
|
|
|
'((ACM))' => 'acm',
|
|
'((ACM_CONTACT))' => 'acm_mobile',
|
|
'((EMPLOYEE_NAME))' => 'emp_name',
|
|
'((EMPLOYEE_ID))' => 'emp_code',
|
|
'((CORPORATE_NAME))' => 'client_name',
|
|
'((INSURED_NAME))' => 'insured_name',
|
|
'((CLAIM_NO))' => 'claim_number',
|
|
'((RELATIONSHIP))' => 'relationship',
|
|
'((POLICY_TYPE))' => 'policy_type',
|
|
'((AUTO_QUERY_CONTENT))' => 'auto_query_content',
|
|
];
|
|
$this->extraFields = [
|
|
1 => ['non_id_reason'],
|
|
10 => ['pay_initiate_date'],
|
|
3 => ['raised_date'],
|
|
4 => ['raised_date'],
|
|
5 => ['claim_number', 'registration_date'],
|
|
7 => ['query_received_date'],
|
|
8 => ['denial_reason','denial_date'],
|
|
9 => ['approved_amount','approved_date', 'approved_letter'],
|
|
11 => ['utr_details', 'settled_date', 'settle_letter'],
|
|
40 => ['approved_amount','approved_date', 'approved_letter'],
|
|
44 => ['utr_details', 'settled_date', 'settle_letter'],
|
|
30 => ['approved_amount','approved_date', 'approved_letter'],
|
|
34 => ['utr_details', 'settled_date', 'settle_letter'],
|
|
20 => ['approved_amount','approved_date', 'approved_letter'],
|
|
24 => ['utr_details', 'settled_date', 'settle_letter'],
|
|
14 => ['return_remark', 'awb_no_courier_name'],
|
|
48 => ['return_remark', 'awb_no_courier_name'],
|
|
59 => ['return_remark', 'awb_no_courier_name'],
|
|
54 => ['return_remark', 'awb_no_courier_name'],
|
|
13 => ['cancel_remark'],
|
|
47 => ['cancel_remark'],
|
|
53 => ['cancel_remark'],
|
|
58 => ['cancel_remark'],
|
|
];
|
|
$this->nonIDReason = [
|
|
"Newborn Baby" => "Newborn Baby",
|
|
"Newly Wedded Spouse" => "Newly Wedded Spouse",
|
|
"Policy Pending" => "Policy Pending",
|
|
"New Joinee" => "New Joinee",
|
|
"Exceptional Case" => "Exceptional Case"
|
|
];
|
|
|
|
$this->ticketMasterModel = new TicketMasterModel();
|
|
$this->claimStatus = new TicketClaimStatusModel();
|
|
$this->clientModel = new ClientModel();
|
|
$this->ticketHistoryModel = new TicketHistoryModel();
|
|
$this->ticketMailTemplateModel = new TicketMailTemplateModel();
|
|
$this->ticketNoteModel = new TicketNoteModel();
|
|
$this->ticketMessageModel = new TicketMessageModel();
|
|
$this->userModel = new UserModel();
|
|
$this->employeeModel = new EmployeeModel();
|
|
$this->clientPolicyModel = new ClientPolicyModel();
|
|
$this->employeePolicyModel = new EmployeePolicyModel();
|
|
}
|
|
|
|
public function ticketList()
|
|
{
|
|
$data['ticket_type'] = $this->ticketType;
|
|
if ($this->request->is('get')) {
|
|
$data['page_name'] = "Claims";
|
|
$data['claim_status'] = $this->claimStatus->select('id,ticket_type,claim_status')->where('is_active', 1)->findAll();
|
|
$data['client_list'] = $this->clientModel->select('id,client_name')->where('is_active', 1)->findAll();
|
|
$data['ticket_data'] = $this->ticketSearch(1);
|
|
return $this->loadLayout('ticket_search', $data);
|
|
} else {
|
|
|
|
$data['ticket_data'] = $this->ticketSearch();
|
|
$html = view('ticket_list', $data);
|
|
return $this->respond(['status' => true, 'html' => $html], 200);
|
|
}
|
|
}
|
|
|
|
public function ticketSearch($action = null)
|
|
{
|
|
$db = db_connect();
|
|
|
|
$subquery = $db->table('ticket_history th')
|
|
->select([
|
|
'th.ticket_id',
|
|
"CASE
|
|
WHEN DATEDIFF(
|
|
th.created_at,
|
|
COALESCE(
|
|
(SELECT MIN(created_at) FROM ticket_history th2 WHERE th2.ticket_id = th.ticket_id),
|
|
tm.created_at
|
|
)
|
|
) BETWEEN 0 AND 6 THEN '0-6 Days'
|
|
WHEN DATEDIFF(
|
|
th.created_at,
|
|
COALESCE(
|
|
(SELECT MIN(created_at) FROM ticket_history th2 WHERE th2.ticket_id = th.ticket_id),
|
|
tm.created_at
|
|
)
|
|
) BETWEEN 7 AND 12 THEN '7-12 Days'
|
|
WHEN DATEDIFF(
|
|
th.created_at,
|
|
COALESCE(
|
|
(SELECT MIN(created_at) FROM ticket_history th2 WHERE th2.ticket_id = th.ticket_id),
|
|
tm.created_at
|
|
)
|
|
) BETWEEN 13 AND 20 THEN '13-20 Days'
|
|
ELSE 'Above 20 Days'
|
|
END AS tat"
|
|
])
|
|
->join('ticket_master tm', 'tm.id = th.ticket_id', 'right')
|
|
->where('tm.is_active', 1)
|
|
->groupBy('th.ticket_id, tm.created_at');
|
|
|
|
//action 1 get last 100 rows, action 2 filter and get all rows related to that
|
|
if ($action == 1) {
|
|
|
|
$query = $db->table('ticket_master tm')
|
|
->select([
|
|
'tm.id',
|
|
'tm.ticket_type_id',
|
|
'tm.claim_status_id',
|
|
'tm.is_head_approved',
|
|
'tcs.claim_status AS status',
|
|
'tm.claim_number AS claim_no',
|
|
'tm.tpa_id',
|
|
'tm.emp_name',
|
|
'i.name AS insurer_name',
|
|
'c.client_name',
|
|
'tm.insured_name',
|
|
'c.short_name',
|
|
'DATE_FORMAT(tm.created_at, "%d-%m-%Y") AS ticket_created_date',
|
|
'COALESCE(tat_category.tat, "0-6 Days") AS tat'
|
|
])
|
|
->join('insurers i', 'i.id = tm.insurer_id AND i.is_active = 1', 'left')
|
|
->join('clients c', 'c.id = tm.client_id AND c.is_active = 1', 'left')
|
|
->join('ticket_claim_status tcs', 'tcs.id = tm.claim_status_id AND tcs.is_active = 1', 'left')
|
|
->join("({$subquery->getCompiledSelect()}) tat_category", 'tm.id = tat_category.ticket_id', 'left')
|
|
->where('tm.is_active', 1)
|
|
->orderBy('tm.id', 'DESC');
|
|
|
|
$data = $query->get()->getResultArray();
|
|
|
|
// dd(db_connect()->getLastQuery());
|
|
|
|
return $data;
|
|
|
|
} else {
|
|
$search_data = $this->request->getPost();
|
|
// print_r($search_data);
|
|
$where = [];
|
|
foreach ($search_data as $search_objects => $key) {
|
|
if ($key != null && $key != '' && $key != 0) {
|
|
$where[$search_objects] = $key;
|
|
}
|
|
}
|
|
// print_rr($where);
|
|
$query = $db->table('ticket_master tm')
|
|
->select([
|
|
'tm.id',
|
|
'tm.ticket_type_id',
|
|
'tcs.claim_status AS status',
|
|
'tm.claim_number AS claim_no',
|
|
'tm.claim_status_id',
|
|
'tm.is_head_approved',
|
|
'tm.tpa_id',
|
|
'tm.emp_name',
|
|
'i.name AS insurer_name',
|
|
'c.client_name',
|
|
'tm.insured_name',
|
|
'c.short_name',
|
|
'DATE_FORMAT(tm.created_at, "%d-%m-%Y") AS ticket_created_date',
|
|
'COALESCE(tat_category.tat, "0-6 Days") AS tat'
|
|
])
|
|
->join('insurers i', 'i.id = tm.insurer_id AND i.is_active = 1', 'left')
|
|
->join('clients c', 'c.id = tm.client_id AND c.is_active = 1', 'left')
|
|
->join('ticket_claim_status tcs', 'tcs.id = tm.claim_status_id AND tcs.is_active = 1', 'left')
|
|
->join("({$subquery->getCompiledSelect()}) tat_category", 'tm.id = tat_category.ticket_id', 'left')
|
|
->where('tm.is_active', 1)
|
|
->where($where)
|
|
->orderBy('tm.id', 'DESC');
|
|
|
|
$data = $query->get()->getResultArray();
|
|
// print_rr($data);
|
|
// log_message('error',' Claims Master Data '.json_encode($data));die();
|
|
// print_rr($data);die();
|
|
|
|
return $data;
|
|
}
|
|
}
|
|
|
|
public function ticket_form($ticket_type)
|
|
{
|
|
$data = $this->ticket_form_data($ticket_type);
|
|
// dd($data);
|
|
return $this->loadLayout('ticket_form_handler', $data);
|
|
}
|
|
|
|
public function ticket_form_data($ticket_type, $claim_status_id = null)
|
|
{
|
|
$this->myLogger->logme('error', "Fetching ticket form data for Ticket Type: $ticket_type");
|
|
|
|
$data = [
|
|
'ticket_form' => 1,
|
|
'selected_ticket_type' => $ticket_type,
|
|
'ticket_type' => $this->ticketType,
|
|
'priorityType' => $this->priorityType,
|
|
'relationshipType' => $this->relationshipType,
|
|
'modeOFIntimate' => $this->modeOFIntimate,
|
|
'nonIDReason' => $this->nonIDReason
|
|
];
|
|
|
|
switch ($ticket_type) {
|
|
case 2:
|
|
$data['ticket_form'] = 'GPA';
|
|
break;
|
|
case 3:
|
|
$data['ticket_form'] = 'EDLI';
|
|
break;
|
|
case 4:
|
|
$data['ticket_form'] = 'GTLI';
|
|
break;
|
|
}
|
|
|
|
// Fetch ACM Users
|
|
$db = db_connect();
|
|
$data['acms'] = $db->table('user_profiles')
|
|
->select('id, first_name')
|
|
->where(['is_active' => 1, 'role' => 3])
|
|
->get()
|
|
->getResultArray();
|
|
|
|
// Fetch Claim Status
|
|
|
|
if(empty($claim_status_id)){
|
|
|
|
if($ticket_type == 2){
|
|
$claim_status_id = 15;
|
|
}else if($ticket_type == 3){
|
|
$claim_status_id = 25;
|
|
}else if($ticket_type == 4){
|
|
$claim_status_id = 35;
|
|
}else{
|
|
$claim_status_id = 1;
|
|
}
|
|
}
|
|
|
|
$data['claim_status'] = $this->transFormClaimStatus($claim_status_id, $ticket_type);
|
|
$data['extra_fields'] = $this->getExtraFields($data['claim_status']);
|
|
$data['extra_fields_array_for_validate'] = $this->getExtraFields($data['claim_status'], 1);
|
|
|
|
if ($ticket_type == 1) {
|
|
$data['claim_type'] = $this->claimType[1];
|
|
} else {
|
|
$data['claim_type'] = $this->claimType[2];
|
|
}
|
|
|
|
$this->myLogger->logme('error', "Ticket form data fetched successfully for Ticket Type: $ticket_type");
|
|
|
|
return $data;
|
|
}
|
|
|
|
//transform the claim status
|
|
public function transFormClaimStatus($claimStatusId, $ticket_type)
|
|
{
|
|
// Fetch the main claim status by ID
|
|
$claimStatusData = $this->claimStatus
|
|
->select('*')
|
|
->where(['is_active' => 1, 'ticket_type' => $ticket_type])
|
|
->where('id', $claimStatusId)
|
|
->first();
|
|
// dd($claimStatusData);
|
|
|
|
// Initialize the filtered claim status array
|
|
$filteredClaimStatus = [];
|
|
|
|
if (!empty($claimStatusData)) {
|
|
// Add the main claim status to the result
|
|
$filteredClaimStatus[] = $claimStatusData;
|
|
|
|
// Decode the allowed_status JSON field
|
|
$filterClaimStatusIds = json_decode($claimStatusData['allowed_status'], true);
|
|
|
|
// Fetch additional claim statuses if IDs exist
|
|
if (!empty($filterClaimStatusIds) && is_array($filterClaimStatusIds)) {
|
|
$additionalClaimStatuses = $this->claimStatus
|
|
->select('*')
|
|
->where(['is_active' => 1, 'ticket_type' => $ticket_type])
|
|
->whereIn('id', $filterClaimStatusIds)
|
|
->get()
|
|
->getResultArray();
|
|
|
|
// Merge additional claim statuses into the result
|
|
$filteredClaimStatus = array_merge($filteredClaimStatus, $additionalClaimStatuses);
|
|
}
|
|
}
|
|
|
|
return $filteredClaimStatus;
|
|
}
|
|
|
|
public function getExtraFields(array $claimStatus, $nonFilterArray = 0): array
|
|
{
|
|
$extra_fields = [];
|
|
|
|
if($nonFilterArray == 1){
|
|
|
|
foreach ($claimStatus as $value) {
|
|
if (isset($this->extraFields[$value['id']])) {
|
|
if (!isset($extra_fields[$value['id']])) {
|
|
$extra_fields[$value['id']] = [];
|
|
}
|
|
$extra_fields[$value['id']] = array_merge($extra_fields[$value['id']], $this->extraFields[$value['id']]);
|
|
}
|
|
}
|
|
|
|
}else{
|
|
|
|
foreach ($claimStatus as $value) {
|
|
if (isset($this->extraFields[$value['id']])) {
|
|
$extra_fields[] = $this->extraFields[$value['id']];
|
|
}
|
|
}
|
|
|
|
$extra_fields = array_values(array_unique(array_merge(...$extra_fields)));
|
|
}
|
|
|
|
return $extra_fields;
|
|
}
|
|
|
|
public function view_ticket($ticket_id)
|
|
{
|
|
// $ticket_data = $this->ticketMasterModel->where('id', $ticket_id)->where('is_active', 1)->first();
|
|
$ticket_data = $this->ticketMasterModel->getTicketDataByTicketID($ticket_id);
|
|
$ticket_data = $this->formatDateForClaim($ticket_data, 'd/m/Y');
|
|
// dd($ticket_data);
|
|
$template_data = $this->ticketMasterModel->getTemplateDataByTicketID($ticket_id);
|
|
if (!empty($template_data)) {
|
|
$template_data['mail_content'] = $this->replacePlaceholders($template_data['mail_content'], $ticket_data);
|
|
$template_data['subject'] = $this->replacePlaceholders($template_data['subject'], $ticket_data);
|
|
}
|
|
$data = $this->ticket_form_data($ticket_data['ticket_type_id'], $ticket_data['claim_status_id']);
|
|
$data['reply_data'] = $template_data;
|
|
$data['placeHolders'] = $this->placeHolders;
|
|
$data['message_data'] = $this->getTicketMessage($ticket_id);
|
|
$data['view_ticket_page'] = [];
|
|
$data['member_data'] = $this->employeeModel->getEmployeeByEmployeeCode($ticket_data['emp_code']);
|
|
$data['ticket_history'] = $this->ticketHistory($ticket_id);
|
|
$data['ticket_check_list'] = db_connect()->table('ticket_check_list')->where('is_active', 1)->where('ticket_type_id', $ticket_data['ticket_type_id'])->get()->getResultArray();
|
|
if (!empty($ticket_data['client_policy_id'])){
|
|
$ticket_data['client_policy_id_text'] = $this->clientPolicyModel->select('concat(policy_type.policy_type,"-",client_policy.policy_no) as client_policy_name')->join('policy_type','policy_type.id = client_policy.policy_type_id and policy_type.is_active = 1')->where('client_policy.id',$ticket_data['client_policy_id'])->first()['client_policy_name'];
|
|
}
|
|
// dd($ticket_data);
|
|
$data['ticket_data'] = $ticket_data;
|
|
|
|
// dd($data);
|
|
|
|
return $this->loadLayout('ticket_edit_onbording', $data);
|
|
}
|
|
|
|
public function formatDateForClaim($ticket_data, $out_put_format = 'Y-m-d')
|
|
{
|
|
|
|
if (empty($ticket_data['doa'])) {
|
|
$ticket_data['doa'] = null;
|
|
} else {
|
|
$ticket_data['doa'] = change_date_format($ticket_data['doa'], null, $out_put_format);
|
|
}
|
|
|
|
if (empty($ticket_data['dod'])) {
|
|
$ticket_data['dod'] = null;
|
|
} else {
|
|
$ticket_data['dod'] = change_date_format($ticket_data['dod'], null, $out_put_format);
|
|
}
|
|
|
|
if (empty($ticket_data['dob'])) {
|
|
$ticket_data['dob'] = null;
|
|
} else {
|
|
$ticket_data['dob'] = change_date_format($ticket_data['dob'], null, $out_put_format);
|
|
}
|
|
|
|
if (empty($ticket_data['date_of_join'])) {
|
|
$ticket_data['date_of_join'] = null;
|
|
} else {
|
|
$ticket_data['date_of_join'] = change_date_format($ticket_data['date_of_join'], null, $out_put_format);
|
|
}
|
|
|
|
if (empty($ticket_data['date_of_incep'])) {
|
|
$ticket_data['date_of_incep'] = null;
|
|
} else {
|
|
$ticket_data['date_of_incep'] = change_date_format($ticket_data['date_of_incep'], null, $out_put_format);
|
|
}
|
|
|
|
if (empty($ticket_data['date_of_accident'])) {
|
|
$ticket_data['date_of_accident'] = null;
|
|
} else {
|
|
$ticket_data['date_of_accident'] = change_date_format($ticket_data['date_of_accident'], null, $out_put_format);
|
|
}
|
|
|
|
if (empty($ticket_data['date_of_death'])) {
|
|
$ticket_data['date_of_death'] = null;
|
|
} else {
|
|
$ticket_data['date_of_death'] = change_date_format($ticket_data['date_of_death'], null, $out_put_format);
|
|
}
|
|
|
|
if (empty($ticket_data['date_of_intimat'])) {
|
|
$ticket_data['date_of_intimat'] = null;
|
|
} else {
|
|
$ticket_data['date_of_intimat'] = change_date_format($ticket_data['date_of_intimat'], null, $out_put_format);
|
|
}
|
|
|
|
if (empty($ticket_data['raised_date'])) {
|
|
$ticket_data['raised_date'] = null;
|
|
} else {
|
|
$ticket_data['raised_date'] = change_date_format($ticket_data['raised_date'], null, $out_put_format);
|
|
}
|
|
|
|
if (empty($ticket_data['registration_date'])) {
|
|
$ticket_data['registration_date'] = null;
|
|
} else {
|
|
$ticket_data['registration_date'] = change_date_format($ticket_data['registration_date'], null, $out_put_format);
|
|
}
|
|
|
|
if (empty($ticket_data['query_received_date'])) {
|
|
$ticket_data['query_received_date'] = null;
|
|
} else {
|
|
$ticket_data['query_received_date'] = change_date_format($ticket_data['query_received_date'], null, $out_put_format);
|
|
}
|
|
|
|
if (empty($ticket_data['denial_date'])) {
|
|
$ticket_data['denial_date'] = null;
|
|
} else {
|
|
$ticket_data['denial_date'] = change_date_format($ticket_data['denial_date'], null, $out_put_format);
|
|
}
|
|
|
|
if (empty($ticket_data['approved_date'])) {
|
|
$ticket_data['approved_date'] = null;
|
|
} else {
|
|
$ticket_data['approved_date'] = change_date_format($ticket_data['approved_date'], null, $out_put_format);
|
|
}
|
|
|
|
if (empty($ticket_data['settled_date'])) {
|
|
$ticket_data['settled_date'] = null;
|
|
} else {
|
|
$ticket_data['settled_date'] = change_date_format($ticket_data['settled_date'], null, $out_put_format);
|
|
}
|
|
|
|
if (empty($ticket_data['pay_initiate_date'])) {
|
|
$ticket_data['pay_initiate_date'] = null;
|
|
} else {
|
|
$ticket_data['pay_initiate_date'] = change_date_format($ticket_data['pay_initiate_date'], null, $out_put_format);
|
|
}
|
|
|
|
return $ticket_data;
|
|
}
|
|
|
|
public function createTicket()
|
|
{
|
|
$ticket_data = $this->request->getPost();
|
|
$ticket_data = $this->formatDateForClaim($ticket_data);
|
|
// $ticket_data = $this->getLastMatchedStatus($ticket_data, );
|
|
// print_rr($ticket_data); die;
|
|
|
|
if ($ticket_data) {
|
|
$return_value = $this->ticketMasterModel->insert($ticket_data);
|
|
if ($return_value) {
|
|
//mail trigger part
|
|
$mail_responce = $this->sendAutoMailTrigger($return_value);
|
|
return $this->respond(['status' => true, 'ticket_id' => $return_value, 'code' => 200, 'data' => $ticket_data, "message" => "Claim created successfully", 'mail_responce' => $mail_responce], 200);
|
|
} else {
|
|
return $this->respond(['status' => false, 'code' => 404, 'message' => 'Failed to create claim'], 200);
|
|
}
|
|
} else {
|
|
return $this->respond(['status' => false, 'code' => 404, 'message' => 'claim data not found'], 200);
|
|
}
|
|
}
|
|
|
|
public function updateTicket()
|
|
{
|
|
$ticket_id = $this->request->getPost('ticket_master_id');
|
|
$ticket_data = $this->request->getPost();
|
|
$ticket_data = $this->formatDateForClaim($ticket_data);
|
|
$ticket_data['claim_status_id'] = $this->getLastMatchedStatus($ticket_data);
|
|
// print_rr($ticket_data); die;
|
|
$old_ticket_data = $this->ticketMasterModel->where('id', $ticket_id)->where('is_active', 1)->first();
|
|
|
|
if ($ticket_data) {
|
|
$return_value = $this->ticketMasterModel->where('id', $ticket_id)->set($ticket_data)->update();
|
|
if ($return_value) {
|
|
|
|
//mail trigger part
|
|
$mail_responce = $this->sendAutoMailTrigger($ticket_id);
|
|
|
|
//send mail to the head for rejected ticket approvel
|
|
if($ticket_data['claim_status_id'] == 8 && $ticket_data['is_head_approved'] == 0){
|
|
$this->sendMailToTheHead($ticket_data);
|
|
}else{
|
|
$this->myLogger->logme('error', "Head Mail can't be sent");
|
|
$this->myLogger->logme('error', "CLAIM STATUS ID : {data}", ['data' => $ticket_data['claim_status_id']]);
|
|
$this->myLogger->logme('error', "IS HEAD APPROVED : {data}", ['data' => $ticket_data['is_head_approved']]);
|
|
}
|
|
|
|
return $this->respond(['status' => true, 'code' => 200, 'data' => $ticket_data, "message" => "Claim updated successfully", 'mail_responce' => $mail_responce], 200);
|
|
} else {
|
|
return $this->respond(['status' => false, 'code' => 404, 'message' => 'Failed to update claim'], 200);
|
|
}
|
|
} else {
|
|
return $this->respond(['status' => false, 'code' => 404, 'message' => 'claim data not found'], 200);
|
|
}
|
|
}
|
|
|
|
public function mailTemplate()
|
|
{
|
|
$data = [];
|
|
$data['trigger_type'] = $this->triggerType;
|
|
$data['policy_type'] = $this->ticketType;
|
|
$data['placeHolders'] = $this->placeHolders;
|
|
$data['ticket_data'] = $this->ticketMailTemplateModel->where('is_active', 1)->findAll();
|
|
|
|
foreach ($data['ticket_data'] as $key => $ticket_data) {
|
|
|
|
$tooltip_array = $this->claimStatus->select('claim_status')->where('ticket_type',$data['ticket_data'][$key]['ticket_type'])->where('trigger_type',$data['ticket_data'][$key]['trigger_type'])->where('is_active',1)->first();
|
|
if (isset($tooltip_array) && $tooltip_array != null){
|
|
$data['ticket_data'][$key]['tool_tip'] = $tooltip_array['claim_status'];
|
|
}else{
|
|
$data['ticket_data'][$key]['tool_tip'] =$data['ticket_data'][$key]['template_name'];
|
|
}
|
|
}
|
|
// dd($data['ticket_data']);
|
|
$data['ticket_type'] = $this->ticketType;
|
|
$data['trigger_type'] = $this->triggerType;
|
|
return $this->loadLayout('ticket_mail_template', $data);
|
|
}
|
|
|
|
public function crudTemplate($action)
|
|
{
|
|
//action 1 is create. action 2 is edit and action 3 is delete
|
|
if ($action == 1) {
|
|
$received_data = $this->request->getPost();
|
|
if (isset($received_data['id']) && $received_data['id'] != '') {
|
|
$status = $this->ticketMailTemplateModel->save($received_data);
|
|
if ($status) {
|
|
return $this->respond(['status' => true], 200);
|
|
} else {
|
|
return $this->respond(['status' => false], 200);
|
|
}
|
|
} else {
|
|
$status = $this->ticketMailTemplateModel->save($received_data);
|
|
if ($status) {
|
|
return $this->respond(['status' => true], 200);
|
|
} else {
|
|
return $this->respond(['status' => false], 200);
|
|
}
|
|
}
|
|
} elseif ($action == 2) {
|
|
$table_id = (int)$this->request->getPost('id');
|
|
$data = $this->ticketMailTemplateModel->where('id', $table_id)->where('is_active', 1)->first();
|
|
if ($data && isset($data['ticket_type']) && isset($data['trigger_type'])) {
|
|
$tooltip_array = $this->claimStatus->select('claim_status')
|
|
->where('ticket_type', $data['ticket_type'])
|
|
->where('trigger_type', $data['trigger_type'])
|
|
->where('is_active', 1)
|
|
->first();
|
|
|
|
$data['tool_tip'] = (isset($tooltip_array['claim_status']))
|
|
? $tooltip_array['claim_status']
|
|
: $data['template_name'];
|
|
} else {
|
|
// Handle case where $data is null or missing required fields
|
|
$data = $data ?: []; // Ensure $data is an array if null
|
|
$data['tool_tip'] = $data['template_name'];
|
|
}
|
|
if ($data) {
|
|
return $this->respond(['status' => true, 'data' => $data], 200);
|
|
} else {
|
|
return $this->respond(['status' => false], 404);
|
|
}
|
|
} elseif ($action == 3) {
|
|
$table_id = (int)$this->request->getPost('id');
|
|
|
|
$sql = "update ticket_mail_template set is_active = 0 where id = $table_id ";
|
|
$status = $this->ticketMailTemplateModel->query($sql);
|
|
if ($status) {
|
|
return $this->respond(['status' => true], 200);
|
|
} else {
|
|
return $this->respond(['status' => false], 404);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function crudNote($action)
|
|
{
|
|
// action = 1 is read, action 2 is insert/update
|
|
if ($action == 1) {
|
|
$ticket_master_id = $this->request->getPost('id');
|
|
$is_auto_query = $this->request->getPost('is_auto_query');
|
|
// print_rr($is_auto_query);
|
|
if (isset($ticket_master_id) && $ticket_master_id != '') {
|
|
$data = $this->ticketNoteModel->where('is_active', 1)->where('ticket_id', $ticket_master_id)->where('is_auto_query', $is_auto_query)->first();
|
|
if ($data) {
|
|
return $this->respond(['status' => true, 'data' => $data], 200);
|
|
} else {
|
|
return $this->respond(['status' => false], 200);
|
|
}
|
|
}
|
|
} elseif ($action == 2) {
|
|
$data = $this->request->getPost();
|
|
// if (isset($data['id']) && $data['id'] != ''){
|
|
// print_rr($data);die();
|
|
$status = $this->ticketNoteModel->save($data);
|
|
$id = isset($data['id']) ? $data['id'] : $this->ticketNoteModel->insertID();
|
|
|
|
// }
|
|
if ($status) {
|
|
return $this->respond(['status' => true, 'id' => $id], 200);
|
|
} else {
|
|
return $this->respond(['status' => false], 200);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function saveReply()
|
|
{
|
|
|
|
$received_data = $this->request->getPost();
|
|
// print_r($received_data); die;
|
|
$received_data['sender'] = 'staff';
|
|
$status = $this->ticketMessageModel->insert($received_data);
|
|
if ($status) {
|
|
$return = $this->sendReplyMessage($received_data);
|
|
return $this->respond(['status' => true, 'code' => 200, 'return' => $return], 200);
|
|
} else {
|
|
return $this->respond(['status' => false, 'code' => 404], 404);
|
|
}
|
|
}
|
|
|
|
public function getTicketMessage($ticket_master_id)
|
|
{
|
|
// log_message('error','Function called');die();
|
|
// $ticket_master_id = $this->request->getPost('id');
|
|
$user_id = get_session_userid();
|
|
$logged_user = $this->userModel->select('first_name,last_name,profile')->where('id', $user_id)->first();
|
|
$dataToSend = [];
|
|
$dataToSend['user_name'] = $logged_user['first_name'] . ' ' . $logged_user['last_name'];
|
|
$dataToSend['messages'] = $this->ticketMessageModel->where('is_active', 1)
|
|
->where('ticket_id', $ticket_master_id)->orderBy('created_at', 'DESC')
|
|
->findAll();
|
|
foreach ($dataToSend['messages'] as $message) {
|
|
$mail_content_converted = $this->convertHtmlToText($message['mail_content']);
|
|
$message['mail_content'] = $mail_content_converted;
|
|
}
|
|
$dataToSend['emp_name'] = $this->ticketMasterModel->select('emp_name')
|
|
->where('id', $ticket_master_id)->where('is_active', 1)
|
|
->first()['emp_name'];
|
|
// dd($dataToSend);
|
|
if ($dataToSend) {
|
|
return $dataToSend;
|
|
} else {
|
|
$data = [];
|
|
return $data;
|
|
}
|
|
}
|
|
|
|
public function convertHtmlToText($html)
|
|
{
|
|
$dom = new DOMDocument();
|
|
@$dom->loadHTML($html);
|
|
return strip_tags($dom->saveHTML());
|
|
}
|
|
|
|
//---- Email Trigger Part----------------------------------------------------------------------------------------------
|
|
|
|
public function constructMailContent($ticket_id)
|
|
{
|
|
$this->myLogger->logme('error', "Constructing mail content for Ticket ID: $ticket_id");
|
|
|
|
try {
|
|
// Fetch Ticket Data
|
|
$ticket_data = $this->ticketMasterModel->getTicketDataByTicketID($ticket_id);
|
|
// print_r($ticket_data); die;
|
|
|
|
if (!$ticket_data) {
|
|
$this->myLogger->logme('error', "No ticket data found for Ticket ID: $ticket_id");
|
|
return null;
|
|
}
|
|
|
|
$this->myLogger->logme('error', "Fetched ticket data: " . json_encode($ticket_data));
|
|
|
|
// Fetch Email Template Data
|
|
$template_data = $this->ticketMasterModel->getTemplateDataByTicketID($ticket_id);
|
|
// print_r($template_data); die;
|
|
|
|
if (!$template_data) {
|
|
$this->myLogger->logme('error', "No email template found for Claim Status ID: " . $ticket_data['claim_status_id']);
|
|
return null;
|
|
}
|
|
|
|
$this->myLogger->logme('error', "Fetched email template: " . json_encode($template_data));
|
|
|
|
// Generate Email Content
|
|
$subject = $this->replacePlaceholders($template_data['subject'], $ticket_data);
|
|
$message = $this->replacePlaceholders($template_data['mail_content'], $ticket_data);
|
|
|
|
// print_r($subject);
|
|
// print_r($message);
|
|
// die;
|
|
|
|
// Validate Essential Fields
|
|
if (empty($ticket_data['emp_mail'])) {
|
|
$this->myLogger->logme('error', "Employee email is missing for Ticket ID : '" . $ticket_id . "'");
|
|
return null;
|
|
}
|
|
|
|
if (empty($subject) || empty($message)) {
|
|
$this->myLogger->logme('error', "Generated email content is empty for Ticket ID: '" . $ticket_id . "'");
|
|
return null;
|
|
}
|
|
|
|
// Construct Mail Data
|
|
$mailData = [
|
|
'mail' => $ticket_data['emp_mail'],
|
|
'subject' => $subject,
|
|
'message' => $message,
|
|
'cc' => $ticket_data['common_mails'] ?? '',
|
|
'attachments' => []
|
|
];
|
|
|
|
// print_r($mailData); die;
|
|
|
|
$this->myLogger->logme('error', "Final Email Data");
|
|
|
|
return $mailData;
|
|
} catch (\Exception $e) {
|
|
$this->myLogger->logme('error', "Exception in constructMailContent: " . $e->getMessage());
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public function replacePlaceholders($content, $ticket_data)
|
|
{
|
|
$this->myLogger->logme('error', "Replacing placeholders in content");
|
|
|
|
if (!empty($ticket_data) && !empty($content)) {
|
|
foreach ($this->placeHolders as $key => $value) {
|
|
|
|
if ($value == "emp_code") {
|
|
$replaceData = $ticket_data[$value] ?? '';
|
|
} else if ($value == "policy_type") {
|
|
$replaceData = str_replace("Claim-", "", $this->ticketType[$ticket_data['ticket_type_id']] ?? "");
|
|
} else if ($value == 'emp_name'){
|
|
if(empty($ticket_data['emp_id'])){
|
|
$replaceData = $ticket_data['emp_name']??"";
|
|
}
|
|
}else if ($value == 'insured_name'){
|
|
if(empty($ticket_data['insured_emp_id'])){
|
|
$replaceData = $ticket_data['insured_name']?? "";
|
|
}
|
|
}else {
|
|
$replaceData = isset($ticket_data[$value]) ? $ticket_data[$value] : '';
|
|
}
|
|
|
|
$content = str_replace($key, $replaceData, $content);
|
|
}
|
|
}
|
|
|
|
$this->myLogger->logme('error', "Final content after placeholder replacement");
|
|
|
|
return $content;
|
|
}
|
|
|
|
//mail send function
|
|
public function sendTrigger($mail_content)
|
|
{
|
|
$this->myLogger->logme('error', "Sending email with content");
|
|
if (!empty($mail_content)) {
|
|
$mail_content['from_mail'] = "claims@nhanceindia.in";
|
|
$response = MailHelper::send_email($mail_content);
|
|
} else {
|
|
$response = ['status' => false, 'code' => 404, 'message' => "Mail not sent, mail data empty"];
|
|
$this->myLogger->logme('error', "Mail not sent, mail data empty");
|
|
}
|
|
|
|
$this->myLogger->logme('error', "Email sent response: " . json_encode($response));
|
|
|
|
return $response;
|
|
}
|
|
|
|
//reply mail part
|
|
public function sendReplyMessage($mail_data)
|
|
{
|
|
$this->myLogger->logme('error', "Preparing reply email for Ticket ID: " . $mail_data['ticket_id']);
|
|
|
|
$acm_mails = $this->ticketMasterModel->getTicketDataByTicketID($mail_data['ticket_id']);
|
|
|
|
if (!$acm_mails) {
|
|
$this->myLogger->logme('error', "No ACM mails found for Ticket ID: " . $mail_data['ticket_id']);
|
|
$this->myLogger->logme('error', "Reply mail not send");
|
|
return false;
|
|
}
|
|
|
|
$ticket_data = $this->ticketMasterModel->getTicketDataByTicketID($mail_data['ticket_id']);
|
|
// print_rr($ticket_data);die();
|
|
if (!$ticket_data) {
|
|
$this->myLogger->logme('error', "No ticket data found for Ticket ID : " . $mail_data['ticket_id']);
|
|
$this->myLogger->logme('error', "Reply mail not send");
|
|
return null;
|
|
}
|
|
|
|
if (!empty($mail_data)) {
|
|
$mail_data['mail_content'] = $this->replacePlaceholders($mail_data['mail_content'], $ticket_data);
|
|
$mail_data['mail_subject'] = $this->replacePlaceholders($mail_data['mail_subject'], $ticket_data);
|
|
}
|
|
|
|
$this->myLogger->logme('error', "Fetched ACM emails");
|
|
|
|
$emailData = [
|
|
'mail' => $mail_data['emp_mail'],
|
|
'subject' => $mail_data['mail_subject'],
|
|
'message' => $mail_data['mail_content'],
|
|
'common' => [],
|
|
'cc' => $acm_mails['common_mails'],
|
|
'attachments' => []
|
|
];
|
|
|
|
$this->myLogger->logme('error', "Final Reply Email Data");
|
|
|
|
return $this->sendTrigger($emailData);
|
|
}
|
|
|
|
//auto mail part
|
|
public function sendAutoMailTrigger($ticket_id)
|
|
{
|
|
$auto_mail_enable = $this->ticketMasterModel->getTemplateDataByTicketID($ticket_id);
|
|
// print_rr($auto_mail_enable);
|
|
$mail_responce = [];
|
|
if (!empty($auto_mail_enable) && $auto_mail_enable['is_auto_mail'] == 1) {
|
|
$mail_content = $this->constructMailContent($ticket_id);
|
|
// print_r($mail_content); die;
|
|
$mail_responce = $this->sendTrigger($mail_content);
|
|
} elseif (!empty($auto_mail_enable) && $auto_mail_enable['is_auto_mail'] == 0) {
|
|
$this->myLogger->logme('error', 'Auto Mail Not Sent, Reason: Automail Not Enabled');
|
|
} else {
|
|
$this->myLogger->logme('error', 'Auto Mail Not Sent, Reason: Mail Template Not Created');
|
|
}
|
|
|
|
return $mail_responce;
|
|
}
|
|
|
|
//---- End Email Trigger Part----------------------------------------------------------------------------------------------
|
|
|
|
|
|
public function ticketHistory($ticket_id)
|
|
{
|
|
$sql = "SELECT
|
|
th.id,
|
|
th.field_name,
|
|
th.display_name,
|
|
th.old_value,
|
|
th.new_value,
|
|
th.created_at,
|
|
CONCAT(creator.first_name, ' ', creator.last_name) as modified_by,
|
|
-- Claim Status
|
|
old_status.claim_status as old_status_value,
|
|
new_status.claim_status as new_status_value,
|
|
|
|
-- Account Manager
|
|
CONCAT(old_account_manager.first_name, ' ', old_account_manager.last_name) as old_account_manager,
|
|
CONCAT(new_account_manager.first_name, ' ', new_account_manager.last_name) as new_account_manager,
|
|
|
|
-- Insured Employee ID Change
|
|
old_insured_emp.name as old_insured_id_name,
|
|
new_insured_emp.name as new_insured_id_name,
|
|
|
|
ticket_master.ticket_type_id
|
|
|
|
FROM
|
|
ticket_history th
|
|
|
|
-- Join for the user who made the change
|
|
LEFT JOIN user_profiles creator
|
|
ON th.created_by = creator.id
|
|
|
|
-- Status value lookups
|
|
LEFT JOIN ticket_claim_status old_status
|
|
ON th.field_name = 'claim_status_id'
|
|
AND th.old_value = old_status.id
|
|
AND old_status.is_active = 1
|
|
|
|
LEFT JOIN ticket_claim_status new_status
|
|
ON th.field_name = 'claim_status_id'
|
|
AND th.new_value = new_status.id
|
|
|
|
LEFT JOIN user_profiles as old_account_manager
|
|
ON th.field_name = 'acm_id'
|
|
AND th.old_value = old_account_manager.id
|
|
|
|
LEFT JOIN user_profiles as new_account_manager
|
|
ON th.field_name = 'acm_id'
|
|
AND th.new_value = new_account_manager.id
|
|
|
|
LEFT JOIN employees as old_insured_emp
|
|
ON th.field_name = 'insured_emp_id'
|
|
AND th.old_value = old_insured_emp.id
|
|
|
|
LEFT JOIN employees as new_insured_emp
|
|
ON th.field_name = 'insured_emp_id'
|
|
AND th.new_value = new_insured_emp.id
|
|
|
|
LEFT JOIN ticket_master as ticket_master
|
|
on th.field_name = 'claim_type'
|
|
AND th.ticket_id = ticket_master.id
|
|
|
|
|
|
|
|
WHERE
|
|
th.ticket_id = $ticket_id
|
|
AND th.is_active = 1
|
|
ORDER BY
|
|
th.created_at DESC";
|
|
$data = $this->ticketHistoryModel->query($sql)->getResultArray();
|
|
$priorityType = $this->priorityType;
|
|
$relationshipType = $this->relationshipType;
|
|
$modeOFIntimate = $this->modeOFIntimate;
|
|
$claim_type = $this->claimType;
|
|
foreach ($data as &$row) {
|
|
if ($row['field_name'] == 'claim_status_id') {
|
|
$new_old_value = isset($row['old_status_value']) ? $row['old_status_value'] : '-';
|
|
$new_new_value = $row['new_status_value'];
|
|
$row['old_value'] = $new_old_value;
|
|
$row['new_value'] = $new_new_value;
|
|
} elseif ($row['field_name'] == 'acm_id') {
|
|
$new_old_value = isset($row['old_account_manager']) ? $row['old_account_manager'] : '-';
|
|
$new_new_value = $row['new_account_manager'];
|
|
$row['old_value'] = $new_old_value;
|
|
$row['new_value'] = $new_new_value;
|
|
} elseif ($row['field_name'] == 'insured_emp_id') {
|
|
$new_old_value = isset($row['old_insured_id_name']) ? $row['old_insured_id_name'] : '-';
|
|
$new_new_value = $row['new_insured_id_name'];
|
|
$row['old_value'] = $new_old_value;
|
|
$row['new_value'] = $new_new_value;
|
|
} elseif ($row['field_name'] == 'priority') {
|
|
$new_old_value = isset($priorityType[$row['old_value']]) ? $priorityType[$row['old_value']] : '-';
|
|
$new_new_value = isset($priorityType[$row['new_value']]) ? $priorityType[$row['new_value']] : '-';
|
|
$row['old_value'] = $new_old_value;
|
|
$row['new_value'] = $new_new_value;
|
|
} elseif ($row['field_name'] == 'relationship') {
|
|
$new_old_value = isset($relationshipType[$row['old_value']]) ? $relationshipType[$row['old_value']] : '-';
|
|
$new_new_value = isset($relationshipType[$row['new_value']]) ? $relationshipType[$row['new_value']] : '-';
|
|
$row['old_value'] = $new_old_value;
|
|
$row['new_value'] = $new_new_value;
|
|
} elseif ($row['field_name'] == 'mode_of_intimation') {
|
|
$new_old_value = isset($modeOFIntimate[$row['old_value']]) ? $modeOFIntimate[$row['old_value']] : "-";
|
|
$new_new_value = isset($modeOFIntimate[$row['old_value']]) ? $modeOFIntimate[$row['old_value']] : "-";
|
|
$row['old_value'] = $new_old_value;
|
|
$row['new_value'] = $new_new_value;
|
|
} elseif ($row['field_name'] == 'claim_type') {
|
|
$new_old_value = isset($claim_type[$row['ticket_type_id']][$row['old_value']]) ? $claim_type[$row['ticket_type_id']][$row['old_value']] : '-';
|
|
$new_new_value = isset($claim_type[$row['ticket_type_id']][$row['new_value']]) ? $claim_type[$row['ticket_type_id']][$row['new_value']] : '-';
|
|
$row['old_value'] = $new_old_value;
|
|
$row['new_value'] = $new_new_value;
|
|
} elseif ($row['field_name'] == 'claim_type') {
|
|
$new_old_value = isset($claim_type[$row['old_value']]) ? $claim_type[$row['old_value']] : '-';
|
|
$new_new_value = isset($claim_type[$row['new_value']]) ? $claim_type[$row['new_value']] : '-';
|
|
$row['old_value'] = $new_old_value;
|
|
$row['new_value'] = $new_new_value;
|
|
} else {
|
|
$new_old_value = isset($row['old_value']) ? $row['old_value'] : '-';
|
|
$new_new_value = isset($row['new_value']) ? $row['new_value'] : '-';
|
|
$row['old_value'] = $new_old_value;
|
|
$row['new_value'] = $new_new_value;
|
|
}
|
|
}
|
|
|
|
return ($data);
|
|
}
|
|
|
|
public function sendMailWithAutoQuery()
|
|
{
|
|
|
|
$ticket_ids = $this->ticketMessageModel
|
|
->select('ticket_master.id')
|
|
->join('ticket_master', 'ticket_master.id = ticket_messages.ticket_id AND ticket_master.is_active = 1 and ticket_master.claim_status_id in (4,17,27,37)')
|
|
->join('ticket_claim_status AS tcs', 'tcs.id = ticket_messages.claim_status AND (tcs.is_active = 1)')
|
|
->join('ticket_notes', 'ticket_notes.ticket_id = ticket_messages.ticket_id AND ticket_notes.is_auto_query = 1 AND ticket_notes.is_active = 1')
|
|
->where('ticket_messages.is_active', 1)
|
|
->where('ticket_messages.claim_status in (4,17,27,37)')
|
|
->groupBy('ticket_master.id')
|
|
->having('DATEDIFF(CURDATE(), MAX(ticket_messages.created_at)) =', 7)
|
|
->having('count(ticket_messages.id) < ', 6)
|
|
->findAll();
|
|
|
|
|
|
// var_dump($ticket_ids);die();
|
|
foreach ($ticket_ids as $ticket) {
|
|
|
|
$ticket_id = $ticket['id'];
|
|
$acm_mails = $this->ticketMasterModel->getTicketDataByTicketID($ticket_id);
|
|
$ticket_data = $this->ticketMasterModel->getTicketDataByTicketID($ticket_id);
|
|
|
|
$template_data = $this->ticketMasterModel->getTemplateDataByTicketID($ticket_id);
|
|
|
|
if (!empty($template_data)) {
|
|
$template_data['mail_content'] = $this->replacePlaceholders($template_data['mail_content'], $ticket_data);
|
|
$template_data['subject'] = $this->replacePlaceholders($template_data['subject'], $ticket_data);
|
|
}
|
|
$emailData = [
|
|
'mail' => $template_data['emp_mail'],
|
|
'subject' => $template_data['subject'],
|
|
'message' => $template_data['mail_content'],
|
|
'common' => [],
|
|
'cc' => $acm_mails['common_mails'],
|
|
'attachments' => []
|
|
];
|
|
|
|
$this->myLogger->logme('error', "Final Reply Email Data");
|
|
// var_dump($emailData);
|
|
$this->sendTrigger($emailData);
|
|
}
|
|
|
|
return 'Ticket id\'s : '.json_encode($ticket_ids);
|
|
}
|
|
|
|
public function ticketReports()
|
|
{
|
|
|
|
if ($this->request->is('get')) {
|
|
$default_start = new \DateTime();
|
|
$data['default_end'] = $default_start->format('d-m-Y');
|
|
$data['default_start'] = $default_start->modify('-60 days')->format('d-m-Y');
|
|
|
|
$data['policy_type'] = $this->ticketType;
|
|
$data['account_manager'] = $this->userModel->select('first_name')->where('is_active', 1)->where('role', 3)->findAll();
|
|
$data['report_type'] = [
|
|
'acc_manager_wise_status' => 'Account Manger Wise Status Report',
|
|
'tpa_wise_status' => 'TPA Wise Status Report',
|
|
'tat_band_wise' => 'TAT Wise Status Report'
|
|
];
|
|
//
|
|
$this->loadLayout('ticket_reports', $data);
|
|
} else {
|
|
$received_data = $this->request->getPost();
|
|
$from_Date = $received_data['fromDate'];
|
|
$to_Date = $received_data['toDate'];
|
|
$fromDate = \DateTime::createFromFormat('d-m-Y', $from_Date)->format('Y-m-d');
|
|
$toDate = \DateTime::createFromFormat('d-m-Y', $to_Date)->format('Y-m-d');
|
|
$policy_type = $received_data['policy_type'];
|
|
// print_rr($received_data);
|
|
if ($received_data['report_type'] == "acc_manager_wise_status"){
|
|
$viewData['policy_type'] = $received_data['policy_type'];
|
|
$viewData['account_manager_wise_data'] = $this->ticketMasterModel->accountManagerWiseReport($policy_type,$fromDate,$toDate);
|
|
// print_rr($viewData);
|
|
if ($policy_type == 1){
|
|
$viewData['column_order'] = [
|
|
'ACM_NAME', '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',
|
|
'TOTAL'
|
|
];
|
|
$ordered_data = [];
|
|
|
|
foreach ($viewData['account_manager_wise_data'] as $tpa_data) {
|
|
$temp = [];
|
|
foreach ($viewData['column_order'] as $key) {
|
|
$temp[$key] = isset($tpa_data[$key]) ? $tpa_data[$key] : 0; // Default to 0 if key is missing
|
|
}
|
|
$ordered_data[] = $temp;
|
|
}
|
|
$viewData['tpa_wise_data'] = $ordered_data;
|
|
$html = view('claims_report_acc_manager_wise', $viewData);
|
|
return $this->respond(['status' => true, 'html' => $html], 200);
|
|
}else{
|
|
$viewData['column_order'] = [
|
|
'ACM_NAME', 'CLAIM INTIMATION', 'INTIMATION TO INSURER', 'CLIENT PENDING',
|
|
'INSURER PENDING','INVESTIGATION','APPROVED','ON HOLD','TOTAL', 'NOT COVERED',
|
|
'CLOSED', 'SETTLED', 'CLEARED_TOTAL'
|
|
];
|
|
$ordered_data = [];
|
|
|
|
foreach ($viewData['account_manager_wise_data'] as $tpa_data) {
|
|
$temp = [];
|
|
foreach ($viewData['column_order'] as $key) {
|
|
$temp[$key] = isset($tpa_data[$key]) ? $tpa_data[$key] : 0; // Default to 0 if key is missing
|
|
}
|
|
$ordered_data[] = $temp;
|
|
}
|
|
$viewData['tpa_wise_data'] = $ordered_data;
|
|
$html = view('claims_report_acc_manager_wise', $viewData);
|
|
return $this->respond(['status' => true, 'html' => $html], 200);
|
|
}
|
|
} elseif ($received_data['report_type'] == 'tpa_wise_status') {
|
|
|
|
$viewData['tpa_wise_data'] = $this->ticketMasterModel->tpaWiseReport($policy_type, $fromDate, $toDate);
|
|
|
|
$viewData['column_order'] = [
|
|
'TPA_NAME', 'NON ID', 'ID NOT GENERATED', 'CDA', 'INFORMATION REQUIRED',
|
|
'UNDER PROCESS - CLAIM NO. UPDATION', 'UNDER PROCESS - INVESTIGATION STATUS',
|
|
'UNDER PROCESS - QUERY DOCUMENT RECEIVED', 'APPROVED', 'PAYMENT INITIATED',
|
|
'TOTAL', 'SETTLED', 'CLOSED', 'CANCELLED', 'RETURNED', 'CLEARED_TOTAL'
|
|
];
|
|
|
|
// Reorder data based on column order
|
|
$ordered_data = [];
|
|
|
|
foreach ($viewData['tpa_wise_data'] as $tpa_data) {
|
|
$temp = [];
|
|
foreach ($viewData['column_order'] as $key) {
|
|
$temp[$key] = isset($tpa_data[$key]) ? $tpa_data[$key] : 0; // Default to 0 if key is missing
|
|
}
|
|
$ordered_data[] = $temp;
|
|
}
|
|
$viewData['tpa_wise_data'] = $ordered_data;
|
|
// $html = view('claims_report_tpa_wise', $viewData);
|
|
|
|
$html = view('claims_report_tpa_wise',$viewData);
|
|
return $this->respond(['status' => true, 'html' => $html], 200);
|
|
} else if ($received_data['report_type'] == 'tat_band_wise') {
|
|
|
|
$viewData['data'] = $this->ticketMasterModel->getTATReport($policy_type, $fromDate, $toDate);
|
|
$html = view('tat_report_band_wise_list', $viewData);
|
|
return $this->respond(['status' => true, 'html' => $html], 200);
|
|
}
|
|
}
|
|
}
|
|
|
|
// public function accountManagerWiseReport($policy_type = null ,$start_date = null, $end_date = null){
|
|
|
|
// if ($policy_type == 1) {
|
|
// $sql = "SELECT
|
|
// u.first_name AS acc_manager_name,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'ID NOT GENERATED' AND master.ticket_type_id = 1 THEN master.id END) AS id_not_generated,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'NON ID' AND master.ticket_type_id = 1 THEN master.id END) AS non_id,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'CDA' AND master.ticket_type_id = 1 THEN master.id END) AS cda,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'INFORMATION REQUIRED' AND master.ticket_type_id = 1 THEN master.id END) AS information_required,
|
|
// COUNT(CASE WHEN tcs.claim_status LIKE '%UNDER PROCESS%' AND master.ticket_type_id = 1 THEN master.id END) AS under_process,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'APPROVED' AND master.ticket_type_id = 1 THEN master.id END) AS approved,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'PAYMENT INITIATED' AND master.ticket_type_id = 1 THEN master.id END) AS payment_initiated,
|
|
// (
|
|
// COUNT(CASE WHEN tcs.claim_status = 'ID NOT GENERATED' AND master.ticket_type_id = 1 THEN master.id END) +
|
|
// COUNT(CASE WHEN tcs.claim_status = 'NON ID' AND master.ticket_type_id = 1 THEN master.id END) +
|
|
// COUNT(CASE WHEN tcs.claim_status = 'CDA' AND master.ticket_type_id = 1 THEN master.id END) +
|
|
// COUNT(CASE WHEN tcs.claim_status = 'INFORMATION REQUIRED' AND master.ticket_type_id = 1 THEN master.id END) +
|
|
// COUNT(CASE WHEN tcs.claim_status LIKE '%UNDER PROCESS%' AND master.ticket_type_id = 1 THEN master.id END) +
|
|
// COUNT(CASE WHEN tcs.claim_status = 'APPROVED' AND master.ticket_type_id = 1 THEN master.id END) +
|
|
// COUNT(CASE WHEN tcs.claim_status = 'PAYMENT INITIATED' AND master.ticket_type_id = 1 THEN master.id END)
|
|
// ) AS total
|
|
// FROM
|
|
// ticket_master master
|
|
// JOIN
|
|
// user_profiles u ON master.acm_id = u.id and u.is_active = 1
|
|
// JOIN
|
|
// ticket_claim_status tcs ON tcs.id = master.claim_status_id and tcs.is_active = 1
|
|
// WHERE
|
|
// master.created_at <= '$end_date' and master.created_at >= '$start_date' and master.is_active = 1
|
|
// GROUP BY
|
|
// u.id;
|
|
// ";
|
|
// $result = $this->ticketMasterModel->query($sql)->getResultArray();
|
|
// // dd($result);
|
|
|
|
// return $result;
|
|
|
|
|
|
// }else{
|
|
// $sql = "SELECT u.first_name AS acc_manager_name,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'CLAIM INTIMATION' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS claim_intimation,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'INTIMATION TO INSURER' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS int_to_insurer,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'CLIENT PENDING' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS client_pending,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'INSURER PENDING' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS information_required,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'INVESTIGATION' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS investigation,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'APPROVED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS approved,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'ON HOLD' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS on_hold,
|
|
|
|
// (
|
|
// COUNT(CASE WHEN tcs.claim_status = 'CLAIM INTIMATION' AND master.ticket_type_id = '$policy_type' THEN master.id END)+
|
|
// COUNT(CASE WHEN tcs.claim_status = 'INTIMATION TO INSURER' AND master.ticket_type_id = '$policy_type' THEN master.id END)+
|
|
// COUNT(CASE WHEN tcs.claim_status = 'CLIENT PENDING' AND master.ticket_type_id = '$policy_type' THEN master.id END) +
|
|
// COUNT(CASE WHEN tcs.claim_status = 'INSURER PENDING' AND master.ticket_type_id = '$policy_type' THEN master.id END) +
|
|
// COUNT(CASE WHEN tcs.claim_status = 'INVESTIGATION' AND master.ticket_type_id = '$policy_type' THEN master.id END) +
|
|
// COUNT(CASE WHEN tcs.claim_status = 'APPROVED' AND master.ticket_type_id = '$policy_type' THEN master.id END) +
|
|
// COUNT(CASE WHEN tcs.claim_status = 'ON HOLD' AND master.ticket_type_id = '$policy_type' THEN master.id END)
|
|
// ) AS total1,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'NOT COVERED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS not_covered,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'CLOSED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS closed,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'SETTLED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS settled,
|
|
// (
|
|
// COUNT(CASE WHEN tcs.claim_status = 'NOT COVERED' AND master.ticket_type_id = '$policy_type' THEN master.id END) +
|
|
// COUNT(CASE WHEN tcs.claim_status = 'CLOSED' AND master.ticket_type_id = '$policy_type' THEN master.id END) +
|
|
// COUNT(CASE WHEN tcs.claim_status = 'SETTLED' AND master.ticket_type_id = '$policy_type' THEN master.id END)
|
|
// ) AS total2
|
|
// FROM
|
|
// ticket_master master
|
|
// JOIN
|
|
// user_profiles u ON master.acm_id = u.id and u.is_active = 1
|
|
// JOIN
|
|
// ticket_claim_status tcs ON tcs.id = master.claim_status_id and tcs.is_active = 1
|
|
// WHERE
|
|
// master.created_at <= '$end_date' and master.created_at >= '$start_date' and master.is_active = 1 and master.ticket_type_id = '$policy_type'
|
|
// GROUP BY
|
|
// u.id;
|
|
// ";
|
|
// $result = $this->ticketMasterModel->query($sql)->getResultArray();
|
|
|
|
// return $result;
|
|
// }
|
|
// }
|
|
|
|
// public function tpaWiseReport($policy_type = null ,$start_date = null,$end_date = null ){
|
|
// // $policy_type = 1;
|
|
// $sql = "SELECT
|
|
// tpa.name AS tpa_name,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'ID NOT GENERATED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS id_not_generated,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'NON ID' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS non_id,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'CDA' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS cda,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'INFORMATION REQUIRED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS information_required,
|
|
// COUNT(CASE WHEN tcs.claim_status LIKE '%UNDER PROCESS%' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS under_process,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'APPROVED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS approved,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'PAYMENT INITIATED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS payment_initiated,
|
|
// (
|
|
// COUNT(CASE WHEN tcs.claim_status = 'ID NOT GENERATED' AND master.ticket_type_id = '$policy_type' THEN master.id END) +
|
|
// COUNT(CASE WHEN tcs.claim_status = 'NON ID' AND master.ticket_type_id = '$policy_type' THEN master.id END) +
|
|
// COUNT(CASE WHEN tcs.claim_status = 'CDA' AND master.ticket_type_id = '$policy_type' THEN master.id END) +
|
|
// COUNT(CASE WHEN tcs.claim_status = 'INFORMATION REQUIRED' AND master.ticket_type_id = '$policy_type' THEN master.id END) +
|
|
// COUNT(CASE WHEN tcs.claim_status LIKE '%UNDER PROCESS%' AND master.ticket_type_id = '$policy_type' THEN master.id END) +
|
|
// COUNT(CASE WHEN tcs.claim_status = 'APPROVED' AND master.ticket_type_id = '$policy_type' THEN master.id END) +
|
|
// COUNT(CASE WHEN tcs.claim_status = 'PAYMENT INITIATED' AND master.ticket_type_id = '$policy_type' THEN master.id END)
|
|
// ) AS total,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'CLOSED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS closed,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'SETTLED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS settled,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'RETURNED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS returned,
|
|
// COUNT(CASE WHEN tcs.claim_status = 'REJECTED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS denied,
|
|
// (
|
|
// COUNT(CASE WHEN tcs.claim_status = 'CLOSED' AND master.ticket_type_id = '$policy_type'THEN master.id END) +
|
|
// COUNT(CASE WHEN tcs.claim_status = 'SETTLED' AND master.ticket_type_id = '$policy_type' THEN master.id END) +
|
|
// COUNT(CASE WHEN tcs.claim_status = 'RETURNED' AND master.ticket_type_id = '$policy_type' THEN master.id END) +
|
|
// COUNT(CASE WHEN tcs.claim_status = 'REJECTED' AND master.ticket_type_id = '$policy_type' THEN master.id END)
|
|
// ) AS total2
|
|
// FROM
|
|
// ticket_master master
|
|
// JOIN
|
|
// tpa ON master.tpa_id = tpa.id and tpa.is_active = 1
|
|
// JOIN
|
|
// ticket_claim_status tcs ON tcs.id = master.claim_status_id and tcs.is_active = 1
|
|
// WHERE
|
|
// master.created_at <= '$end_date' and master.created_at >= '$start_date' and master.is_active = 1
|
|
// GROUP BY
|
|
// tpa.id;
|
|
|
|
|
|
// ";
|
|
// $result = $this->ticketMasterModel->query($sql)->getResultArray();
|
|
|
|
// return $result;
|
|
// }
|
|
|
|
|
|
// function for Reject ticket Head Approvel mail sent function
|
|
public function sendMailToTheHead($ticket_data)
|
|
{
|
|
$this->myLogger->logme('error', "sendMailToTheHead Function Called");
|
|
if(!empty($ticket_data)){
|
|
|
|
// print_r($ticket_data); die;
|
|
|
|
$head_mail = $this->employeeModel
|
|
->select('user_profiles.email')
|
|
->join('clients', 'employees.client_id = clients.id')
|
|
->join('client_rm', 'clients.id = client_rm.client_id')
|
|
->join('user_profiles', 'client_rm.user_id = user_profiles.id')
|
|
->where('employees.is_active', 1)
|
|
->where('client_rm.is_active', 1)
|
|
->where('client_rm.level', 1)
|
|
->where('employees.id', $ticket_data['emp_id'])
|
|
->first();
|
|
|
|
if(!empty($head_mail)){
|
|
|
|
$template_data = $this->ticketMailTemplateModel
|
|
->where('ticket_mail_template.ticket_type', 0)
|
|
->where('ticket_mail_template.trigger_type', 0)
|
|
->first();
|
|
|
|
if(!empty($template_data)){
|
|
|
|
$subject = $this->replacePlaceholders($template_data['subject'], $ticket_data);
|
|
$message = $this->replacePlaceholders($template_data['mail_content'], $ticket_data);
|
|
|
|
$emailData = [
|
|
'mail' => $head_mail['email'],
|
|
'subject' => $subject,
|
|
'message' => $message,
|
|
'common' => [],
|
|
];
|
|
|
|
$this->sendTrigger($emailData);
|
|
|
|
}else{
|
|
$this->myLogger->logme('error', "Head Mail can't be sent because Template data is empty");
|
|
}
|
|
|
|
|
|
}else{
|
|
$this->myLogger->logme('error', "Head Mail can't be sent because head mail is empty");
|
|
}
|
|
|
|
}else{
|
|
$this->myLogger->logme('error', "Head Mail can't be sent because ticket data is empty");
|
|
}
|
|
}
|
|
|
|
public function getLastMatchedStatus($incoming_form_values)
|
|
{
|
|
if (empty($incoming_form_values) || !isset($incoming_form_values['claim_status_id']) || !isset($incoming_form_values['extra_fields_array_for_validate'])) {
|
|
return null;
|
|
}
|
|
|
|
$lastMatchedStatus = $incoming_form_values['claim_status_id'];
|
|
|
|
// Use the provided `extra_fields_array_for_validate` from the incoming data
|
|
$statusMapping = json_decode($incoming_form_values['extra_fields_array_for_validate']);
|
|
|
|
foreach ($statusMapping as $status => $requiredFields) {
|
|
// Ensure requiredFields is an array
|
|
if (!is_array($requiredFields)) {
|
|
$requiredFields = [$requiredFields];
|
|
}
|
|
|
|
// Check if all required fields exist and are not empty in the incoming form values
|
|
$allFieldsMatched = true;
|
|
foreach ($requiredFields as $field) {
|
|
if (!isset($incoming_form_values[$field]) || empty($incoming_form_values[$field])) {
|
|
$allFieldsMatched = false;
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Update the last matched status if all fields are validated
|
|
if ($allFieldsMatched) {
|
|
$lastMatchedStatus = $status;
|
|
}
|
|
}
|
|
|
|
if($lastMatchedStatus == 1){
|
|
if(!empty($incoming_form_values['tpa_no'])){
|
|
$lastMatchedStatus = 2;
|
|
}
|
|
}
|
|
|
|
return $lastMatchedStatus;
|
|
}
|
|
|
|
public function getPolicyStartDate()
|
|
{
|
|
|
|
$data = $this->request->getPost();
|
|
$client_policy_id = $data['policy_id'];
|
|
$policy_start_date = $this->clientPolicyModel->select('policy_start_date')->where('id', $client_policy_id)->first()['policy_start_date'];
|
|
// dd($data);
|
|
if (isset($data['employeeId']) && $data['employeeId'] != "" && $data['employeeId'] != null) {
|
|
// dd($data);
|
|
$emp_id = $data['employeeId'];
|
|
$empData = $this->employeeModel->select('dob,doj')->where('id',$emp_id)->findAll();
|
|
|
|
if (!empty($empData) && $empData != "" && $empData != null ) {
|
|
foreach ($empData as &$emp) { // Loop through the data
|
|
$emp['dob'] = date('d/m/Y', strtotime($emp['dob']));
|
|
$emp['doj'] = date('d/m/Y', strtotime($emp['doj']));
|
|
}
|
|
}
|
|
|
|
if ($empData){
|
|
return $this->respond(['status' => true, 'minDate' => $policy_start_date,'empData'=> $empData], 200);
|
|
}else{
|
|
return $this->respond(['status' => false, 'message' => "Policy Not Found"]);
|
|
}
|
|
|
|
} else {
|
|
// dd($policy_start_date);
|
|
if ($policy_start_date) {
|
|
return $this->respond(['status' => true, 'minDate' => $policy_start_date], 200);
|
|
} else {
|
|
return $this->respond(['status' => false, 'message' => "Policy Not Found"]);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function getPoliciesbyEmpID() {
|
|
$received_data = $this->request->getPost();
|
|
$emp_id = $received_data['emp_id'];
|
|
|
|
// Get all client policy IDs for the given employee
|
|
$policies = $this->employeePolicyModel
|
|
->select('client_policy_id')
|
|
->where('employee_id', $emp_id)
|
|
->findAll();
|
|
|
|
if (empty($policies)) {
|
|
return []; // Return empty if no policies found
|
|
}
|
|
|
|
// Extract client policy IDs into an array
|
|
$policy_ids = array_column($policies, 'client_policy_id');
|
|
|
|
// Fetch all policy names and IDs in one query
|
|
$policyNameandID = $this->clientPolicyModel
|
|
->select('CONCAT(policy_type.policy_type, "-", client_policy.policy_no) as client_policy_name, client_policy.id as client_policy_value,client_policy.policy_type_id')
|
|
->join('policy_type', 'policy_type.id = client_policy.policy_type_id AND policy_type.is_active = 1')
|
|
->whereIn('client_policy.id', $policy_ids)
|
|
->findAll();
|
|
|
|
// dd($policyNameandID);
|
|
if ($policyNameandID){
|
|
|
|
return $this->respond(['status'=>true,'policy_data'=> $policyNameandID]);
|
|
}else{
|
|
return $this->respond(['status'=>false,'message'=> "Policy Not Found"]);
|
|
}
|
|
}
|
|
|
|
}
|