FEAT_PENDING_ACTION_NOTIFICATION_COMPLETE_WITHOUT_UI : RV

This commit is contained in:
VENKATESHWARAN 2024-05-20 09:02:54 +05:30
parent a28cc81245
commit 9e79daeaf8
21 changed files with 1911 additions and 991 deletions

View File

@ -25,6 +25,7 @@ $routes->get('download-kyc-docs/(:segment)', 'ClientController::downloadKYCDocum
$routes->get('get-notification', 'DashboardController::getDashboardNotifications'); $routes->get('get-notification', 'DashboardController::getDashboardNotifications');
$routes->get('acknowledge-notification/(:segment)', 'DashboardController::acknowledgeMessage/$1'); $routes->get('acknowledge-notification/(:segment)', 'DashboardController::acknowledgeMessage/$1');
$routes->get('get-pending-action', 'PendingActionsController::getPendingActions');

View File

@ -893,14 +893,18 @@ class EmployeeController extends AdminController
'{DOB}' => date('d-M-Y', strtotime($value['dob'])), '{DOB}' => date('d-M-Y', strtotime($value['dob'])),
'{SELF_NAME}' => $value['self'] ?? $value['name'], '{SELF_NAME}' => $value['self'] ?? $value['name'],
'{POLICY_DATE}' => date('d-M-Y', strtotime($value['policy_end_date'])), '{POLICY_DATE}' => date('d-M-Y', strtotime($value['policy_end_date'])),
'{INSURER_NAME}' => $value['insurer_name'], '{POLICY_START_DATE}' => date('d-M-Y', strtotime($value['policy_start_date'])),
'{POLICY_NO}' => date('d-M-Y', strtotime($value['policy_start_date'])),
'{INSURER_NAME}' => strtoupper($value['insurer_name']),
'{INSURER_LOGO}' => base_url() . 'public/uploads/logo/' . $value['insurer_logo'], '{INSURER_LOGO}' => base_url() . 'public/uploads/logo/' . $value['insurer_logo'],
'{FRONT_CARD}' => base_url() . 'public/uploads/template_bg/' . $value['front_card'], '{FRONT_CARD}' => base_url() . 'public/uploads/template_bg/' . $value['front_card'],
'{BACK_CARD}' => base_url() . 'public/uploads/logo/' . $value['back_card'], '{BACK_CARD}' => base_url() . 'public/uploads/template_bg/' . $value['back_card'],
'{EMP_ID}' =>$value['emp_code'], '{EMP_ID}' =>$value['emp_code'],
'{CORPORATE_NAME}' =>$value['client_name'], '{CORPORATE_NAME}' =>$value['client_name'],
'{AGE}' =>$value['emp_age'], '{AGE}' =>$value['emp_age'],
'{TPA_NAME}' =>$value['emp_age'], '{TPA_NAME}' =>$value['tpa_name'],
'{INSURER_BRANCH}' =>$value['insurer_branch_city'],
'{RELATION}' =>$value['relationship'],
'{TPA_LOGO}' => base_url() . 'public/uploads/logo/' . $value['tpa_logo'], '{TPA_LOGO}' => base_url() . 'public/uploads/logo/' . $value['tpa_logo'],
]; ];
@ -1037,9 +1041,32 @@ class EmployeeController extends AdminController
} }
public function previewTemplate($id = null){
public function previewTemplate($id = null)
{
$value = [
'tpa_id' => 'TPA12345',
'name' => 'John Doe',
'uhid' => 'UHID67890',
'gender' => 'Male',
'dob' => '1985-05-15',
'self' => 'John Doe',
'policy_end_date' => '2024-12-31',
'policy_start_date' => '2023-01-01',
'policy_no' => 'POL1234567890',
'insurer_name' => 'Example Insurance Company',
'emp_code' => 'EMP001122',
'client_name' => 'Corporate Client Inc.',
'emp_age' => 39,
'tpa_name' => 'Example TPA',
'insurer_branch_city' => 'New York',
'relationship' => 'Self'
];
$tpa_id = $this->TPAModel->where('id', $id)->first(); $tpa_id = $this->TPAModel->where('id', $id)->first();
$template_data_path = WRITEPATH . 'e_card_template/'; $template_data_path = WRITEPATH . 'e_card_template/';
@ -1050,28 +1077,44 @@ class EmployeeController extends AdminController
$data['message'] = 'Record Not Found'; $data['message'] = 'Record Not Found';
return view('errors/404', $data); return view('errors/404', $data);
} }
$tmplt_data = file_get_contents($final_path); $tmplt_data = file_get_contents($final_path);
$placeholders = [ $placeholders = [
'{TPA_ID}' => $value['tpa_id'],
'{NAME}' => $value['name'],
'{UHID}' => $value['uhid'],
'{GENDER}' => $value['gender'],
'{DOB}' => date('d-M-Y', strtotime($value['dob'])),
'{SELF_NAME}' => $value['self'] ?? $value['name'],
'{POLICY_DATE}' => date('d-M-Y', strtotime($value['policy_end_date'])),
'{POLICY_START_DATE}' => date('d-M-Y', strtotime($value['policy_start_date'])),
'{POLICY_NO}' => $value['policy_no'],
'{INSURER_NAME}' => strtoupper($value['insurer_name']),
'{EMP_ID}' => $value['emp_code'],
'{CORPORATE_NAME}' => $value['client_name'],
'{AGE}' => $value['emp_age'],
'{TPA_NAME}' => $value['tpa_name'],
'{INSURER_BRANCH}' => $value['insurer_branch_city'],
'{RELATION}' => $value['relationship'],
'{FRONT_CARD}' => base_url() . 'public/uploads/template_bg/' . $tpa_id['front_card'], '{FRONT_CARD}' => base_url() . 'public/uploads/template_bg/' . $tpa_id['front_card'],
'{BACK_CARD}' => base_url() . 'public/uploads/logo/' . $tpa_id['back_card'], '{BACK_CARD}' => base_url() . 'public/uploads/template_bg/' . $tpa_id['back_card'],
'{TPA_LOGO}' => base_url() . 'public/uploads/logo/' . $tpa_id['tpa_logo'],
'{INSURER_LOGO}' => base_url() . 'public/assets/images/sample_logo_3.png',
]; ];
// Get the values to replace the placeholders // Get the values to replace the placeholders
$replaceValues = array_values($placeholders); $replaceValues = array_values($placeholders);
// Get the placeholders to search for // Get the placeholders to search for
$searchPlaceholders = array_keys($placeholders); $searchPlaceholders = array_keys($placeholders);
// Replace placeholders with values in HTML content // Replace placeholders with values in HTML content
$htmlContent = str_replace($searchPlaceholders, $replaceValues, $tmplt_data); $htmlContent = str_replace($searchPlaceholders, $replaceValues, $tmplt_data);
echo $htmlContent; echo $htmlContent;
} }

View File

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

View File

@ -731,6 +731,7 @@ class EmployeePolicyModel extends Model
clients.short_name AS client_short_name, clients.short_name AS client_short_name,
cp.policy_start_date, cp.policy_start_date,
cp.policy_no,
policies.name AS policy_name, policies.name AS policy_name,

View File

@ -2,6 +2,10 @@
.table-responsive { .table-responsive {
overflow-x: auto; overflow-x: auto;
} }
.reload:hover {
cursor: pointer;
}
</style> </style>
<div class="col-12"> <div class="col-12">
@ -40,7 +44,7 @@
<tr> <tr>
<td><b><?php echo ($key + 1) ?></b></td> <td><b><?php echo ($key + 1) ?></b></td>
<td><?php echo $file['batch_code'] ?></td> <td><?php echo $file['batch_code'] ?></td>
<td data-toggle="tooltip" data-placement="top" title="<?php echo $file['file_name'] ?>"><?php echo strlen($file['file_name']) > 5 ? substr($file['file_name'], 0, 10) . "..." : $file['file_name'] ?></td> <td class="reload" data-toggle="tooltip" data-placement="top" title="<?php echo $file['file_name'] ?>"><?php echo strlen($file['file_name']) > 5 ? substr($file['file_name'], 0, 10) . "..." : $file['file_name'] ?></td>
<td><?php echo $file['client_short_name'] ?></td> <td><?php echo $file['client_short_name'] ?></td>
<td><?php echo $file['policy_name'] ?></td> <td><?php echo $file['policy_name'] ?></td>
<td><?php echo $file['event_type'] ?></td> <td><?php echo $file['event_type'] ?></td>

View File

@ -193,6 +193,7 @@ function appendPolicies(data) {
} }
$(document).ready(function() { $(document).ready(function() {
$('#clients').on('change', function() { $('#clients').on('change', function() {
var selectedClient = $(this).val(); var selectedClient = $(this).val();
console.log('selectedClient', selectedClient); console.log('selectedClient', selectedClient);

View File

@ -166,11 +166,15 @@ $(document).ready(function() {
// Initialize select2 // Initialize select2
$("#client_id").select2(); $("#client_id").select2();
$("#policy_id").select2(); $("#policy_id").select2();
}); });
// Declare a global variable to store API response data // Declare a global variable to store API response data
var clientPolicies = []; var clientPolicies = [];
var client_id_param = 0;
var client_policy_param = 0;
$(document).ready(function() { $(document).ready(function() {
console.log("document loaded"); console.log("document loaded");
@ -278,8 +282,42 @@ $(document).ready(function() {
}); });
$(window).on("load", function() { $(window).on("load", function() {
console.log("window loaded"); console.log("window loaded");
fetchClientPolicies(); fetchClientPolicies();
// Get the current page URL
const url = window.location.href;
// Create a new URL object
const urlObject = new URL(url);
// Use URLSearchParams to get the query parameters
const params = new URLSearchParams(urlObject.search);
// Get the value of 'client_id' and 'client_policy_id'
client_id_param = params.get('client_id');
client_policy_param = params.get('client_policy_id');
inception_param = params.get('actions');
console.log('client_id:', client_id_param);
console.log('client_policy_id:', client_policy_param);
console.log('inception_param:', inception_param);
if(inception_param != null){
$('#upload-action-type').val('inception').change()
var selectedValue = inception_param;
if (selectedValue !== '') {
$('#file_upload').show();
var fullURL = '<?= base_url("util/download-excel/"); ?>' + selectedValue;
$('#excel_download').attr('href', fullURL);
} else {
$('#file_upload').hide();
$('#excel_download').removeAttr('href');
}
}
}); });
@ -304,6 +342,20 @@ function fetchClientPolicies() {
clientPolicies = (response.data); clientPolicies = (response.data);
// console.log(clientPolicies); // console.log(clientPolicies);
appendClients(clientPolicies); appendClients(clientPolicies);
//this function for reselect the policy
setTimeout(function() {
if (client_id_param != null ) {
var foundPolicies = clientPolicies.find(function(item) {
console.log(typeof item.id)
return item.id == client_id_param;
});
appendPolicies(foundPolicies.policies);
}
}, 500);
//end
} catch (error) { } catch (error) {
console.error('Error parsing API response data:', error); console.error('Error parsing API response data:', error);
} }
@ -462,26 +514,39 @@ function fetchFileError(file_id) {
function appendClients(data) { function appendClients(data) {
console.log('client_id_param', client_id_param)
$.each(data, function(index, item) { $.each(data, function(index, item) {
$('#client_id').append($('<option>', { var option = $('<option>', {
value: item.id, value: item.id,
text: item.client_name text: item.client_name
})); });
if (client_id_param == item.id) {
option.attr('selected', true);
}
$('#client_id').append(option);
}); });
} }
function appendPolicies(data) { function appendPolicies(data) {
$('#policy_id').empty(); $('#policy_id').empty();
$('#policy_id').append($('<option>', { $('#policy_id').append($('<option>', {
value: '', value: '0',
text: 'Select' text: 'Select'
})); }));
$.each(data, function(index, item) { $.each(data, function(index, item) {
$('#policy_id').append($('<option>', { var option = $('<option>', {
value: item.id, value: item.id,
text: item.name text: item.name
})); });
if (client_policy_param == item.id) {
option.attr('selected', true);
}
$('#policy_id').append(option);
}); });
} }
@ -510,6 +575,7 @@ function objectToQueryString(obj) {
} }
function fetchEmpolyeeList(event) { function fetchEmpolyeeList(event) {
event.preventDefault(); // Prevent default action event.preventDefault(); // Prevent default action
var client_id = $('#client_id').val(); var client_id = $('#client_id').val();

View File

@ -46,4 +46,7 @@
} }
}) })
</script> </script>

View File

@ -4,19 +4,16 @@
<div class="col-xl-12"> <div class="col-xl-12">
<div id="accordion" class="mb-3"> <div id="accordion" class="mb-3">
<div class="card mb-1"> <div class="card mb-1">
<h5 class="m-1"> <h5 class="m-1">
<a id="toggleIcon" class="text-dark float-right" data-toggle="collapse" href="#collapseOne" aria-expanded="true"> <a id="toggleIcon" class="text-dark float-right" data-toggle="collapse" href="#collapseOne" aria-expanded="true">
<i id="icon" class="mdi mdi-chevron-down mr-1 text-primary" style="font-size: 28px;"></i> <i id="icon" class="mdi mdi-chevron-down mr-1 text-primary" style="font-size: 28px;"></i>
</a> </a>
</h5> </h5>
<div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordion"> <div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordion">
<div class="card-body"> <div class="card-body">
<!-- <div class="text-center"> --> <!-- <div class="text-center"> -->
<form class="parsley-examples" id="import_export_excel_form" <form class="parsley-examples" id="import_export_excel_form" action="<?php echo base_url() . 'util/import-export' ?>" method="post" enctype="multipart/form-data">
action="<?php echo base_url().'util/import-export'?>" method="post" <input type="hidden" name="<?= csrf_token() ?>" value="<?= csrf_hash() ?>" id="csrf_token">
enctype="multipart/form-data">
<input type="hidden" name="<?= csrf_token() ?>" value="<?= csrf_hash() ?>"
id="csrf_token">
<div class="form-group"> <div class="form-group">
<div class="form-row"> <div class="form-row">
<div class="form-group col-md-4"> <div class="form-group col-md-4">
@ -27,7 +24,7 @@
</div> </div>
<div class="form-group col-md-4"> <div class="form-group col-md-4">
<label>Policy<span class="text-danger">*</span></label> <br /> <label>Policy<span class="text-danger" id="policy_danger">*</span></label> <br />
<select name="client_policy_id" class="form-control" id="policy" required> <select name="client_policy_id" class="form-control" id="policy" required>
<option value="">Select</option> <option value="">Select</option>
</select> </select>
@ -35,18 +32,15 @@
<div class="form-group col-md-4"> <div class="form-group col-md-4">
<label>Insurer/TPA Data<span class="text-danger">*</span></label> <br /> <label>Insurer/TPA Data<span class="text-danger">*</span></label> <br />
<select name="insurer_or_tpa" class="form-control" id="insurer_or_tpa" <select name="insurer_or_tpa" class="form-control" id="insurer_or_tpa" required>
required>
<option value="">Select</option> <option value="">Select</option>
<?php <?php
if(isset($insurer_or_tpa) && count($insurer_or_tpa)) if (isset($insurer_or_tpa) && count($insurer_or_tpa)) {
{ foreach ($insurer_or_tpa as $key => $action) {
foreach($insurer_or_tpa as $key => $action) echo "<option value=" . $key . ">" . $action . "</option>";
{ }
echo "<option value=".$key.">".$action."</option>"; }
} ?>
}
?>
</select> </select>
</div> </div>
</div> </div>
@ -58,30 +52,25 @@
<select name="action_type" class="form-control" id="action_type" required> <select name="action_type" class="form-control" id="action_type" required>
<option value="">Select</option> <option value="">Select</option>
<?php <?php
if(isset($import_or_export) && count($import_or_export)) if (isset($import_or_export) && count($import_or_export)) {
{ foreach ($import_or_export as $key => $action) {
foreach($import_or_export as $key => $action) echo "<option value=" . $key . ">" . $action . "</option>";
{ }
echo "<option value=".$key.">".$action."</option>"; }
} ?>
}
?>
</select> </select>
</div> </div>
<div class="form-group col-md-4"> <div class="form-group col-md-4">
<label>Event<span class="text-danger">*</span></label> <br /> <label>Event<span class="text-danger">*</span></label> <br />
<select name="event_type" class="form-control" id="upload-action-type" <select name="event_type" class="form-control" id="event_type" required>
required>
<option value="">Select</option> <option value="">Select</option>
<?php <?php
if(isset($events) && count($events)) if (isset($events) && count($events)) {
{ foreach ($events as $key => $action) {
foreach($events as $key => $action) echo "<option value=" . $key . ">" . $action . "</option>";
{
echo "<option value=".$key.">".$action."</option>";
}
} }
}
?> ?>
</select> </select>
</div> </div>
@ -93,25 +82,19 @@
<div class="form-row" id="import_excel_btn"> <div class="form-row" id="import_excel_btn">
<div class="form-group col-md-3"> <div class="form-group col-md-3">
<label>Upload file</label> <label>Upload file</label>
<input type="file" name="import_file_data" id="import_file" <input type="file" name="import_file_data" id="import_file" accept=" application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel,application/vnd.oasis.opendocument.spreadsheet" required>
accept=" application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel,application/vnd.oasis.opendocument.spreadsheet"
required>
</div> </div>
<div class="d-flex align-items-center justify-content-start" <div class="d-flex align-items-center justify-content-start" style="margin-top: 18px;">
style="margin-top: 18px;">
<div class="form-group col-md-3"> <div class="form-group col-md-3">
<button id="emp_form_submit_button" type="submit" <button id="emp_form_submit_button" type="submit" class="btn btn-primary waves-effect waves-light justify-content-end">Upload</button>
class="btn btn-primary waves-effect waves-light justify-content-end">Upload</button>
</div> </div>
</div> </div>
</div> </div>
<div class="form-row" id="export_excel_btn"> <div class="form-row" id="export_excel_btn">
<div class="d-flex align-items-center justify-content-start" <div class="d-flex align-items-center justify-content-start" style="margin-top: 18px;">
style="margin-top: 18px;">
<div class="form-group col-md-3"> <div class="form-group col-md-3">
<button id="emp_form_submit_button_2" type="submit" <button id="emp_form_submit_button_2" type="submit" class="btn btn-primary waves-effect waves-light justify-content-end">Download</button>
class="btn btn-primary waves-effect waves-light justify-content-end">Download</button>
</div> </div>
</div> </div>
</div> </div>
@ -125,253 +108,354 @@
</div> </div>
</div> </div>
<!-- end page title --> <!-- end page title -->
<div class="row" id="file_list"> <div class="row" id="file_list">
<?php include('batch_list.php');?> <?php include('batch_list.php'); ?>
</div> </div>
<!-- end row --> <!-- end row -->
</div> </div>
<script> <script>
$(document).ready(function() {
$(document).ready(function() { // Initialize select2
// Initialize select2 $("#client").select2();
$("#client").select2(); $("#policy").select2();
$("#policy").select2(); });
});
// Declare a global variable to store API response data // Declare a global variable to store API response data
var clientPolicies = []; var clientPolicies = [];
$(document).ready(function() { var client_id_param2 = 0;
var client_policy_param2 = 0;
<?php if (session()->has('error')): ?> $(document).ready(function() {
toastr.error('<?= session()->getFlashdata('error') ?>', 'Failed');
<?php endif; ?>
<?php if (session()->has('success')): ?> <?php if (session()->has('error')) : ?>
toastr.success('<?= session()->getFlashdata('success') ?>', 'success'); toastr.error('<?= session()->getFlashdata('error') ?>', 'Failed');
<?php endif; ?> <?php endif; ?>
$('#import_excel_btn').hide(); <?php if (session()->has('success')) : ?>
$('#export_excel_btn').hide(); toastr.success('<?= session()->getFlashdata('success') ?>', 'success');
<?php endif; ?>
// for form submit $('#import_excel_btn').hide();
$("#import_export_excel_forms").submit(function(event) { $('#export_excel_btn').hide();
var action = "<?php echo base_url().'util/import-export'?>" // for form submit
// var action = $(this).attr("action"); $("#import_export_excel_forms").submit(function(event) {
event.preventDefault(); // Prevent default form submission
console.log('submit called');
var isValid = $('#import_export_excel_form').parsley().validate(); var action = "<?php echo base_url() . 'util/import-export' ?>"
// var action = $(this).attr("action");
event.preventDefault(); // Prevent default form submission
console.log('submit called');
if (!isValid) { var isValid = $('#import_export_excel_form').parsley().validate();
console.log('Form is Empty', 'Warning');
return;
}
// Create FormData object if (!isValid) {
var formData = new FormData($(this)[0]); console.log('Form is Empty', 'Warning');
for (var pair of formData.entries()) { return;
console.log(pair[0] + ', ' + pair[1]); }
}
$('.loader').fadeIn(); // Create FormData object
$('.loader-mask').fadeIn(); var formData = new FormData($(this)[0]);
for (var pair of formData.entries()) {
console.log(pair[0] + ', ' + pair[1]);
}
$.ajax({ $('.loader').fadeIn();
url: action, $('.loader-mask').fadeIn();
type: "POST",
data: formData,
processData: false, // Prevent jQuery from automatically processing the data
contentType: false, // Let jQuery handle the content type
success: function(response) {
console.log(response); $.ajax({
if (response.code === 200 && response.status === true) { url: action,
type: "POST",
data: formData,
processData: false, // Prevent jQuery from automatically processing the data
contentType: false, // Let jQuery handle the content type
success: function(response) {
$('.loader').fadeOut(); console.log(response);
$('.loader-mask').delay(350).fadeOut('slow'); if (response.code === 200 && response.status === true) {
$$("#import_export_excel_form")[0].reset()
toastr.success('File Download successs', 'success');
} else if (response.code === 404 && response.status === false) { $('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
$$("#import_export_excel_form")[0].reset()
toastr.success('File Download successs', 'success');
console.error('no data found', response); } else if (response.code === 404 && response.status === false) {
console.error('no data found', response);
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
$("#import_export_excel_form")[0].reset()
toastr.error(response.message, 'Failed');
} else {
console.error('Something went wrong!');
toastr.error('Something went wrong! Try later', 'Error');
// window.location.reload(true);
}
},
error: function(xhr, status, error) {
// Request failed, handle error
console.error("Request failed:", status, error);
$('.loader').fadeOut(); $('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow'); $('.loader-mask').delay(350).fadeOut('slow');
$("#import_export_excel_form")[0].reset() $("#import_export_excel_form")[0].reset()
toastr.error(response.message, 'Failed');
} else {
console.error('Something went wrong!');
toastr.error('Something went wrong! Try later', 'Error'); toastr.error('Something went wrong! Try later', 'Error');
// window.location.reload(true); // window.location.reload(true);
} }
});
}); //end
});
$(window).on("load", function() {
fetchClientPolicies2();
// Get the current page URL
const url = window.location.href;
// Create a new URL object
const urlObject = new URL(url);
// Use URLSearchParams to get the query parameters
const params = new URLSearchParams(urlObject.search);
// Get the value of 'client_id' and 'client_policy_id'
client_id_param2 = params.get('client_id');
client_policy_param2 = params.get('client_policy_id');
actions = params.get('actions');
insurer_or_tpa = params.get('insurer_or_tpa');
event = params.get('event');
console.log('client_id2:', client_id_param2);
console.log('client_policy_id2:', client_policy_param2);
console.log('actions:', actions);
console.log('insurer_or_tpa:', insurer_or_tpa);
console.log('event:', event);
if (inception_param != null) {
$('#action_type').val(actions).change()
$('#event_type').val(event).change()
$('#insurer_or_tpa').val(insurer_or_tpa).change()
var selectedValue = actions;
console.log(selectedValue);
if (selectedValue == '') {
$('#import_excel_btn').hide();
$('#export_excel_btn').hide();
} else if (selectedValue == 'import') {
$('#import_file').prop('required', true);
$('#import_file').attr('name', 'import_file_data');
$('#import_excel_btn').show();
$('#export_excel_btn').hide();
} else if (selectedValue == 'export') {
$('#import_file').removeAttr('name');
$('#import_file').prop('required', false);
$('#import_excel_btn').hide();
$('#export_excel_btn').show();
}
}
});
function fetchClientPolicies2() {
$('#loader').show();
var apiURL = '<?php echo base_url(); ?>' + 'util/clients-with-policies';
$.ajax({
url: apiURL,
method: 'GET',
headers: {
"Content-Type": "application/json",
"X-Requested-With": "XMLHttpRequest"
},
success: function(response) {
// console.log(response.code);
// console.log(response.dataStatus);
// console.log(response.data);
if (response.code === 200 && response.dataStatus === true && response.data !== "") {
try {
clientPolicies = (response.data);
console.log(clientPolicies);
appendClients2(clientPolicies);
//this function for reselect the policy
setTimeout(function() {
if (client_id_param2 != null) {
var foundPolicies = clientPolicies.find(function(item) {
console.log(typeof item.id)
return item.id == client_id_param2;
});
appendPolicies2(foundPolicies.policies);
}
}, 500);
//end
} catch (error) {
console.error('Error parsing API response data:', error);
}
} else if (response.code === 404 && response.dataStatus === false) {
console.error('no data found', response);
} else {
console.error('Something went wrong!');
}
}, },
error: function(xhr, status, error) { error: function(xhr, status, error) {
// Request failed, handle error console.error('Error fetching data from API:', error);
console.error("Request failed:", status, error);
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
$("#import_export_excel_form")[0].reset()
toastr.error('Something went wrong! Try later', 'Error');
// window.location.reload(true);
} }
}); });
}); //end
}); $('#loader').hide();
}
function appendClients2(data) {
$(window).on("load", function() { console.log('client_id_param2', client_id_param2)
fetchClientPolicies2();
});
$.each(data, function(index, item) {
function fetchClientPolicies2() { var option = $('<option>', {
value: item.id,
$('#loader').show(); text: item.client_name
});
var apiURL = '<?php echo base_url();?>' + 'util/clients-with-policies'; if (client_id_param2 == item.id) {
$.ajax({ option.attr('selected', true);
url: apiURL,
method: 'GET',
headers: {
"Content-Type": "application/json",
"X-Requested-With": "XMLHttpRequest"
},
success: function(response) {
// console.log(response.code);
// console.log(response.dataStatus);
// console.log(response.data);
if (response.code === 200 && response.dataStatus === true && response.data !== "") {
try {
clientPolicies = (response.data);
console.log(clientPolicies);
appendClients2(clientPolicies);
} catch (error) {
console.error('Error parsing API response data:', error);
}
} else if (response.code === 404 && response.dataStatus === false) {
console.error('no data found', response);
} else {
console.error('Something went wrong!');
} }
}, $('#client').append(option);
error: function(xhr, status, error) { });
console.error('Error fetching data from API:', error); }
function appendPolicies2(data) {
$('#policy').empty();
$('#policy').append($('<option>', {
value: '0',
text: 'Select'
}));
$.each(data, function(index, item) {
var option = $('<option>', {
value: item.id,
text: item.name
});
if (client_policy_param2 == item.id) {
option.attr('selected', true);
}
$('#policy').append(option);
});
}
$(document).ready(function() {
$('#client').on('change', function() {
var selectedClient = $(this).val();
console.log(selectedClient);
// $('#selectedOptionInfo').text('Selected option: ' + selectedOption);
// Check if the selected option exists in apiData
var foundPolicies = clientPolicies.find(function(item) {
return item.id === selectedClient;
});
console.log(foundPolicies.policies);
appendPolicies2(foundPolicies.policies);
});
});
// Function to convert object to query parameters
function objectToQueryString2(obj) {
return Object.keys(obj).map(key => `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`).join('&');
}
function fetchEmpolyeeList2(event) {
event.preventDefault(); // Prevent default action
var client_id = $('#client').val();
var policy_id = $('#policy').val();
console.log(client_id + '-' + policy_id);
if (client_id == '0' || policy_id == '0') {
alert('Please select values in both dropdowns.');
return;
}
var queryParams = {
client_id: client_id,
policy_id: policy_id
};
const queryString = objectToQueryString2(queryParams);
const apiURL = $('#get-emp-list').attr('href') + "?" + queryString;
console.log(apiURL);
window.location.href = apiURL;
}
//--------------------------------------------------------------------------------------
$('#action_type').change(function() {
var selectedValue = $(this).val();
console.log(selectedValue);
if (selectedValue == '') {
$('#import_excel_btn').hide();
$('#export_excel_btn').hide();
} else if (selectedValue == 'import') {
$('#import_file').prop('required', true);
$('#import_file').attr('name', 'import_file_data');
$('#import_excel_btn').show();
$('#export_excel_btn').hide();
} else if (selectedValue == 'export') {
$('#import_file').removeAttr('name');
$('#import_file').prop('required', false);
$('#import_excel_btn').hide();
$('#export_excel_btn').show();
} }
}); });
$('#loader').hide();
}
document.getElementById('toggleIcon').addEventListener('click', function() {
function appendClients2(data) { var icon = document.getElementById('icon');
$.each(data, function(index, item) { icon.classList.toggle('mdi-chevron-down');
$('#client').append($('<option>', { icon.classList.toggle('mdi-chevron-up');
value: item.id,
text: item.client_name
}));
}); });
}
function appendPolicies2(data) {
$('#policy').empty();
$('#policy').append($('<option>', {
value: '',
text: 'Select'
}));
$.each(data, function(index, item) { $(document).ready(function() {
$('#policy').append($('<option>', {
value: item.id, $('#event_type').change(function() {
text: item.name var selectedVal = $(this).val();
})); console.log(selectedVal);
if (selectedVal === 'correction') {
$('#policy').prop('required', false);
$('#policy_danger').hide();
} else {
$('#policy').prop('required', true);
$('#policy_danger').show();
}
});
}); });
}
$(document).ready(function() {
$('#client').on('change', function() {
var selectedClient = $(this).val();
console.log(selectedClient);
// $('#selectedOptionInfo').text('Selected option: ' + selectedOption);
// Check if the selected option exists in apiData
var foundPolicies = clientPolicies.find(function(item) {
return item.id === selectedClient;
});
console.log(foundPolicies.policies);
appendPolicies2(foundPolicies.policies);
});
});
// Function to convert object to query parameters
function objectToQueryString2(obj) {
return Object.keys(obj).map(key => `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`).join('&');
}
function fetchEmpolyeeList2(event) {
event.preventDefault(); // Prevent default action
var client_id = $('#client').val();
var policy_id = $('#policy').val();
console.log(client_id + '-' + policy_id);
if (client_id == '0' || policy_id == '0') {
alert('Please select values in both dropdowns.');
return;
}
var queryParams = {
client_id: client_id,
policy_id: policy_id
};
const queryString = objectToQueryString2(queryParams);
const apiURL = $('#get-emp-list').attr('href') + "?" + queryString;
console.log(apiURL);
window.location.href = apiURL;
} //--------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------
$('#action_type').change(function() {
var selectedValue = $(this).val();
console.log(selectedValue);
if (selectedValue == '') {
$('#import_excel_btn').hide();
$('#export_excel_btn').hide();
} else if (selectedValue == 'import') {
$('#import_file').prop('required', true);
$('#import_file').attr('name', 'import_file_data');
$('#import_excel_btn').show();
$('#export_excel_btn').hide();
} else if (selectedValue == 'export') {
$('#import_file').removeAttr('name');
$('#import_file').prop('required', false);
$('#import_excel_btn').hide();
$('#export_excel_btn').show();
}
});
document.getElementById('toggleIcon').addEventListener('click', function() {
var icon = document.getElementById('icon');
icon.classList.toggle('mdi-chevron-down');
icon.classList.toggle('mdi-chevron-up');
});
//--------------------------------------------------------------------------------------
</script> </script>

View File

@ -35,23 +35,31 @@
<!-- Right Sidebar --> <!-- Right Sidebar -->
<div class="right-bar"> <div class="right-bar">
<div data-simplebar class="h-100"> <div class="h-100">
<!-- Notifications Header -->
<!-- Tab panes --> <h6 class="font-weight-medium px-3 m-0 py-2 font-13 text-uppercase bg-light fixed-header">
<h6 class="font-weight-medium px-3 m-0 py-2 font-13 text-uppercase bg-light"> <i class="mdi mdi-message-text-outline font-22"></i>
<i class="mdi mdi-message-text-outline font-22"></i><span class="" style="position: relative;bottom: 5px;left: 60px;">Notification</span> <span class="header-title">Notification</span>
</h6> </h6>
<div class="scrollable-content">
<div id="header-bar"> <ul class="list-unstyled" id="messages-list">
<div> <!-- Notifications list items go here -->
<ul class="list-unstyled" id="messages-list"></ul> </ul>
</div>
</div> </div>
<!-- Pending Action Header -->
<h6 class="font-weight-medium px-3 m-0 py-2 font-13 text-uppercase bg-light fixed-header">
</div> <!-- end slimscroll-menu--> <i class="mdi mdi-format-list-checks font-22"></i>
<span class="header-title">Pending Action</span>
</h6>
<div class="scrollable-content">
<ul class="list-unstyled" id="messages-list-2">
<!-- Pending action list items go here -->
</ul>
</div>
</div> <!-- end simplebar -->
</div> </div>
<!-- /Right-bar --> <!-- /Right-bar -->
<!-- Right bar overlay--> <!-- Right bar overlay-->
@ -138,52 +146,57 @@
<script> <script>
var pullNotificationCount = 0;
var pendingActionCount = 0;
$(document).ready(function() { $(document).ready(function() {
function fetchMessages() { function fetchMessages() {
$.ajax({ $.ajax({
url: '<?= base_url('get-notification/') ?>', url: '<?= base_url('get-notification') ?>',
method: 'GET', method: 'GET',
success: function(response) { success: function(response) {
console.log('responce', response) console.log('responce', response)
let unreadCount = 0;
let messagesList = $('#messages-list'); let messagesList = $('#messages-list');
messagesList.empty(); messagesList.empty();
var html = ""; var html = "";
pullNotificationCount = response.length
localStorage.setItem('pullNotificationCount', pullNotificationCount)
response.forEach(message => { response.forEach(message => {
if (!message.is_read) { // if (!message.is_read) {
unreadCount++; // unreadCount++;
} // }
var jasonDecodeData = JSON.parse(message.message_text) var jasonDecodeData = JSON.parse(message.message_text)
var toast_body_css = 'background : #bfd7eb !important;'; var toast_body_css = 'background : #bfd7eb !important;';
var toast_head_css = 'background-color : rgb(2, 168, 181) !important; color :#000; border-bottom: 0;'; var toast_head_css = 'background-color : rgb(2, 168, 181) !important; color :#000; border-bottom: 0;';
var toast_icon = 'mdi mdi-checkbox-marked-circle mr-auto'; var toast_icon = 'mdi mdi-checkbox-marked-circle mr-auto';
var toast_status_word = 'Success'; var toast_status_word = 'Success';
if(jasonDecodeData.msg_status == 'failure'){ if (jasonDecodeData.msg_status == 'failure') {
toast_body_css = 'background : #fdcfcf !important;'; toast_body_css = 'background : #fdcfcf !important;';
toast_head_css = 'background-color : rgb(235 105 105 / 85%) !important; color :#000; border-bottom: 0;'; toast_head_css = 'background-color : rgb(235 105 105 / 85%) !important; color :#000; border-bottom: 0;';
toast_icon = 'mdi mdi-information mr-auto' toast_icon = 'mdi mdi-information mr-auto'
toast_status_word = 'Failure'; toast_status_word = 'Failure';
}else if(jasonDecodeData.msg_status == 'success'){ } else if (jasonDecodeData.msg_status == 'success') {
toast_body_css = 'background : #bfd7eb !important;'; toast_body_css = 'background : #bfd7eb !important;';
toast_head_css = 'background-color : rgb(2, 168, 181) !important; color :#000; border-bottom: 0;'; toast_head_css = 'background-color : rgb(2, 168, 181) !important; color :#000; border-bottom: 0;';
toast_icon = 'mdi mdi-checkbox-marked-circle mr-auto' toast_icon = 'mdi mdi-checkbox-marked-circle mr-auto'
toast_status_word = 'Success'; toast_status_word = 'Success';
} }
var html = ` <li data-id="${message.id}" data-url="${jasonDecodeData.action_url != undefined && jasonDecodeData.action_url != "" ? jasonDecodeData.action_url : 'dashboard/view'}"> var html = ` <li data-id="${message.id}" data-url="${jasonDecodeData.action_url != undefined && jasonDecodeData.action_url != "" ? jasonDecodeData.action_url : 'dashboard/view'}">
@ -213,10 +226,15 @@
$('[data-toggle="tooltip"]').tooltip(); $('[data-toggle="tooltip"]').tooltip();
}); });
}); });
$('#notification_count').html(unreadCount);
} }
}); });
let PNCount = parseInt(localStorage.getItem('pullNotificationCount'));
let PACount = parseInt(localStorage.getItem('pendingActionCount'));
totalcount = PNCount + PACount
$('#notification_count').html(totalcount);
} }
function acknowledgeMessage(messageId) { function acknowledgeMessage(messageId) {
@ -245,10 +263,10 @@
$(this).remove(); $(this).remove();
}); });
} else if ($(event.target).closest('.redirect_page').length > 0){ } else if ($(event.target).closest('.redirect_page').length > 0) {
console.log('redirect_page') console.log('redirect_page')
let messageId = $(this).data('id'); let messageId = $(this).data('id');
let url = $(this).data('url'); let url = $(this).data('url');
console.log('url : ', url) console.log('url : ', url)
@ -265,6 +283,369 @@
setInterval(fetchMessages, 5000); // Fetch messages every minute setInterval(fetchMessages, 5000); // Fetch messages every minute
}); });
$(document).ready(function() {
function fetchPendingAction() {
$.ajax({
url: '<?= base_url('get-pending-action') ?>',
method: 'GET',
success: function(response) {
if(response.length == 0){
pendingActionCount = 0;
localStorage.setItem('pendingActionCount', pendingActionCount);
}
for (let key in response) {
pendingActionCount += response[key].length;
}
let messagesList = $('#messages-list-2');
messagesList.empty();
console.log(response);
response.inception.forEach(function(item, index) {
var queryParams = {
client_id: item.client_id,
client_policy_id: item.client_policy_id,
actions: 'inception'
};
const queryString = objectToQueryString(queryParams);
var url = 'employee/upload?' + queryString
console.log(url)
var toast_body_css = 'background : #bfd7eb !important;';
var toast_head_css = 'background-color : rgb(2, 168, 181) !important; color :#000; border-bottom: 0;';
var toast_icon = 'mdi mdi-checkbox-marked-circle mr-auto';
var toast_status_word = 'Info';
var toast_body_data = item.client_name + ' - ' + item.policy_name;
console.log(toast_body_data);
var html = ` <li data-id="" data-url="${url}">
<div class="p-3">
<div class="toast fade show" role="alert" aria-live="assertive" aria-atomic="true" data-toggle="toast">
<div class="toast-header " style="${toast_head_css}" >
<strong class="${toast_icon}"> ${toast_status_word}</strong>
<button type="button" class="ml-2 mb-1 close rm_msg" data-dismiss="toast" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="toast-body" style="${toast_body_css}">
<strong>Inception Pending</strong><br><br>
<small style="position: relative;bottom: 8px;">${toast_body_data}</small>
<div class="toast-footer">
<a href="#" class="redirect_page" data-toggle="tooltip" data-placement="bottom" title="Click Go to the Page"><small style="margin-right: 142px;position: relative;top: 2px;">see more</small></a>
<small style="position: relative;top: 2px;left: 5px;font-size: 10px;"></small>
</div>
</div>
</div>
</div>
</li>`
messagesList.append(html);
});
response.correction.forEach(function(item, index) {
var queryParams = {
client_id: item.client_id,
event: 'correction',
actions: 'export',
insurer_or_tpa: 'tpa',
};
const queryString = objectToQueryString(queryParams);
var url = 'employee/upload?' + queryString + '#KYC-DOC-tab'
console.log(url)
var toast_body_css = 'background : #bfd7eb !important;';
var toast_head_css = 'background-color : rgb(2, 168, 181) !important; color :#000; border-bottom: 0;';
var toast_icon = 'mdi mdi-checkbox-marked-circle mr-auto';
var toast_status_word = 'Info';
var toast_body_data = item.client_name;
console.log(toast_body_data);
var html = ` <li data-id="" data-url="${url}">
<div class="p-3">
<div class="toast fade show" role="alert" aria-live="assertive" aria-atomic="true" data-toggle="toast">
<div class="toast-header " style="${toast_head_css}" >
<strong class="${toast_icon}"> ${toast_status_word}</strong>
<button type="button" class="ml-2 mb-1 close rm_msg" data-dismiss="toast" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="toast-body" style="${toast_body_css}">
<strong>Correction Pending</strong><br><br>
<small style="position: relative;bottom: 8px;">${toast_body_data}</small>
<div class="toast-footer">
<a href="#" class="redirect_page" data-toggle="tooltip" data-placement="bottom" title="Click Go to the Page"><small style="margin-right: 142px;position: relative;top: 2px;">see more</small></a>
<small style="position: relative;top: 2px;left: 5px;font-size: 10px;"></small>
</div>
</div>
</div>
</div>
</li>`
messagesList.append(html);
});
response.deletion.forEach(function(item, index) {
var queryParams = {
client_id: item.client_id,
client_policy_id: item.client_policy_id,
event: 'deletion',
actions: 'export',
insurer_or_tpa: 'tpa',
};
const queryString = objectToQueryString(queryParams);
var url = 'employee/upload?' + queryString + '#KYC-DOC-tab'
console.log(url)
var toast_body_css = 'background : #bfd7eb !important;';
var toast_head_css = 'background-color : rgb(2, 168, 181) !important; color :#000; border-bottom: 0;';
var toast_icon = 'mdi mdi-checkbox-marked-circle mr-auto';
var toast_status_word = 'Info';
var toast_body_data = item.client_name + ' - ' + item.policy_name;
console.log(toast_body_data);
var html = ` <li data-id="" data-url="${url}">
<div class="p-3">
<div class="toast fade show" role="alert" aria-live="assertive" aria-atomic="true" data-toggle="toast">
<div class="toast-header " style="${toast_head_css}" >
<strong class="${toast_icon}"> ${toast_status_word}</strong>
<button type="button" class="ml-2 mb-1 close rm_msg" data-dismiss="toast" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="toast-body" style="${toast_body_css}">
<strong>Deletion Pending</strong><br><br>
<small style="position: relative;bottom: 8px;">${toast_body_data}</small>
<div class="toast-footer">
<a href="#" class="redirect_page" data-toggle="tooltip" data-placement="bottom" title="Click Go to the Page"><small style="margin-right: 142px;position: relative;top: 2px;">see more</small></a>
<small style="position: relative;top: 2px;left: 5px;font-size: 10px;"></small>
</div>
</div>
</div>
</div>
</li>`
messagesList.append(html);
});
response.si_enhancement.forEach(function(item, index) {
var queryParams = {
client_id: item.client_id,
client_policy_id: item.client_policy_id,
event: 'si_enhancement',
actions: 'export',
insurer_or_tpa: 'tpa',
};
const queryString = objectToQueryString(queryParams);
var url = 'employee/upload?' + queryString + '#KYC-DOC-tab'
console.log(url)
var toast_body_css = 'background : #bfd7eb !important;';
var toast_head_css = 'background-color : rgb(2, 168, 181) !important; color :#000; border-bottom: 0;';
var toast_icon = 'mdi mdi-checkbox-marked-circle mr-auto';
var toast_status_word = 'Info';
var toast_body_data = item.client_name + ' - ' + item.policy_name;
console.log(toast_body_data);
var html = ` <li data-id="" data-url="${url}">
<div class="p-3">
<div class="toast fade show" role="alert" aria-live="assertive" aria-atomic="true" data-toggle="toast">
<div class="toast-header " style="${toast_head_css}" >
<strong class="${toast_icon}"> ${toast_status_word}</strong>
<button type="button" class="ml-2 mb-1 close rm_msg" data-dismiss="toast" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="toast-body" style="${toast_body_css}">
<strong>SI Enhancement Pending</strong><br><br>
<small style="position: relative;bottom: 8px;">${toast_body_data}</small>
<div class="toast-footer">
<a href="#" class="redirect_page" data-toggle="tooltip" data-placement="bottom" title="Click Go to the Page"><small style="margin-right: 142px;position: relative;top: 2px;">see more</small></a>
<small style="position: relative;top: 2px;left: 5px;font-size: 10px;"></small>
</div>
</div>
</div>
</div>
</li>`
messagesList.append(html);
});
response.tpa.forEach(function(item, index) {
var queryParams = {
client_id: item.client_id,
client_policy_id: item.client_policy_id,
event: 'inception',
insurer_or_tpa: 'tpa',
actions: 'export',
};
const queryString = objectToQueryString(queryParams);
var url = 'employee/upload?' + queryString + '#KYC-DOC-tab'
console.log(url)
var toast_body_css = 'background : #bfd7eb !important;';
var toast_head_css = 'background-color : rgb(2, 168, 181) !important; color :#000; border-bottom: 0;';
var toast_icon = 'mdi mdi-checkbox-marked-circle mr-auto';
var toast_status_word = 'Info';
var toast_body_data = item.client_name + ' - ' + item.policy_name;
console.log(toast_body_data);
var html = ` <li data-id="" data-url="${url}">
<div class="p-3">
<div class="toast fade show" role="alert" aria-live="assertive" aria-atomic="true" data-toggle="toast">
<div class="toast-header " style="${toast_head_css}" >
<strong class="${toast_icon}"> ${toast_status_word}</strong>
<button type="button" class="ml-2 mb-1 close rm_msg" data-dismiss="toast" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="toast-body" style="${toast_body_css}">
<strong>TPA ID Update Pending</strong><br><br>
<small style="position: relative;bottom: 8px;">${toast_body_data}</small>
<div class="toast-footer">
<a href="#" class="redirect_page" data-toggle="tooltip" data-placement="bottom" title="Click Go to the Page"><small style="margin-right: 142px;position: relative;top: 2px;">see more</small></a>
<small style="position: relative;top: 2px;left: 5px;font-size: 10px;"></small>
</div>
</div>
</div>
</div>
</li>`
messagesList.append(html);
});
response.uhid.forEach(function(item, index) {
var queryParams = {
client_id: item.client_id,
client_policy_id: item.client_policy_id,
event: 'inception',
insurer_or_tpa: 'insurer',
actions: 'export',
};
const queryString = objectToQueryString(queryParams);
var url = 'employee/upload?' + queryString + '#KYC-DOC-tab'
console.log(url)
var toast_body_css = 'background : #bfd7eb !important;';
var toast_head_css = 'background-color : rgb(2, 168, 181) !important; color :#000; border-bottom: 0;';
var toast_icon = 'mdi mdi-checkbox-marked-circle mr-auto';
var toast_status_word = 'Info';
var toast_body_data = item.client_name + ' - ' + item.policy_name;
console.log(toast_body_data);
var html = ` <li data-id="" data-url="${url}">
<div class="p-3">
<div class="toast fade show" role="alert" aria-live="assertive" aria-atomic="true" data-toggle="toast">
<div class="toast-header " style="${toast_head_css}" >
<strong class="${toast_icon}"> ${toast_status_word}</strong>
<button type="button" class="ml-2 mb-1 close rm_msg" data-dismiss="toast" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="toast-body" style="${toast_body_css}">
<strong>UHID Update Pending</strong><br><br>
<small style="position: relative;bottom: 8px;">${toast_body_data}</small>
<div class="toast-footer">
<a href="#" class="redirect_page" data-toggle="tooltip" data-placement="bottom" title="Click Go to the Page"><small style="margin-right: 142px;position: relative;top: 2px;">see more</small></a>
<small style="position: relative;top: 2px;left: 5px;font-size: 10px;"></small>
</div>
</div>
</div>
</div>
</li>`
messagesList.append(html);
});
localStorage.setItem('pendingActionCount', pendingActionCount)
}
});
}
fetchPendingAction()
$('#messages-list-2').on('click', 'li', function(event) {
console.log('messages-list-2 click li')
if ($(event.target).closest('.rm_msg').length > 0) {
console.log('.rm_msg')
$(this).delay(300).fadeOut('slow', function() {
$(this).remove();
});
} else if ($(event.target).closest('.redirect_page').length > 0) {
console.log('redirect_page')
let url = $(this).data('url');
console.log('url : ', url);
window.location.href = '<?= base_url() ?>' + url;
}
});
})
function objectToQueryString(obj) {
return Object.keys(obj).map(key => `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`).join('&');
}
</script> </script>

View File

@ -1,235 +1,245 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head>
<meta charset="utf-8" /> <head>
<title><?= isset($page_name) ? $page_name : 'NHance'; ?></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta content="" name="description" />
<meta content="NHANCE" name="NHANCE" />
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<!-- App favicon -->
<link rel="shortcut icon" href="<?= base_url()."public"; ?>/assets/images/Nhance_Favi.svg">
<!-- plugin css --> <meta charset="utf-8" />
<link href="<?= base_url()."public"; ?>/assets/libs/admin-resources/jquery.vectormap/jquery-jvectormap-1.2.2.css" rel="stylesheet" type="text/css" /> <title><?= isset($page_name) ? $page_name : 'NHance'; ?></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- third party css --> <meta content="" name="description" />
<link href="<?= base_url()."public"; ?>/assets/libs/datatables.net-bs4/css/dataTables.bootstrap4.min.css" rel="stylesheet" type="text/css" /> <meta content="NHANCE" name="NHANCE" />
<link href="<?= base_url()."public"; ?>/assets/libs/datatables.net-responsive-bs4/css/responsive.bootstrap4.min.css" rel="stylesheet" type="text/css" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" />
<link href="<?= base_url()."public"; ?>/assets/libs/datatables.net-buttons-bs4/css/buttons.bootstrap4.min.css" rel="stylesheet" type="text/css" />
<link href="<?= base_url()."public"; ?>/assets/libs/datatables.net-select-bs4/css//select.bootstrap4.min.css" rel="stylesheet" type="text/css" />
<!-- third party css end -->
<!-- App css -->
<link href="<?= base_url()."public"; ?>/assets/css/bootstrap-creative.min.css" rel="stylesheet" type="text/css" id="bs-default-stylesheet" />
<link href="<?= base_url()."public"; ?>/assets/css/app-creative.min.css" rel="stylesheet" type="text/css" id="app-default-stylesheet" />
<link href="<?= base_url()."public"; ?>/assets/css/bootstrap-creative-dark.min.css" rel="stylesheet" type="text/css" id="bs-dark-stylesheet" />
<link href="<?= base_url()."public"; ?>/assets/css/app-creative-dark.min.css" rel="stylesheet" type="text/css" id="app-dark-stylesheet" />
<!-- icons -->
<link href="<?= base_url()."public"; ?>/assets/css/icons.min.css" rel="stylesheet" type="text/css" />
<!-- <link href="<?= base_url()."public"; ?>/assets/css/bootstrap-material.min.css" rel="stylesheet" type="text/css" id="bs-default-stylesheet" /> -->
<!-- <link href="<?= base_url()."public"; ?>/assets/css/app-material.min.css" rel="stylesheet" type="text/css" id="app-default-stylesheet" /> -->
<!-- <link href="<?= base_url()."public"; ?>/assets/css/bootstrap-editable.css" rel="stylesheet" type="text/css" /> --> <!-- App favicon -->
<link rel="shortcut icon" href="<?= base_url() . "public"; ?>/assets/images/Nhance_Favi.svg">
<!-- Jodit Css -->
<link href="<?= base_url()."public"; ?>/assets/css/jodit.css" rel="stylesheet" type="text/css" />
<!-- plugin css -->
<!-- JQuery CDN --> <link href="<?= base_url() . "public"; ?>/assets/libs/admin-resources/jquery.vectormap/jquery-jvectormap-1.2.2.css" rel="stylesheet" type="text/css" />
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<!-- Sweet Alert CDN --> <!-- third party css -->
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.10.4/dist/sweetalert2.all.min.js"></script> <link href="<?= base_url() . "public"; ?>/assets/libs/datatables.net-bs4/css/dataTables.bootstrap4.min.css" rel="stylesheet" type="text/css" />
<link href="<?= base_url() . "public"; ?>/assets/libs/datatables.net-responsive-bs4/css/responsive.bootstrap4.min.css" rel="stylesheet" type="text/css" />
<link href="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons-bs4/css/buttons.bootstrap4.min.css" rel="stylesheet" type="text/css" />
<link href="<?= base_url() . "public"; ?>/assets/libs/datatables.net-select-bs4/css//select.bootstrap4.min.css" rel="stylesheet" type="text/css" />
<!-- third party css end -->
<!-- select2 --> <!-- App css -->
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/css/select2.min.css" rel="stylesheet" type="text/css"> <link href="<?= base_url() . "public"; ?>/assets/css/bootstrap-creative.min.css" rel="stylesheet" type="text/css" id="bs-default-stylesheet" />
<link href="<?= base_url() . "public"; ?>/assets/css/app-creative.min.css" rel="stylesheet" type="text/css" id="app-default-stylesheet" />
<link href="<?= base_url() . "public"; ?>/assets/css/bootstrap-creative-dark.min.css" rel="stylesheet" type="text/css" id="bs-dark-stylesheet" />
<link href="<?= base_url() . "public"; ?>/assets/css/app-creative-dark.min.css" rel="stylesheet" type="text/css" id="app-dark-stylesheet" />
<!-- icons -->
<link href="<?= base_url() . "public"; ?>/assets/css/icons.min.css" rel="stylesheet" type="text/css" />
<link rel="manifest" href="../manifest.json"> <!-- <link href="<?= base_url() . "public"; ?>/assets/css/bootstrap-material.min.css" rel="stylesheet" type="text/css" id="bs-default-stylesheet" /> -->
<!-- <link href="<?= base_url() . "public"; ?>/assets/css/app-material.min.css" rel="stylesheet" type="text/css" id="app-default-stylesheet" /> -->
<script>
if ('serviceWorker' in navigator) { <!-- <link href="<?= base_url() . "public"; ?>/assets/css/bootstrap-editable.css" rel="stylesheet" type="text/css" /> -->
window.addEventListener('load', function() {
navigator.serviceWorker.register('../service-worker.js').then(function(registration) { <!-- Jodit Css -->
// console.log('Service Worker registration successful with scope:', registration.scope); <link href="<?= base_url() . "public"; ?>/assets/css/jodit.css" rel="stylesheet" type="text/css" />
}, function(err) {
// console.log('Service Worker registration failed:', err);
}); <!-- JQuery CDN -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<!-- Sweet Alert CDN -->
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.10.4/dist/sweetalert2.all.min.js"></script>
<!-- select2 -->
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/css/select2.min.css" rel="stylesheet" type="text/css">
<link rel="manifest" href="../manifest.json">
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', function() {
navigator.serviceWorker.register('../service-worker.js').then(function(registration) {
// console.log('Service Worker registration successful with scope:', registration.scope);
}, function(err) {
// console.log('Service Worker registration failed:', err);
}); });
} });
</script> }
<style> </script>
body[data-sidebar-size=condensed]:not([data-layout=compact]):not(.auth-fluid-pages){ <style>
min-height: 0; body[data-sidebar-size=condensed]:not([data-layout=compact]):not(.auth-fluid-pages) {
} min-height: 0;
.navbar-custom{ }
top: -10px !important;
height: 61px !important;
}
.logo-box{
top: -10px !important;
height: 61px !important;
}
.content-page {
padding: 80px 15px 65px 15px !important;
}
/* Media query for small screens */
@media screen and (min-width: 768px) {
/* Styles for screens with a minimum width of 768px (e.g., tablets and larger devices) */
.navbar-custom .button-menu-mobile {
display: none; /* Hide the button on larger screens */
}
}
.loader-mask { .navbar-custom {
position: fixed; top: -10px !important;
top: 0; height: 61px !important;
left: 0; }
right: 0;
bottom: 0; .logo-box {
background-color: #00000069; top: -10px !important;
z-index: 99999; height: 61px !important;
}
.content-page {
padding: 80px 15px 65px 15px !important;
}
/* Media query for small screens */
@media screen and (min-width: 768px) {
/* Styles for screens with a minimum width of 768px (e.g., tablets and larger devices) */
.navbar-custom .button-menu-mobile {
display: none;
/* Hide the button on larger screens */
}
}
.loader-mask {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #00000069;
z-index: 99999;
}
.loader {
position: absolute;
left: 50%;
top: 50%;
width: 50px;
height: 50px;
font-size: 0;
color: #00c9d0;
display: inline-block;
margin: -25px 0 0 -25px;
text-indent: -9999em;
-webkit-transform: translateZ(0);
-ms-transform: translateZ(0);
transform: translateZ(0);
}
.lead {
font-size: 13px;
}
.loader div {
background-color: #6ad9cf;
display: inline-block;
float: none;
position: absolute;
top: 0;
left: 0;
width: 50px;
height: 50px;
opacity: .5;
border-radius: 50%;
-webkit-animation: ballPulseDouble 2s ease-in-out infinite;
animation: ballPulseDouble 2s ease-in-out infinite;
}
.loader div:last-child {
-webkit-animation-delay: -1s;
animation-delay: -1s;
}
@-webkit-keyframes ballPulseDouble {
0%,
100% {
-webkit-transform: scale(0);
transform: scale(0);
} }
.loader { 50% {
position: absolute; -webkit-transform: scale(1);
left: 50%; transform: scale(1);
top: 50%;
width: 50px;
height: 50px;
font-size: 0;
color: #00c9d0;
display: inline-block;
margin: -25px 0 0 -25px;
text-indent: -9999em;
-webkit-transform: translateZ(0);
-ms-transform: translateZ(0);
transform: translateZ(0);
} }
.lead{ }
font-size:13px;
} @keyframes ballPulseDouble {
.loader div {
background-color: #6ad9cf; 0%,
display: inline-block; 100% {
float: none; -webkit-transform: scale(0);
position: absolute; transform: scale(0);
top: 0;
left: 0;
width: 50px;
height: 50px;
opacity: .5;
border-radius: 50%;
-webkit-animation: ballPulseDouble 2s ease-in-out infinite;
animation: ballPulseDouble 2s ease-in-out infinite;
} }
.loader div:last-child { 50% {
-webkit-animation-delay: -1s; -webkit-transform: scale(1);
animation-delay: -1s; transform: scale(1);
} }
}
@-webkit-keyframes ballPulseDouble { .toast-success {
0%, background-color: #009688 !important;
100% { color: #FFFFFF !important;
-webkit-transform: scale(0); }
transform: scale(0);
}
50% {
-webkit-transform: scale(1);
transform: scale(1);
}
}
@keyframes ballPulseDouble { /* .dataTables_wrapper .text-right {
0%,
100% {
-webkit-transform: scale(0);
transform: scale(0);
}
50% {
-webkit-transform: scale(1);
transform: scale(1);
}
}
.toast-success {
background-color: #009688 !important;
color: #FFFFFF !important;
}
/* .dataTables_wrapper .text-right {
position: relative; position: relative;
} */ } */
.dataTables_wrapper .dt-buttons .buttons-csv, .dataTables_wrapper .dt-buttons .buttons-csv,
.dataTables_wrapper .dt-buttons .buttons-html5 { .dataTables_wrapper .dt-buttons .buttons-html5 {
background-color: #02a8b5; background-color: #02a8b5;
color: #fff; color: #fff;
border-color: #02a8b5; border-color: #02a8b5;
} }
.dataTables_wrapper .dt-buttons .buttons-csv:hover, .dataTables_wrapper .dt-buttons .buttons-csv:hover,
.dataTables_wrapper .dt-buttons .buttons-html5:hover { .dataTables_wrapper .dt-buttons .buttons-html5:hover {
background-color: #028291; background-color: #028291;
border-color: #028291; border-color: #028291;
} }
.modal-full-width { .modal-full-width {
width: 80% !important; width: 80% !important;
/* width: 95% !important; */ /* width: 95% !important; */
/* max-width: none; */ /* max-width: none; */
} }
.modal-body { .modal-body {
/* position: relative; /* position: relative;
flex: 1 1 auto; */ flex: 1 1 auto; */
padding: 2rem !important; padding: 2rem !important;
} }
</style>
<style>
.text-danger-2 {
font-style: italic;
color: black !important;
/* color: #02a8b5 !important; */
font-size: 12px;
}
/* .form-group {
</style>
<style>
.text-danger-2 {
font-style: italic;
color: black !important;
/* color: #02a8b5 !important; */
font-size: 12px;
}
/* .form-group {
margin-bottom: -0.2rem !important; margin-bottom: -0.2rem !important;
} }
.form-row{ .form-row{
width: 84%; width: 84%;
} */ } */
</style>
</style> <style>
.select2-container--default .select2-selection--single {
height: 37px !important;
}
<style> .select2-container--default .select2-selection--single .select2-selection__rendered {
.select2-container--default .select2-selection--single { line-height: 35px !important;
height: 37px !important; }
}
.select2-container--default .select2-selection--single .select2-selection__rendered { .select2-container--default .select2-selection--single .select2-selection__arrow {
line-height: 35px !important; top: 7px !important;
} }
.select2-container--default .select2-selection--single .select2-selection__arrow {
top: 7px !important;
}
</style> </style>
<style> <style>
@ -240,7 +250,8 @@
#messages-list li { #messages-list li {
margin-top: 0; margin-top: 0;
margin-bottom: -25px; /* Adjust this value to reduce the space */ margin-bottom: -25px;
/* Adjust this value to reduce the space */
} }
.toast-footer { .toast-footer {
@ -252,51 +263,76 @@
} }
.right-bar {
width: 300px;
/* Adjust as needed */
overflow: hidden;
}
.fixed-header {
position: relative;
top: 0;
z-index: 1000;
background-color: #f8f9fa !important;
}
.scrollable-content {
max-height: 42vh;
overflow-y: auto;
padding-top: 0px;
}
/* Additional styles to enhance appearance */
.header-title {
position: relative;
bottom: 5px;
left: 60px;
}
</style> </style>
<script> <script>
$(window).on('load', function() { $(window).on('load', function() {
setTimeout(function() { setTimeout(function() {
$('.loader').fadeOut(); $('.loader').fadeOut();
$('.loader-mask').fadeOut('slow'); $('.loader-mask').fadeOut('slow');
}, 2000); }, 2000);
}); });
</script> </script>
</head>
<body class="loading" data-layout-mode="" data-layout='{"mode": "light", "width": "fluid", "menuPosition": "fixed", "sidebar": { "color": "light", "size": "condensed", "showuser": false}, "topbar": {"color": "dark"}, "showRightSidebarOnPageLoad": false}' ></body> </head>
<!-- Preloader --> <body class="loading" data-layout-mode="" data-layout='{"mode": "light", "width": "fluid", "menuPosition": "fixed", "sidebar": { "color": "light", "size": "condensed", "showuser": false}, "topbar": {"color": "dark"}, "showRightSidebarOnPageLoad": false}'></body>
<div class="loader-mask">
<div class="loader">
<img src="<?= base_url()."public" ?>/assets/images/nhance-loader-fast.gif" height="40" width="40" alt="Loading...">
</div>
</div>
<!-- <img src="<?= base_url()."public" ?>/assets/images/nhance-loader-fast.gif" height="40" width="40" alt="Loading..."> --> <!-- Preloader -->
<!-- Begin page --> <div class="loader-mask">
<div id="wrapper"> <div class="loader">
<img src="<?= base_url() . "public" ?>/assets/images/nhance-loader-fast.gif" height="40" width="40" alt="Loading...">
</div>
</div>
<!-- Topbar Start --> <!-- <img src="<?= base_url() . "public" ?>/assets/images/nhance-loader-fast.gif" height="40" width="40" alt="Loading..."> -->
<div class="navbar-custom"> <!-- Begin page -->
<div class="container-fluid"> <div id="wrapper">
<ul class="list-unstyled topnav-menu float-right mb-0">
<li class="d-none d-lg-block"> <!-- Topbar Start -->
<form class="app-search"> <div class="navbar-custom">
<div class="app-search-box dropdown"> <div class="container-fluid">
<div class="input-group"> <ul class="list-unstyled topnav-menu float-right mb-0">
<input type="search" class="form-control" placeholder="Search..." id="top-search">
<div class="input-group-append"> <li class="d-none d-lg-block">
<button class="btn" type="submit"> <form class="app-search">
<i class="fe-search"></i> <div class="app-search-box dropdown">
</button> <div class="input-group">
</div> <input type="search" class="form-control" placeholder="Search..." id="top-search">
</div> <div class="input-group-append">
<!-- <div class="dropdown-menu dropdown-lg" id="search-dropdown"> <button class="btn" type="submit">
<i class="fe-search"></i>
</button>
</div>
</div>
<!-- <div class="dropdown-menu dropdown-lg" id="search-dropdown">
<div class="dropdown-header noti-title"> <div class="dropdown-header noti-title">
<h5 class="text-overflow mb-2">Found <span class="text-danger">09</span> results</h5> <h5 class="text-overflow mb-2">Found <span class="text-danger">09</span> results</h5>
</div> </div>
@ -323,7 +359,7 @@
<div class="notification-list"> <div class="notification-list">
<a href="javascript:void(0);" class="dropdown-item notify-item"> <a href="javascript:void(0);" class="dropdown-item notify-item">
<div class="media"> <div class="media">
<img class="d-flex mr-2 rounded-circle" src="<?= base_url()."public"; ?>/assets/images/users/avatar-2.jpg" alt="Generic placeholder image" height="32"> <img class="d-flex mr-2 rounded-circle" src="<?= base_url() . "public"; ?>/assets/images/users/avatar-2.jpg" alt="Generic placeholder image" height="32">
<div class="media-body"> <div class="media-body">
<h5 class="m-0 font-14">Erwin E. Brown</h5> <h5 class="m-0 font-14">Erwin E. Brown</h5>
<span class="font-12 mb-0">UI Designer</span> <span class="font-12 mb-0">UI Designer</span>
@ -333,7 +369,7 @@
<a href="javascript:void(0);" class="dropdown-item notify-item"> <a href="javascript:void(0);" class="dropdown-item notify-item">
<div class="media"> <div class="media">
<img class="d-flex mr-2 rounded-circle" src="<?= base_url()."public"; ?>/assets/images/users/avatar-5.jpg" alt="Generic placeholder image" height="32"> <img class="d-flex mr-2 rounded-circle" src="<?= base_url() . "public"; ?>/assets/images/users/avatar-5.jpg" alt="Generic placeholder image" height="32">
<div class="media-body"> <div class="media-body">
<h5 class="m-0 font-14">Jacob Deo</h5> <h5 class="m-0 font-14">Jacob Deo</h5>
<span class="font-12 mb-0">Developer</span> <span class="font-12 mb-0">Developer</span>
@ -343,26 +379,26 @@
</div> </div>
</div> --> </div> -->
</div> </div>
</form> </form>
</li> </li>
<li class="dropdown notification-list topbar-dropdown"> <li class="dropdown notification-list topbar-dropdown">
<a class="nav-link dropdown-toggle right-bar-toggle waves-effect waves-light"> <a class="nav-link dropdown-toggle right-bar-toggle waves-effect waves-light">
<i class="fe-bell noti-icon"></i> <i class="fe-bell noti-icon"></i>
<span class="badge badge-danger rounded-circle noti-icon-badge" id="notification_count">0</span> <span class="badge badge-danger rounded-circle noti-icon-badge" id="notification_count">0</span>
</a> </a>
</li> </li>
<li class="dropdown notification-list topbar-dropdown"> <li class="dropdown notification-list topbar-dropdown">
<a class="nav-link dropdown-toggle nav-user mr-0 waves-effect waves-light" data-toggle="dropdown" href="#" role="button" aria-haspopup="false" aria-expanded="false"> <a class="nav-link dropdown-toggle nav-user mr-0 waves-effect waves-light" data-toggle="dropdown" href="#" role="button" aria-haspopup="false" aria-expanded="false">
<img src="<?php echo (get_userProfile() != null && !empty(get_userProfile())) ? get_userProfile() : base_url() . 'public/assets/images/avatar_2x.png'; ?>" alt="user-image" class="rounded-circle"> <img src="<?php echo (get_userProfile() != null && !empty(get_userProfile())) ? get_userProfile() : base_url() . 'public/assets/images/avatar_2x.png'; ?>" alt="user-image" class="rounded-circle">
<span class="pro-user-name ml-1" style="font-size: 16px;" > <span class="pro-user-name ml-1" style="font-size: 16px;">
<?= (isset(get_session_userdata()->first_name) ? get_session_userdata()->first_name : 'NOT SET') ?> <?= (isset(get_session_userdata()->first_name) ? get_session_userdata()->first_name : 'NOT SET') ?>
<!-- <i class="mdi mdi-chevron-down"></i> --> <!-- <i class="mdi mdi-chevron-down"></i> -->
</span> </span>
</a> </a>
<!--<div class="dropdown-menu dropdown-menu-right profile-dropdown "> <!--<div class="dropdown-menu dropdown-menu-right profile-dropdown ">
<div class="dropdown-header noti-title"> <div class="dropdown-header noti-title">
<h6 class="text-overflow m-0">Welcome !</h6> <h6 class="text-overflow m-0">Welcome !</h6>
</div> </div>
@ -394,197 +430,195 @@
</a> </a>
</div>--> </div>-->
</li> </li>
<!-- <li class="dropdown notification-list"> <!-- <li class="dropdown notification-list">
<a href="javascript:void(0);" class="nav-link right-bar-toggle waves-effect waves-light"> <a href="javascript:void(0);" class="nav-link right-bar-toggle waves-effect waves-light">
<i class="fe-settings noti-icon"></i> <i class="fe-settings noti-icon"></i>
</a> </a>
</li> --> </li> -->
<li class="dropdown notification-list">
<a href="<?= base_url('/logout'); ?>" class="nav-link waves-effect waves-light">
<i class="ri-logout-box-r-line" style="font-size: 25px;"></i>
</a>
</li>
</ul>
<!-- LOGO --> <li class="dropdown notification-list">
<div class="logo-box"> <a href="<?= base_url('/logout'); ?>" class="nav-link waves-effect waves-light">
<a href="https://localhost/nhance/dashboard/view" class="logo logo-dark text-center"> <i class="ri-logout-box-r-line" style="font-size: 25px;"></i>
<span class="logo-sm"> </a>
<img src="<?= base_url()."public"; ?>/assets/images/Nhance_Favi.svg" alt="" height="24"> </li>
<!-- <span class="logo-lg-text-light">NHANCE</span> -->
</span>
<span class="logo-lg">
<img src="<?= base_url()."public"; ?>/assets/images/Nhance_Favi.svg" alt="" height="20">
<!-- <span class="logo-lg-text-light">M</span> -->
</span>
</a>
<a href="https://localhost/nhance/dashboard/view" class="logo logo-light text-center"> </ul>
<span class="logo-sm">
<img src="<?= base_url()."public"; ?>/assets/images/Nhance_Favi.svg" alt="" height="24"> <!-- LOGO -->
</span> <div class="logo-box">
<!-- <span class="logo-lg"> <a href="https://localhost/nhance/dashboard/view" class="logo logo-dark text-center">
<img src="<?= base_url()."public"; ?>/assets/images/logo-light.png" alt="" height="20"> <span class="logo-sm">
<img src="<?= base_url() . "public"; ?>/assets/images/Nhance_Favi.svg" alt="" height="24">
<!-- <span class="logo-lg-text-light">NHANCE</span> -->
</span>
<span class="logo-lg">
<img src="<?= base_url() . "public"; ?>/assets/images/Nhance_Favi.svg" alt="" height="20">
<!-- <span class="logo-lg-text-light">M</span> -->
</span>
</a>
<a href="https://localhost/nhance/dashboard/view" class="logo logo-light text-center">
<span class="logo-sm">
<img src="<?= base_url() . "public"; ?>/assets/images/Nhance_Favi.svg" alt="" height="24">
</span>
<!-- <span class="logo-lg">
<img src="<?= base_url() . "public"; ?>/assets/images/logo-light.png" alt="" height="20">
</span> --> </span> -->
</a> </a>
</div>
<ul class="list-unstyled topnav-menu topnav-menu-left m-0">
<li>
<button class="button-menu-mobile waves-effect waves-light">
<i class="fe-menu"></i>
</button>
</li>
<li>
<!-- Mobile menu toggle (Horizontal Layout)-->
<a class="navbar-toggle nav-link" data-toggle="collapse" data-target="#topnav-menu-content">
<div class="lines">
<span></span>
<span></span>
<span></span>
</div>
</a>
<!-- End mobile menu toggle-->
</li>
</ul>
<div class="clearfix"></div>
</div>
</div> </div>
<!-- end Topbar -->
<!-- ========== Left Sidebar Start ========== --> <ul class="list-unstyled topnav-menu topnav-menu-left m-0">
<div class="left-side-menu"> <li>
<button class="button-menu-mobile waves-effect waves-light">
<i class="fe-menu"></i>
</button>
</li>
<li>
<!-- LOGO --> <!-- Mobile menu toggle (Horizontal Layout)-->
<div class="logo-box"> <a class="navbar-toggle nav-link" data-toggle="collapse" data-target="#topnav-menu-content">
<a href="<?= base_url('/dashboard/view')?>" class="logo logo-dark text-center"> <div class="lines">
<span class="logo-sm"> <span></span>
<img src="<?= base_url()."public"; ?>/assets/images/logo-sm-dark.png" alt="" height="24"> <span></span>
<!-- <span class="logo-lg-text-light">nHance</span> --> <span></span>
</span> </div>
<span class="logo-lg">
<img src="<?= base_url()."public"; ?>/assets/images/logo-dark.png" alt="" height="20">
<!-- <span class="logo-lg-text-light">N</span> -->
</span>
</a> </a>
<!-- End mobile menu toggle-->
</li>
<a href="<?= base_url('/dashboard/view')?>" class="logo logo-light text-center">
<span class="logo-sm"> </ul>
<img src="<?= base_url()."public"; ?>/assets/images/Nhance_Favi_white_2.png" alt="" width="30" height="30"> <div class="clearfix"></div>
</span> </div>
<!-- <span class="logo-lg"> </div>
<img src="<?= base_url()."public"; ?>./assets/images/logo-light.png" alt="" height="20"> <!-- end Topbar -->
<!-- ========== Left Sidebar Start ========== -->
<div class="left-side-menu">
<!-- LOGO -->
<div class="logo-box">
<a href="<?= base_url('/dashboard/view') ?>" class="logo logo-dark text-center">
<span class="logo-sm">
<img src="<?= base_url() . "public"; ?>/assets/images/logo-sm-dark.png" alt="" height="24">
<!-- <span class="logo-lg-text-light">nHance</span> -->
</span>
<span class="logo-lg">
<img src="<?= base_url() . "public"; ?>/assets/images/logo-dark.png" alt="" height="20">
<!-- <span class="logo-lg-text-light">N</span> -->
</span>
</a>
<a href="<?= base_url('/dashboard/view') ?>" class="logo logo-light text-center">
<span class="logo-sm">
<img src="<?= base_url() . "public"; ?>/assets/images/Nhance_Favi_white_2.png" alt="" width="30" height="30">
</span>
<!-- <span class="logo-lg">
<img src="<?= base_url() . "public"; ?>./assets/images/logo-light.png" alt="" height="20">
</span> --> </span> -->
</a> </a>
</div> </div>
<div class="h-100" data-simplebar> <div class="h-100" data-simplebar>
<!--- Sidemenu --> <!--- Sidemenu -->
<div id="sidebar-menu"> <div id="sidebar-menu">
<ul id="side-menu"> <ul id="side-menu">
<li>
<a href="<?= base_url('/dashboard/view') ?>">
<i class="ri-dashboard-line"></i>
<span> Dashboard </span>
</a>
</li>
<li>
<a href="<?= base_url('/client/list') ?>">
<i class="mdi mdi-domain"></i>
<span> Clients </span>
</a>
</li>
<li>
<a href="#sidebarDashboards" data-toggle="collapse" class="waves-effect">
<i class="fas fa-user-tie"></i>
<span class="badge badge-success badge-pill float-right">2</span>
<span> Employees </span>
</a>
<div class="collapse" id="sidebarDashboards">
<ul class="nav-second-level">
<li> <li>
<a href="<?= base_url('/dashboard/view')?>"> <a href="<?= base_url('/employee/list') ?>">List</a>
<i class="ri-dashboard-line"></i>
<span> Dashboard </span>
</a>
</li> </li>
<li> <li>
<a href="<?= base_url('/client/list')?>"> <a href="<?= base_url('/employee/upload') ?>">Upload</a>
<i class="mdi mdi-domain"></i>
<span> Clients </span>
</a>
</li> </li>
<li> <li>
<a href="#sidebarDashboards" data-toggle="collapse" class="waves-effect"> <a href="<?= base_url('/employee/endorsement-list') ?>">Endorsement List</a>
<i class="fas fa-user-tie"></i>
<span class="badge badge-success badge-pill float-right">2</span>
<span> Employees </span>
</a>
<div class="collapse" id="sidebarDashboards">
<ul class="nav-second-level">
<li>
<a href="<?= base_url('/employee/list')?>">List</a>
</li>
<li>
<a href="<?= base_url('/employee/upload')?>">Upload</a>
</li>
<li>
<a href="<?= base_url('/employee/endorsement-list')?>">Endorsement List</a>
</li>
</ul>
</div>
</li> </li>
<li>
<a href="#sidebarDashboards" data-toggle="collapse" class="waves-effect">
<i class="ri-database-2-line"></i>
<span class="badge badge-success badge-pill float-right">2</span>
<span> Masters </span>
</a>
<div class="collapse" id="sidebarDashboards">
<ul class="nav-second-level">
<li>
<a href="<?= base_url('/master/insurer/list')?>">Insurer</a>
</li>
<li>
<a href="<?= base_url('/master/tpa/list')?>">TPA</a>
</li>
<li>
<a href="<?= base_url('/master/kyc/list')?>">KYC</a>
</li>
<li>
<a href="<?= base_url('/master/policy/list')?>">Policy</a>
</li>
</ul>
</div>
</li>
<li>
<?php
$sessionData = get_session_userdata();
$currentUrl = base_url();
$parsedUrl = parse_url($currentUrl);
$baseUrl = $parsedUrl['scheme'] . '://' . $parsedUrl['host'] . '/';
$redirectUrl = $baseUrl . 'Ticketing/staff/login?' . http_build_query(['token' => $sessionData]);
?>
<a href="<?php echo $redirectUrl; ?>" target="_blank">
<i class="mdi mdi-lifebuoy"></i>
<span> Tickets </span>
</a>
</li>
<li>
<a href="<?= base_url('/user/list')?>">
<i class=" ri-user-3-line"></i>
<span> Users </span>
</a>
</li>
<!-- <li class="menu-title mt-2">Apps</li> -->
</ul> </ul>
</div> </div>
<!-- End Sidebar --> </li>
</div>
<!-- Sidebar -left -->
<li>
<a href="#sidebarDashboards" data-toggle="collapse" class="waves-effect">
<i class="ri-database-2-line"></i>
<span class="badge badge-success badge-pill float-right">2</span>
<span> Masters </span>
</a>
<div class="collapse" id="sidebarDashboards">
<ul class="nav-second-level">
<li>
<a href="<?= base_url('/master/insurer/list') ?>">Insurer</a>
</li>
<li>
<a href="<?= base_url('/master/tpa/list') ?>">TPA</a>
</li>
<li>
<a href="<?= base_url('/master/kyc/list') ?>">KYC</a>
</li>
<li>
<a href="<?= base_url('/master/policy/list') ?>">Policy</a>
</li>
</ul>
</div>
</li>
<li>
<?php
$sessionData = get_session_userdata();
$currentUrl = base_url();
$parsedUrl = parse_url($currentUrl);
$baseUrl = $parsedUrl['scheme'] . '://' . $parsedUrl['host'] . '/';
$redirectUrl = $baseUrl . 'Ticketing/staff/login?' . http_build_query(['token' => $sessionData]);
?>
<a href="<?php echo $redirectUrl; ?>" target="_blank">
<i class="mdi mdi-lifebuoy"></i>
<span> Tickets </span>
</a>
</li>
<li>
<a href="<?= base_url('/user/list') ?>">
<i class=" ri-user-3-line"></i>
<span> Users </span>
</a>
</li>
<!-- <li class="menu-title mt-2">Apps</li> -->
</ul>
</div> </div>
<!-- Left Sidebar End --> <!-- End Sidebar -->
<!-- ============================================================== --> </div>
<!-- Start Page Content here --> <!-- Sidebar -left -->
<!-- ============================================================== -->
<div class="content-page"> </div>
<div class="content"> <!-- Left Sidebar End -->
<!-- Start Content--> <!-- ============================================================== -->
<div class="container-fluid"> <!-- Start Page Content here -->
<!-- ============================================================== -->
<div class="content-page">
<div class="content">
<!-- Start Content-->
<div class="container-fluid">

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -1,119 +1,65 @@
<body> <body>
<div style="display: flex;gap: 5px;width: 810px;justify-content: center;margin: 0 auto;">
<div class="card" style="border: 1px solid #50505059;width: 420px;min-height: 280px; padding:10px 10px 0px 10px;background-image: url('<?php ?>');background-position: center;background-size: cover;">
<div style="display: flex;justify-content: center;gap: 10px; width:840px;margin:0 auto 15px; page-break-after: auto;"> <div style="position: absolute;left: 590px;" ><img src="{INSURER_LOGO}" alt="" width="70px" height="70px"></div>
<h6 style="margin-top: 20px;margin-bottom: 26px;font-weight: 700;font-size: 14px;">{INSURER_NAME}</h6>
<div style="border: 1px solid black;width: 400px;max-height: 300px;background: url('{FRONT_CARD}');background-size: 100% 100%;padding: 10px;"> <table style="font-size: 14px;margin-top:9px ;margin-left: 20px;">
<tbody>
<tr>
<td>POLICY NO</td>
<td>:</td>
<td>{POLICY_NO}</td>
</tr>
<tr>
<td>Name</td>
<td>:</td>
<td>{NAME}</td>
</tr>
<tr>
<td>TPA ID</td>
<td>:</td>
<td>{TPA_ID}</td>
</tr>
<tr>
<td>age</td>
<td>:</td>
<td>{AGE}</td>
</tr>
<tr>
<td>Employee code</td>
<td>:</td>
<td>{EMP_ID}</td>
</tr>
<tr>
<td>Corporate name</td>
<td>:</td>
<td>{CORPORATE_NAME}</td>
</tr>
<tr>
<td>Valid form</td>
<td>:</td>
<td>{POLICY_DATE}</td>
</tr>
</tbody>
</table>
<div style="display: flex;"> <div style="position: relative;left: 204px;top: 30px;"><img src="{TPA_LOGO}" alt="" width="170px" height="30px" style="object-fit: fill;"></div>
<div><img src="{INSURER_LOGO}" alt="" width="60px"
width="60px" style="object-fit: fill;;"></div> </div>
<div style="text-align: center;font-family: sans-serif;font-weight: 600;margin-top: 10px;"><span>THE NEW
INDIA ASSURANCE CO.LTD.</span> <br><span style="font-size: 15px;">GOOD HEALTH MEDICLAIM
POLICY</span></div>
</div>
<table <div class="card" style="border: 1px solid #50505059;width:420px;min-height: 280px; padding: 0px 20px 5px 0px;">
style="font-family: sans-serif;font-size: 14px;width: 100%;margin-top: 20px;margin-left: 20px;line-height: 20px;"> <h6 style="text-align: center;font-weight: 700;margin: 0px;font-size: 14px;"><u>Terms&conditions</u></h6>
<tbody> <ul style="font-size: 11px;text-align: justify;font-weight: bolder;font-weight: 600;line-height: 13px;margin-bottom: 5px;">
<tr> <li>Submit this card & photo ID for availing cashless insurrer empanelled hospitals</li>
<td>MDID : {TPA_ID}</td> <li>Cashless facility is subject to approved by {TPA_NAME} as per policy terms and conditions</li>
</tr> <li>Validdity of this card is subject to valid policy renewal of policy</li>
<tr> </ul>
<td colspan="2"><b>{NAME}</b></td> </div>
</tr>
<tr>
<td>Certificate No : {UHID}</td>
</tr>
<tr>
<td><span>Sex : {GENDER} </span> <span style="margin-left: 30px;"> Date of Birth : {DOB}</span>
</td>
</tr>
<tr>
<td colspan="2"><b>{SELF_NAME}</b></td>
</tr>
<tr>
<td>Valid form :{POLICY_DATE}</td>
</tr>
</tbody>
</table>
</div>
<div style="border: 1px solid black;width: 400px;max-height: 300px;padding: 5px;">
<div style="font-size: 11px;text-align: center;">The card is for identification purpose only</div>
<table style="width: 100%;text-align: center;font-size: 11px;">
<tbody>
<tr>
<td>General & Claim Enquiry Helpline</td>
<td>Cashless Enquiry helpline</td>
</tr>
</tbody>
</table>
<table style="font-size: 11px;width: 100%;text-align: center;">
<tbody>
<tr>
<td style="border: 1px solid black;">Toll Free : 1800-209-7777 <br>Email :
citibank_chennai@mdindia.com</td>
<td style="border: 1px solid black;">Toll Free : 1800-209-7800 <br>Email:
authorisation@mdindia.com</td>
</tr>
</tbody>
</table>
<div style="font-size: 14px;text-align: center;">CITI MDIndia branch contact</div>
<div>
<table style="text-align: center;width: 100%;font-size: 12px;">
<thead>
<tr>
<th style="border: 1px solid black;">Center</th>
<th style="border: 1px solid black;">Ph.No/Fax.No.</th>
<th style="border: 1px solid black;">Center</th>
<th style="border: 1px solid black;">Ph.No/Fax.No.</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border: 1px solid black;">Chennai</td>
<td style="border: 1px solid black;">9381819401</td>
<td style="border: 1px solid black;">Delhi</td>
<td style="border: 1px solid black;">9310596976</td>
</tr>
<tr>
<td style="border: 1px solid black;">Chennai</td>
<td style="border: 1px solid black;">9381819501</td>
<td style="border: 1px solid black;">Mumbai</td>
<td style="border: 1px solid black;">9320373542</td>
</tr>
<tr>
<td style="border: 1px solid black;">Hyderabad</td>
<td style="border: 1px solid black;">9390838023</td>
<td style="border: 1px solid black;">Pune</td>
<td style="border: 1px solid black;">9371644536</td>
</tr>
<tr>
<td style="border: 1px solid black;">Bangalore</td>
<td style="border: 1px solid black;">9341555665</td>
<td style="border: 1px solid black;">Kolkata</td>
<td style="border: 1px solid black;">9333441389</td>
</tr>
</tbody>
</table>
</div>
<div>
<h6 style="margin: 5px;">TERMS AND CONDITIONS</h6>
<ol style="font-size: 11px;padding-left: 15px;margin-top: 0px;">
<li>Pre authorisation is compulsary from tpa prior to planned admission within 24hours for
emergencies.</li>
<li>Admission for Investigation/Evaluation Not covered.</li>
<li>All terms and conditions of the policy would be applicable</li>
<li>cashless hospitalisation in network hospitals can be obtained in conjunction with this card.an
authorisation letter issued by tpa and photo identification and such as Voters ID,Driver
Licence,Passport,etc.</li>
</ol>
</div>
</div>
</div> </div>
</body> </body>

View File

@ -0,0 +1,89 @@
<body>
<div style="display: flex;justify-content: center;gap: 10px;width: 840px;margin: 0 auto;">
<div style="width: 420px;min-height: 320px; background-image:url({FRONT_CARD});background-size: 100% 100%;border: 1px solid black;line-height: 15px;font-size: 14px;position: relative;">
<h3 style="font-family: sans-serif;padding-left: 89px;margin-top: 35px;">{INSURER_NAME}</h3>
<table style="margin-top: 35px;width: 86%;font-family: sans-serif;padding-left: 20px;">
<tbody>
<tr>
<td>UHID No</td>
<td>:</td>
<td>{UHID}</td>
</tr>
<tr>
<td><b>{NAME}</b></td>
</tr>
<tr>
<td>Age</td>
<td>:</td>
<td>{AGE} years</td>
</tr>
<tr>
<td>Relationship</td>
<td>:</td>
<td>{RELATION}</td>
</tr>
<tr>
<td>Plan Period</td>
<td>:</td>
<td >{POLICY_START_DATE} To {POLICY_DATE}</td>
</tr>
<tr>
<td>Policy No</td>
<td>:</td>
<td>{POLICY_NO}</td>
</tr>
<td>Insurer</td>
<td>:</td>
<td>LCO : {TPA_ID} : {INSURER_BRANCH}</td>
</tbody>
</table>
<div>
<img src="{INSURER_LOGO}" alt="" width="70px" height="70px" style="object-fit: fill;position: absolute;top: 6px;left: 15px;">
</div>
</div>
<div style="width: 420px;min-height: 320px; background-image: url('{BACK_CARD}');background-size: 100% 100%;border: 1px solid black;padding-top: 10px;padding-right: 10px;">
<h4 style="font-family: sans-serif;padding-left: 20px;margin:0px;">Instructions</h4>
<ul style="font-family: sans-serif;font-size: 11px;line-height: 15px;padding-left: 30px;">
<li>Card has to be presented to our network hospitals at the time of the admission while availing cashless</li>
<li>Free authorizationfrom FHPL it must should be taken before 48 hrs for all planed admissions & emergency admissions within 24 hrs of getting admitted to any network hospitals FHPL</li>
<li>The issuance of this card doesnot guarantee cashless benefits /hospitalisation</li>
<li>The card is for the identification purpose.in case of without photograph card.Alternative identification proof such as Voter ID/driving license etc...should be produced</li>
<li>All insurance claim will be processed as per policy terms & conditions</li>
<li>For more details kindly referbook kindly provided</li>
</ul>
</div>
</div>
<div style="margin-left: 20%;margin-top: 50px;">
<h4 style="font-family: sans-serif;margin: 0px;margin-left: 30px;">TERMS AND CONDITIONS:</h4>
<div style="width: 70%;line-height: 30px;">
<ol type="number" style="font-family: sans-serif;">
<li>This card is generated as per the details given by your employer/HR. Incase of any errors in the
details you may confirm the same through your employer for making required corrections.</li>
<li>No physical card will be provided to you. For all requirements you may use this card printed in black
and white or colour.</li>
<li>You can access our network hospitals list from our website https://www.fhpl.net for any information
regarding hospitals available within your location or as required.</li>
<li>For the convenience of the members the guide book is made available on our website
https://www.fhpl.net for understanding protocols in the event of any hospitalization assistance required
for availing cashless service and also to forward any claim where the member has spent on his/her own.</li>
<li>All our network hospitals will accept the printed card and seek the preauthorization from FHPL in the
event of any in-patient hospitalization.</li>
<li>Incase there is no photograph on the ID card, the member has to identify himself/herself with any other
photo-card like: credit card, ration card, electoral card, Company ID card etc in conjunction with this card.</li>
<li>This card is not transferable and cannot be forwarded further to any other person by email/fax.</li>
<li> The card will be visible to any member as long the policy is valid after which this service will be
withdrawn or till such time the member is employed with the current employer.</li>
<li>Usage of this card after the validity/policy expiry will not be entertained.</li>
<li>A fresh card will be generated subjected to the renewal of the policy.</li>
<li>For Any further queries, Please feel free to contact us on Toll—Free Helpline :1800 - 103 - 7519</li>
</ol>
</div>
</div>
</body>

View File

@ -1,61 +1,52 @@
<!DOCTYPE html> <body>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>vidal Ecard</title>
<style>
</style>
</head>
<body>
<div style="display: flex;gap: 5px;width: 840px;justify-content: center;margin: 0 auto;"> <div style="display: flex;gap: 5px;width: 840px;justify-content: center;margin: 0 auto;">
<div class="card" style="border: 1px solid #50505059;width: 420px;min-height: 280px; padding:10px 10px 0px 10px;background-image: url(../image/vidal\ background\ image.jpg);background-position: center;background-size: cover;"> <div class="card" style="border: 1px solid #50505059;width: 420px;min-height: 280px; padding:10px 10px 0px 10px;background-image: url(../image/vidal\ background\ image.jpg);background-position: center;background-size: cover;">
<div><img src="../image/New_India_Assurance.png" alt="" width="70px" height="70px" style="position: absolute;object-fit: fill;right: 16px;top: 17px;"></div> <div style="position: absolute;left: 590px;" ><img src="{INSURER_LOGO}" alt="" width="70px" height="70px"></div>
<h6 style="margin-top: 20px;margin-bottom: 26px;font-weight: 700;font-size: 14px;">THE NEW INDIA COMPANY PRIVATE LIMITED</h6> <h6 style="margin-top: 20px;margin-bottom: 26px;font-weight: 700;font-size: 14px;">{INSURER_NAME}</h6>
<table style="font-size: 14px;margin-top:9px ;margin-left: 20px;"> <table style="font-size: 14px;margin-top:9px ;margin-left: 20px;">
<tbody> <tbody>
<tr> <tr>
<td>Card No</td> <td>POLICY NO</td>
<td>:</td> <td>:</td>
<td>CHE-NI-K0674-001-0000003-A</td> <td>{TPA_ID}</td>
</tr> </tr>
<tr> <tr>
<td>Name</td> <td>Name</td>
<td>:</td> <td>:</td>
<td>BHODANADHAN S</td> <td>{NAME}</td>
</tr> </tr>
<tr> <tr>
<td>Gender</td> <td>Gender</td>
<td>:</td> <td>:</td>
<td>M</td> <td>{NAME}</td>
</tr> </tr>
<tr> <tr>
<td>age</td> <td>age</td>
<td>:</td> <td>:</td>
<td>53 years</td> <td>{AGE}</td>
</tr> </tr>
<tr> <tr>
<td>Employee code</td> <td>Employee code</td>
<td>:</td> <td>:</td>
<td>1015</td> <td>{EMP_ID}</td>
</tr> </tr>
<tr> <tr>
<td>Corporate name</td> <td>Corporate name</td>
<td>:</td> <td>:</td>
<td>KELD ELLENTOFT INDIA PVT LTD</td> <td>{CORPORATE_NAME}</td>
</tr> </tr>
<tr> <tr>
<td>Valid form</td> <td>Valid form</td>
<td>:</td> <td>:</td>
<td>28-04-2024</td> <td>{POLICY_DATE}</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<div style="position: absolute;bottom: 11px;right: 11px;"><img src="../image/logo.png" alt="" width="170px" height="30px" style="object-fit: fill;"></div> <div style="position: relative;left: 225px;top: 30px;"><img src="{TPA_LOGO}" alt="" width="170px" height="30px" style="object-fit: fill;"></div>
</div> </div>
@ -63,50 +54,10 @@
<h6 style="text-align: center;font-weight: 700;margin: 0px;font-size: 14px;"><u>Terms&conditions</u></h6> <h6 style="text-align: center;font-weight: 700;margin: 0px;font-size: 14px;"><u>Terms&conditions</u></h6>
<ul style="font-size: 11px;text-align: justify;font-weight: bolder;font-weight: 600;line-height: 13px;margin-bottom: 5px;"> <ul style="font-size: 11px;text-align: justify;font-weight: bolder;font-weight: 600;line-height: 13px;margin-bottom: 5px;">
<li>Submit this card & photo ID for availing cashless insurrer empanelled hospitals</li> <li>Submit this card & photo ID for availing cashless insurrer empanelled hospitals</li>
<li>Cashless facility is subject to approved by vidal health as per policy terms and conditions</li> <li>Cashless facility is subject to approved by TPA as per policy terms and conditions</li>
<li>Validdity of this card is subject to valid policy renewal of policy</li> <li>Validdity of this card is subject to valid policy renewal of policy</li>
<li>imidiate intimation to vidal health is must incase of any hospitalisation</li>
<li>Download the vidal health mobile app from android iOS to get an E-Card check your policy claim status, Hospital list and more, Give a missed call to 022-4892-6099 from your registered mobile number, or visit www.vidalhealthpa.com,or scan << Qr code on corner >></li>
</ul> </ul>
<div > </div>
<img src="../image/logo.png" alt="" width="100px" height="25px" style="object-fit: fill; rotate: -90deg; position: absolute;left: -34px;bottom: 77px;">
</div>
<div style="font-size: 10px;font-weight: bold; line-height: 10px;margin-left: 40px;width: 70%;">
<div><u>24x7 help line no</u> </div>
<div>
<div>
<span>karnataka/andrapradesh/telangana</span><span style="padding: 0px 5px 0px 5px ;">:</span><span style="font-weight: 400;">080-46267018/1860425051</span>
</div>
<div>
<span>North and east region/gujarat</span><span style="padding: 0px 5px 0px 5px ;">:</span><span style="font-weight: 400;">080-46267021/18604250261</span>
</div>
<div>
<span>Maharastra</span><span style="padding: 0px 5px 0px 5px ;">:</span><span style="font-weight: 400;">080-46267020/18604250254</span>
</div>
<div>
<span>Tamil Nadu</span style="padding: 0px 5px 0px 5px ;">:<span></span><span style="font-weight: 400;">080-46267020/18604250254</span>
</div>
<div>
<span>Kerala</span><span style="padding: 0px 5px 0px 5px ;">:</span><span style="font-weight: 400;">080-46267019/18604250253</span>
</div>
<div>
<span>S.R citizen</span><span style="padding: 0px 5px 0px 5px ;">:</span><span style="font-weight: 400;">080-4626-7070</span>
</div>
<div>
<span style="font-weight: 400;">vidal health insurance <b>TPA</b> pvt limited,tower no 2,</span>
<br>
<span style="font-weight: 400;">First Floor,<b>SJR </b>ipark,<b>EPIP </b>zone ,whitefield,bangalore,</span>
<br>
</div>
<div>
<span style="font-weight: 400;"><b>email:</b>helpvidalhealthpa@gmail.com</span><span style="padding: 0px 5px 0px 5px ;">/</span><span style="font-weight: 400;"><b>website:</b>WWW.vidalhealthp.com</span>
</div>
</div>
</div>
<div><img src="../image/2-play store.png" alt="" width="80px" height="80px" style="position: absolute;top: 158px; right: 90px;"></div>
<div><img src="../image/2-appstore.png" alt="" width="76px" height="80px" style="position: absolute;right: 10px;top:158px;"></div>
</div>
</div> </div>
@ -114,5 +65,4 @@
</body> </body>
</html>

View File

@ -1,119 +1,105 @@
<body> <body>
<div style="display: flex;justify-content: center;gap: 10px; width:840px;margin:0 auto 15px; page-break-after: auto;"> <div style="display: flex;gap: 5px;width: 810px;justify-content: center;margin: 0 auto;">
<div class="card" style="border: 1px solid #50505059;width: 420px;min-height: 280px; padding:10px 10px 0px 10px;background-image: url('{FRONT_CARD}');background-position: center;background-size: cover;">
<div style="border: 1px solid black;width: 400px;max-height: 300px;background: url('{FRONT_CARD}');background-size: 100% 100%;padding: 10px;"> <div style="position: absolute;left: 590px;" ><img src="{INSURER_LOGO}" alt="" width="70px" height="70px"></div>
<h6 style="margin-top: 20px;margin-bottom: 26px;font-weight: 700;font-size: 14px;">{INSURER_NAME}</h6>
<div style="display: flex;"> <table style="font-size: 14px;margin-top:9px ;margin-left: 20px;">
<div><img src="{INSURER_LOGO}" alt="" width="60px"
width="60px" style="object-fit: fill;;"></div>
<div style="text-align: center;font-family: sans-serif;font-weight: 600;margin-top: 10px;"><span>THE NEW
INDIA ASSURANCE CO.LTD.</span> <br><span style="font-size: 15px;">GOOD HEALTH MEDICLAIM
POLICY</span></div>
</div>
<table
style="font-family: sans-serif;font-size: 14px;width: 100%;margin-top: 20px;margin-left: 20px;line-height: 20px;">
<tbody> <tbody>
<tr> <tr>
<td>MDID : {TPA_ID}</td> <td>Card No</td>
<td>:</td>
<td>{POLICY_NO}</td>
</tr> </tr>
<tr> <tr>
<td colspan="2"><b>{NAME}</b></td> <td>Name</td>
<td>:</td>
<td>{NAME}</td>
</tr> </tr>
<tr> <tr>
<td>Certificate No : {UHID}</td> <td>Gender</td>
<td>:</td>
<td>{GENDER}</td>
</tr> </tr>
<tr> <tr>
<td><span>Sex : {GENDER} </span> <span style="margin-left: 30px;"> Date of Birth : {DOB}</span> <td>age</td>
</td> <td>:</td>
<td>{AGE} years</td>
</tr> </tr>
<tr> <tr>
<td colspan="2"><b>{SELF_NAME}</b></td> <td>Employee code</td>
<td>:</td>
<td>{EMP_ID}</td>
</tr> </tr>
<tr> <tr>
<td>Valid form :{POLICY_DATE}</td> <td>Corporate name</td>
<td>:</td>
<td>{CORPORATE_NAME}</td>
</tr>
<tr>
<td>Valid form</td>
<td>:</td>
<td>{POLICY_DATE}</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div>
<div style="border: 1px solid black;width: 400px;max-height: 300px;padding: 5px;"> <div style="position: relative;left: 204px;top: 30px;"><img src="{TPA_LOGO}" alt="" width="170px" height="30px" style="object-fit: fill;"></div>
<div style="font-size: 11px;text-align: center;">The card is for identification purpose only</div>
<table style="width: 100%;text-align: center;font-size: 11px;">
<tbody>
<tr>
<td>General & Claim Enquiry Helpline</td>
<td>Cashless Enquiry helpline</td>
</tr>
</tbody>
</table>
<table style="font-size: 11px;width: 100%;text-align: center;">
<tbody>
<tr>
<td style="border: 1px solid black;">Toll Free : 1800-209-7777 <br>Email :
citibank_chennai@mdindia.com</td>
<td style="border: 1px solid black;">Toll Free : 1800-209-7800 <br>Email:
authorisation@mdindia.com</td>
</tr>
</tbody>
</table>
<div style="font-size: 14px;text-align: center;">CITI MDIndia branch contact</div>
<div>
<table style="text-align: center;width: 100%;font-size: 12px;">
<thead>
<tr>
<th style="border: 1px solid black;">Center</th>
<th style="border: 1px solid black;">Ph.No/Fax.No.</th>
<th style="border: 1px solid black;">Center</th>
<th style="border: 1px solid black;">Ph.No/Fax.No.</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border: 1px solid black;">Chennai</td>
<td style="border: 1px solid black;">9381819401</td>
<td style="border: 1px solid black;">Delhi</td>
<td style="border: 1px solid black;">9310596976</td>
</tr>
<tr>
<td style="border: 1px solid black;">Chennai</td>
<td style="border: 1px solid black;">9381819501</td>
<td style="border: 1px solid black;">Mumbai</td>
<td style="border: 1px solid black;">9320373542</td>
</tr>
<tr>
<td style="border: 1px solid black;">Hyderabad</td>
<td style="border: 1px solid black;">9390838023</td>
<td style="border: 1px solid black;">Pune</td>
<td style="border: 1px solid black;">9371644536</td>
</tr>
<tr>
<td style="border: 1px solid black;">Bangalore</td>
<td style="border: 1px solid black;">9341555665</td>
<td style="border: 1px solid black;">Kolkata</td>
<td style="border: 1px solid black;">9333441389</td>
</tr>
</tbody>
</table>
</div> </div>
<div>
<h6 style="margin: 5px;">TERMS AND CONDITIONS</h6> <div class="card" style="border: 1px solid #50505059;width:420px;min-height: 280px; padding: 0px 20px 5px 0px;">
<ol style="font-size: 11px;padding-left: 15px;margin-top: 0px;"> <h6 style="text-align: center;font-weight: 700;margin: 0px;font-size: 14px;"><u>Terms&conditions</u></h6>
<li>Pre authorisation is compulsary from tpa prior to planned admission within 24hours for <ul style="font-size: 11px;text-align: justify;font-weight: bolder;font-weight: 600;line-height: 13px;margin-bottom: 5px;">
emergencies.</li> <li>Submit this card & photo ID for availing cashless insurrer empanelled hospitals</li>
<li>Admission for Investigation/Evaluation Not covered.</li> <li>Cashless facility is subject to approved by vidal health as per policy terms and conditions</li>
<li>All terms and conditions of the policy would be applicable</li> <li>Validdity of this card is subject to valid policy renewal of policy</li>
<li>cashless hospitalisation in network hospitals can be obtained in conjunction with this card.an <li>imidiate intimation to vidal health is must incase of any hospitalisation</li>
authorisation letter issued by tpa and photo identification and such as Voters ID,Driver <li>Download the vidal health mobile app from android iOS to get an E-Card check your policy claim status, Hospital list and more, Give a missed call to 022-4892-6099 from your registered mobile number, or visit www.vidalhealthpa.com,or scan << Qr code on corner >></li>
Licence,Passport,etc.</li> </ul>
</ol> <div >
<img src="../image/logo.png" alt="" width="100px" height="25px" style="object-fit: fill; rotate: -90deg; position: absolute;left: -34px;bottom: 77px;">
</div>
<div style="font-size: 10px;font-weight: bold; line-height: 10px;margin-left: 40px;width: 70%;">
<div><u>24x7 help line no</u> </div>
<div>
<div>
<span>karnataka/andrapradesh/telangana</span><span style="padding: 0px 5px 0px 5px ;">:</span><span style="font-weight: 400;">080-46267018/1860425051</span>
</div>
<div>
<span>North and east region/gujarat</span><span style="padding: 0px 5px 0px 5px ;">:</span><span style="font-weight: 400;">080-46267021/18604250261</span>
</div>
<div>
<span>Maharastra</span><span style="padding: 0px 5px 0px 5px ;">:</span><span style="font-weight: 400;">080-46267020/18604250254</span>
</div>
<div>
<span>Tamil Nadu</span style="padding: 0px 5px 0px 5px ;">:<span></span><span style="font-weight: 400;">080-46267020/18604250254</span>
</div>
<div>
<span>Kerala</span><span style="padding: 0px 5px 0px 5px ;">:</span><span style="font-weight: 400;">080-46267019/18604250253</span>
</div>
<div>
<span>S.R citizen</span><span style="padding: 0px 5px 0px 5px ;">:</span><span style="font-weight: 400;">080-4626-7070</span>
</div>
<div>
<span style="font-weight: 400;">vidal health insurance <b>TPA</b> pvt limited,tower no 2,</span>
<br>
<span style="font-weight: 400;">First Floor,<b>SJR </b>ipark,<b>EPIP </b>zone ,whitefield,bangalore,</span>
<br>
</div>
<div>
<span style="font-weight: 400;"><b>email:</b>helpvidalhealthpa@gmail.com</span><span style="padding: 0px 5px 0px 5px ;">/</span><span style="font-weight: 400;"><b>website:</b>WWW.vidalhealthp.com</span>
</div>
</div>
</div> </div>
</div>
</div> <div><img src="../image/2-play store.png" alt="" width="80px" height="80px" style="position: absolute;top: 158px; right: 90px;"></div>
<div><img src="../image/2-appstore.png" alt="" width="76px" height="80px" style="position: absolute;right: 10px;top:158px;"></div>
</body> </div>
</div>
</body>