MERGE_TEST_VAPT&HR_CHANGES

This commit is contained in:
Ubuntu 2026-01-28 10:05:41 +05:30
commit fb992a50eb
21 changed files with 2135 additions and 134 deletions

View File

@ -5,28 +5,6 @@ Options -Indexes
# Rewrite engine
# ----------------------------------------------------------------------
## ADDED for - block any script execution inside folder of public
<If "%{REQUEST_URI} =~ m#/(logo|add_image_upload|e_card_imgs|claim_sample_forms|sample_import_excel|writable)/#">
Deny from all
# Disable PHP engine
<IfModule mod_php.c>
php_flag engine off
</IfModule>
# Disable CGI and other executable handlers
Options -ExecCGI
AddHandler cgi-script .php .pl .py .jsp .asp .sh .cgi
# Block access to any script-like files entirely
<FilesMatch "\.(php|php5|php7|phtml|pl|py|cgi|asp|aspx|sh|rb)$">
ForceType text/plain
#Order allow,deny
Deny from all
</FilesMatch>
</If>
# Turning on the rewrite engine is necessary for the following rules and features.
# FollowSymLinks must be enabled for this to work.
<IfModule mod_rewrite.c>

View File

@ -551,7 +551,7 @@ $routes->get("getBackToEnrolledDetails", "EmployeeRestController::getBackToEnrol
//crone job
$routes->cli('cli/enrollOpendAndClose', 'DashboardController::updatePolicyEnrollmentStatus');
$routes->cli("cli/sendCroneRemainderMail", "DashboardController::sendCroneRemainderMail");
$routes->cli('cli/update-emp-policy-status', 'ClientController::updateEmpAndPolicyStatus');
$routes->get('enrollOpendAndClose', 'DashboardController::updatePolicyEnrollmentStatus');
$routes->get("sendCroneRemainderMail", "DashboardController::sendCroneRemainderMail");
// $routes->get("getEmployeePolicy", "EmployeeRestController::getEmployeePolicy");

View File

@ -500,7 +500,7 @@ class EmployeeController extends AdminController
}
}
public function getExcelFileErrors($file_id, $retun_type)
public function getExcelFileErrors($file_id, $retun_type = null)
{
// $file_id = $this->request->uri->getSegment(3);
$empServiceController = new EmployeeServiceController();

View File

@ -235,8 +235,17 @@ class EmployeeRestController extends AdminController
try {
$data = $this->request->getJSON();
$clientPolicyData = $this->clientPolicyModel->where('id',$data[0]->client_policy_id)
->where('is_active', 1)
->first();
if(in_array($clientPolicyData['policy_type_id'], [3,4,5])){
$openForEnrollment = $this->findThePolicyIsOpenForEnrollment($clientPolicyData['base_policy'], $data[0]->emp_code);
}else{
$openForEnrollment = $this->findThePolicyIsOpenForEnrollment($data[0]->client_policy_id, $data[0]->emp_code);
}
//enrolment check
$openForEnrollment = $this->findThePolicyIsOpenForEnrollment($data[0]->client_policy_id, $data[0]->emp_code);
if($openForEnrollment == false){
return $this->respond(['status' => 'failed','code' => 404,'data' => [],'message' => 'Enrollment closed.'], 200);
}
@ -308,7 +317,7 @@ class EmployeeRestController extends AdminController
}
}
} catch (\Exception $e) {
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage(),'message' => "Action failed."], 500);
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage() . $e->getLine(),'message' => "Action failed."], 500);
}
}
@ -395,6 +404,8 @@ class EmployeeRestController extends AdminController
}else{
$enrollment_dates = $this->getEnrollmentDates($client_policy_id, $emp_code);
$data['employee_id']= $employee_id;
$data['client_policy_id']= $client_policy_id;
$data['basic_cover_si']= $basic_cover_si;
@ -405,6 +416,9 @@ class EmployeeRestController extends AdminController
if(!empty($other_employee_policy_data)){
$data['enrollment_open_date']= $other_employee_policy_data['enrollment_open_date'] ?? null;
$data['enrollment_close_date']= $other_employee_policy_data['enrollment_close_date'] ?? null;
}else{
$data['enrollment_open_date'] = $enrollment_dates['enrollment_open_date'] ?? null;
$data['enrollment_close_date'] = $enrollment_dates['enrollment_close_date'] ?? null;
}
// dd($data);
@ -550,7 +564,7 @@ class EmployeeRestController extends AdminController
$this->employeeModel->where('id', $this->request->getGet('id') )
->where('is_active', 1 )
->set(array('is_active'=> 0 ))
->set(['emp_status' => 'truncated', 'is_active' => 0])
->update();
}
@ -564,7 +578,7 @@ class EmployeeRestController extends AdminController
$query->where('client_policy_id', $clientPolicyId);
}
$query->set(['is_active' => 0])->update();
$query->set(['status' => 'truncated', 'is_active' => 0])->update();
return $this->respond(['status' => 'success','code' => 200,'data' =>[] ], 200);
@ -590,7 +604,17 @@ class EmployeeRestController extends AdminController
// print_r($requestData);
// dd($requestData);
$openForEnrollment = $this->findThePolicyIsOpenForEnrollment($requestData[0]->client_policy_id, $requestData[0]->emp_code);
$clientPolicyData = $this->clientPolicyModel->where('id',$requestData[0]->client_policy_id)
->where('is_active', 1)
->first();
if(in_array($clientPolicyData['policy_type_id'], [3,4,5])){
$openForEnrollment = $this->findThePolicyIsOpenForEnrollment($clientPolicyData['base_policy'], $requestData[0]->emp_code);
}else{
$openForEnrollment = $this->findThePolicyIsOpenForEnrollment($requestData[0]->client_policy_id, $requestData[0]->emp_code);
}
if($openForEnrollment == false){ return $this->respond(['status' => 'failed','code' => 404,'data' => 'Enrollment closed'], 404); }
foreach ($requestData as $key => $value)
@ -600,6 +624,7 @@ class EmployeeRestController extends AdminController
->where('client_policy_id', $value->client_policy_id)
->where('is_active', 1 )
->findAll();
// dd($checkIfExist);
if ($checkIfExist) {
@ -608,10 +633,14 @@ class EmployeeRestController extends AdminController
}else{
$enrollment_dates = $this->getEnrollmentDates($value->client_policy_id, $requestData[0]->emp_code);
$data['employee_id']= $value->employee_id;
$data['client_policy_id']= $value->client_policy_id;
$data['basic_cover_si']= $value->basic_cover_si;
$data['status'] = 'draft';
$data['enrollment_open_date'] = $enrollment_dates['enrollment_open_date'] ?? null;
$data['enrollment_close_date'] = $enrollment_dates['enrollment_close_date'] ?? null;
$this->employeePolicyModel->insert($data);
}
@ -1631,8 +1660,8 @@ class EmployeeRestController extends AdminController
}
if(!empty($result) && $this->request->getGet('policy') == 'GMC'){
// return $this->respond(['status' => 'success','code' => 200,'data' => $result], 200);
echo json_encode(['status' => 'success','code' => 200,'data' => $result], JSON_PRETTY_PRINT | JSON_PRESERVE_ZERO_FRACTION);
return $this->respond(['status' => 'success','code' => 200,'data' => $result], 200);
// echo json_encode(['status' => 'success','code' => 200,'data' => $result], JSON_PRETTY_PRINT | JSON_PRESERVE_ZERO_FRACTION);
}else{
return $this->respond(['status' => 'success','code' => 200,'data' => []], 200);
}
@ -2138,14 +2167,14 @@ class EmployeeRestController extends AdminController
if (!empty($pre_client_id)) {
$client = $this->clientModel->where('id', $pre_client_id)->first();
$client = $this->clientModel->where('md5(id)', $pre_client_id)->first();
if ($client) {
$client['client_logo'] = base_url() . 'public/uploads/logo/' . $client['client_logo'];
$clientPolicy = $this->clientPolicyModel
->where('client_id', $pre_client_id)
->where('md5(client_id)', $pre_client_id)
->where('client_branch_id', $pre_branch_id)
->findAll();
@ -2240,12 +2269,18 @@ class EmployeeRestController extends AdminController
try {
$emp_code = $this->request->getGet('emp_code');
$client_id = $this->request->getGet('client_id');
$client_branch_id = $this->request->getGet('client_branch_id');
$addOnEmployeeData = $this->employeeModel->where('is_active', 1 )
->where('emp_code',$this->request->getGet('emp_code'))
->where('client_id',$this->request->getGet('client_id'))
->where('client_branch_id',$this->request->getGet('client_branch_id'))
->where('is_addon_value',1)->findAll();
$policyIds = $this->getEmployeeAddOnPolicies($emp_code, $client_id, $client_branch_id);
// dd($policyIds);
$clientPolicy = $this->clientPolicyModel->select("
@ -2276,7 +2311,11 @@ class EmployeeRestController extends AdminController
->where('policy_status', 1)
->where('is_active', 1)
->where('enrolment_visibility', 1)
->whereIn('id', $policyIds)
->findAll();
if(empty($policyIds)){
return $this->respond(['status' => 'failed','code' => 404,'data' => []], 200);
}
if(count($clientPolicy))
{
@ -2320,6 +2359,13 @@ class EmployeeRestController extends AdminController
}
if(isset($array['base_policy']) && !empty($array['base_policy']))
{
$openForEnrollmentValue = (int) $this->findThePolicyIsOpenForEnrollment($array['base_policy'], $emp_code);
}else{
$openForEnrollmentValue = $array['open_for_enrollment'];
}
$policyTypeData = $this->policyTypeModel->where('id',$array['policy_type_id'])->get()->getRow();
$responce['policy_name'] = $policyTypeData->long_name;
@ -2329,7 +2375,7 @@ class EmployeeRestController extends AdminController
$responce['client_id'] = $array['client_id'];
$responce['client_policy_id'] = $array['id'];
$responce['is_addon'] = $array['is_addon'];
$responce['OpenForEnrollment'] = $array['open_for_enrollment'];
$responce['OpenForEnrollment'] = $openForEnrollmentValue;
$responce['policy_terms'] = $decodedArray;
$responce['policy_type_id'] = $array['policy_type_id'];
//$responce['is_member_modify_allowed'] = $array['is_member_modify_allowed'];
@ -2540,8 +2586,8 @@ class EmployeeRestController extends AdminController
if($this->request->getGet('policy') == 'GMC-DEPENDENT-ADDON'){
// return $this->respond(['status' => 'success','code' => 200,'data' => ['gmc_dependent_addon'=>$responce]], 200);
echo json_encode(['status' => 'success','code' => 200,'data' => ['gmc_dependent_addon'=>$responce]], JSON_PRETTY_PRINT | JSON_PRESERVE_ZERO_FRACTION);
return $this->respond(['status' => 'success','code' => 200,'data' => ['gmc_dependent_addon'=>$responce]], 200);
// echo json_encode(['status' => 'success','code' => 200,'data' => ['gmc_dependent_addon'=>$responce]], JSON_PRETTY_PRINT | JSON_PRESERVE_ZERO_FRACTION);
}
//array_push($PolicyData, $responce);
@ -2708,8 +2754,18 @@ class EmployeeRestController extends AdminController
$array_list = [];
foreach ($client_policy_id as $key => $value)
{
// $policy = $this->clientPolicyModel->where('id',$value)->where('open_for_enrollment',1)->find();
$policy = $this->findThePolicyIsOpenForEnrollment($client_policy_id, $emp_code);
$clientPolicyData = $this->clientPolicyModel->where('client_id',$client_id)
->where('id',$value)
->where('is_active', 1)
->first();
if(in_array($clientPolicyData['policy_type_id'], [3,4,5])){
$policy = $this->findThePolicyIsOpenForEnrollment($clientPolicyData['base_policy'], $emp_code);
}else{
$policy = $this->findThePolicyIsOpenForEnrollment($value, $emp_code);
}
if($policy)
{
$this->myLogger->logme("error", 'client policy id = '.$value.' is open for enrollment');
@ -2752,7 +2808,6 @@ class EmployeeRestController extends AdminController
}
}else { $this->myLogger->logme("error", 'client policy id = '.$value.' is not open for enrollment');}
}
@ -3048,7 +3103,7 @@ class EmployeeRestController extends AdminController
$ClientPolicyData = $this->clientPolicyModel->select('client_policy.id as client_policy_id , client_policy.client_id as client_id, client_policy.policy_type_id as policy_type_id, client_policy.is_addon as is_addon , client_policy.open_for_enrollment as OpenForEnrollment , client_policy.inception_type as inception_type, client_policy.policy_no as policy_no, client_policy.insurer_id as insurer_id, DATE_FORMAT(client_policy.policy_end_date, "%d-%m-%Y") AS policy_expiry_date ')
->where('client_policy.client_id', $this->request->getGet('client_id') )
->where('md5(client_policy.client_id)', $this->request->getGet('client_id') )
->where('client_policy.client_branch_id', $this->request->getGet('client_branch_id') )
->where('client_policy.is_active', 1 )
->where('client_policy.policy_status', 1)
@ -4357,4 +4412,100 @@ class EmployeeRestController extends AdminController
}
}
public function getEnrollmentDates($client_policy_id, $emp_code)
{
$enrollment_open_date = null;
$enrollment_close_date = null;
$clientPolicyData = $this->clientPolicyModel->where('id', $client_policy_id)
->where('is_active', 1)
->first();
if(in_array($clientPolicyData['policy_type_id'] ?? null, [3,4,5])){
$policy = $this->employeePolicyModel
->select('employee_polices.enrollment_open_date, employee_polices.enrollment_close_date')
->join('employees', 'employee_polices.employee_id = employees.id')
->where('employees.emp_code',$emp_code)
->where('employee_polices.client_policy_id', $clientPolicyData['base_policy'])
->where('employee_polices.enrollment_open_date <= CURDATE()', null, false)
->where('employee_polices.enrollment_close_date >= CURDATE()', null, false)
->where('employee_polices.enrollment_open_date is not null')
->where('employee_polices.enrollment_close_date is not null')
->where('employees.is_active', 1)
->where('employee_polices.is_active', 1)
->whereIn('employee_polices.status', ['draft', 'enrolled'])
->whereIn('employees.emp_status', ['draft', 'enrolled'])
->first();
$enrollment_open_date = $policy['enrollment_open_date'] ?? null;
$enrollment_close_date = $policy['enrollment_close_date'] ?? null;
}
return [
'enrollment_open_date' => $enrollment_open_date,
'enrollment_close_date' => $enrollment_close_date,
];
}
public function getEmployeeAddOnPolicies($emp_code, $client_id, $client_branch_id): array
{
$data = $this->employeeModel
->select("
client_policy.id AS gmc_client_policy_id,
(
SELECT id FROM client_policy
WHERE policy_type_id = 3
AND base_policy = gmc_client_policy_id
LIMIT 1
) AS gmc_parent_policy_id,
(
SELECT id FROM client_policy
WHERE policy_type_id = 4
AND base_policy = gmc_client_policy_id
LIMIT 1
) AS gmc_topup_policy_id
")
->join('employee_polices', 'employees.id = employee_polices.employee_id')
->join('client_policy', 'employee_polices.client_policy_id = client_policy.id')
->whereIn('employees.emp_status', ['draft', 'enrolled'])
->whereIn('employee_polices.status', ['draft', 'enrolled'])
->where([
'employees.is_active' => 1,
'employee_polices.is_active' => 1,
'client_policy.policy_type_id' => 2,
'employees.family_floater_key' => 'self',
'employees.emp_code' => $emp_code ?? null,
'employees.client_id' => $client_id ?? null,
'employees.client_branch_id' => $client_branch_id ?? null,
])
->orderBy('employee_polices.id', 'desc')
->first();
// dd($data);
// dd(db_connect()->getLastQuery());
if (!empty($data) && !empty($data['gmc_parent_policy_id'])) {
$getParentTopUp = $this->clientPolicyModel
->select('id AS gmc_parent_topup_policy_id')
->where('is_active', 1)
->where('policy_type_id', 5) // parent Top-Up
->where('base_policy', $data['gmc_parent_policy_id'])
->first();
}
if (empty($data)) {
return [];
}
$policyIds[] = $data['gmc_topup_policy_id'];
$policyIds[] = $data['gmc_parent_policy_id'];
$policyIds[] = $getParentTopUp['gmc_parent_topup_policy_id'] ?? null;
return $policyIds;
}
}

View File

@ -61,9 +61,7 @@ class LoginController extends BaseController
set_session_data($session_data);
// Bind session to device
set_session_data(['fingerprint' => hash('sha256',
($this->request->getUserAgent()->getAgentString() . '|' . ($this->request->getIPAddress()
)))]);
set_session_data(['fingerprint' => generateFingerprint()]);
log_message('error', 'Set The UserId : `'. $user->id .'` in Session');
log_message('error', 'User Login Sucessfully');

View File

@ -797,6 +797,8 @@ class RestAuthenticationController extends AdminController
$decoded = json_decode($HRAccessData['allowed_modules'], true);
$getAllhrData[$key]['allowed_modules'] = $decoded;
$HRAccessData['pre_client_id'] = md5($HRAccessData['pre_client_id']);
$HRAccessData['post_client_id'] = md5($HRAccessData['post_client_id']);
$token = JWTToken::encode($HRAccessData);
$getAllhrData[$key]['token'] = $token;

View File

@ -22,9 +22,7 @@ class AuthMVC implements FilterInterface
// }
// Fingerprint validation
$fp = hash('sha256',
$request->getUserAgent()->getAgentString() . '|' . $request->getIPAddress()
);
$fp = generateFingerprint();
if (session()->get('fingerprint') !== $fp) {
return AuthLogout::logout();

View File

@ -39,6 +39,7 @@ class JWTToken
}else{
$models = new LevelContactModel();
$id = $request_data['pre_hr_id'];
$models->update($id, $data);
}

View File

@ -118,7 +118,8 @@ if (!function_exists('check_role')) {
{
// $ci =& get_instance();
$session = \Config\Services::session();
return $session->get('role');
return $role_id = isset(get_session_userdata()->role) ? get_session_userdata()->role : null;
}
}

View File

@ -557,7 +557,7 @@ if (!function_exists('change_date_format')) {
$date = DateTime::createFromFormat($source_format, $date_str);
if (!$date) {
// throw new Exception("Invalid date string for source format: $source_format");
log_message('error', "❌ Date format error : Invalid date string | Params => date_str: {$date_str}, source_format: {$source_format}, output_format: {$output_format}");
// log_message('error', "❌ Date format error : Invalid date string | Params => date_str: {$date_str}, source_format: {$source_format}, output_format: {$output_format}");
return null;
}
return $date->format($output_format);
@ -568,7 +568,7 @@ if (!function_exists('change_date_format')) {
$date = DateTime::createFromFormat($source_format, $date_str);
if (!$date) {
// throw new Exception("Invalid date string for source format: $source_format");
log_message('error', "❌ Date format error : Invalid date string | Params => date_str: {$date_str}, source_format: {$source_format}, output_format: {$output_format}");
// log_message('error', "❌ Date format error : Invalid date string | Params => date_str: {$date_str}, source_format: {$source_format}, output_format: {$output_format}");
return null;
}
return $date->format('Y-m-d'); // MySQL default format
@ -585,15 +585,15 @@ if (!function_exists('change_date_format')) {
// If no format matches, throw an exception
$allowed_placeholders = implode(', ', $allowed_formats);
// throw new Exception("Invalid date string format. Allowed formats: $allowed_placeholders");
log_message(
'error',
"❌ Date format error: Invalid date string. Allowed formats: {$allowed_placeholders} | Params => date_str: {$date_str}, source_format: {$source_format}, output_format: {$output_format}"
);
// log_message(
// 'error',
// "❌ Date format error: Invalid date string. Allowed formats: {$allowed_placeholders} | Params => date_str: {$date_str}, source_format: {$source_format}, output_format: {$output_format}"
// );
return null;
}
} catch (Exception $e) {
// return "Error: " . $e->getMessage();
log_message('error', "❌ Date format error: {$e->getMessage()} | Params => date_str: {$date_str}, source_format: {$source_format}, output_format: {$output_format}");
// log_message('error', "❌ Date format error: {$e->getMessage()} | Params => date_str: {$date_str}, source_format: {$source_format}, output_format: {$output_format}");
return null;
}
@ -756,3 +756,34 @@ if (!function_exists('validateExcelFile')) {
return true;
}
}
function getRealClientIP()
{
$request = service('request');
if (!empty($_SERVER['HTTP_CF_CONNECTING_IP'])) {
return $_SERVER['HTTP_CF_CONNECTING_IP'];
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
return explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0];
}
return $request->getIPAddress();
}
function generateFingerprint()
{
$request = service('request');
$ua = $request->getUserAgent()->getAgentString();
$ip = getRealClientIP();
// echo $ip;die();
// Use only subnet (first 3 blocks) to tolerate IP change
$ipParts = explode('.', $ip);
$ipSubnet = $ipParts[0] . '.' . $ipParts[1] . '.' . $ipParts[2];
// $secret = env('app.sessionFingerprintSalt');
// return hash('sha256', $ua . '|' . $ipSubnet . '|' . $secret);
return hash('sha256', $ua . '|' . $ipSubnet );
}

View File

@ -163,8 +163,10 @@ class EmployeePolicyModel extends Model
->orderBy('employee_polices.employee_id', 'ASC');
// Conditionally add where clauses
if ($client_id != 0 && !empty($client_id)) {
// Conditionally add where clauses
if (is_string($client_id) && preg_match('/^[a-f0-9]{32}$/i', $client_id)) {
$result->where('MD5(emp.client_id)', $client_id);
} else if ($client_id != 0 && !empty($client_id)) {
$result->where('emp.client_id', $client_id);
}
if ($branch_id != 0 && !empty($branch_id)) {

View File

@ -113,7 +113,16 @@
class="mdi mdi-dots-horizontal"></i></a>
<div class="dropdown-menu dropdown-menu-right">
<?php if ($file['status'] == 'failed') { ?>
<a data-id="<?= htmlspecialchars(json_encode(['client_id' => $file['client_id'], 'client_policy_id' => $file['client_policy_id'], 'client_branch_id' => $file['client_branch_id'], 'action' => $file['action']])) ?>" data-toggle="modal" data-target="#file-upload-modal" class="dropdown-item upload_button" href="#"><i class="mdi mdi-upload mr-2 text-muted font-18 vertical-middle"></i>Re-Upload</a>
<a data-id="<?=
htmlspecialchars(json_encode([
'client_id' => $file['client_id'],
'client_policy_id' => $file['client_policy_id'],
'client_branch_id' => $file['client_branch_id'],
'enrollment_open_date' => change_date_format($file['enrollment_open_date'] , 'Y-m-d', 'd/m/Y'),
'enrollment_close_date' => change_date_format($file['enrollment_close_date'], 'Y-m-d', 'd/m/Y' ),
'action' => $file['action']
]))
?>" data-toggle="modal" data-target="#file-upload-modal" class="dropdown-item upload_button" href="#"><i class="mdi mdi-upload mr-2 text-muted font-18 vertical-middle"></i>Re-Upload</a>
<?php } ?>
<a class="dropdown-item" href="<?= base_url("util/download-file-list/") . $file['id']; ?>"><i class="mdi mdi-download mr-2 text-muted font-18 vertical-middle"></i>Download</a>
@ -171,6 +180,8 @@
<input type="hidden" id="file_client_id" name="client_id">
<input type="hidden" id="file_policy_id" name="policy_id">
<input type="hidden" id="file_branch_id" name="branch_id">
<input type="hidden" id="file_enrollment_open_date" name="enrollment_open_date">
<input type="hidden" id="file_enrollment_close_date" name="enrollment_close_date">
<input type="hidden" id="file_upload_actions" name="upload-action-type">
<input type="file" id="fileInput" name="emplist" required
accept=" application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel,application/vnd.oasis.opendocument.spreadsheet">
@ -262,6 +273,9 @@ $('body').on('click', '.upload_button', function() {
$('#file_client_id').val(fileId.client_id)
$('#file_policy_id').val(fileId.client_policy_id)
$('#file_branch_id').val(fileId.client_branch_id)
$('#file_enrollment_open_date').val(fileId.enrollment_open_date)
$('#file_enrollment_close_date').val(fileId.enrollment_close_date)
$('#file_branch_id').val(fileId.client_branch_id)
$('#file_upload_actions').val(fileId.action)
})

View File

@ -62,88 +62,69 @@
<!-- /Right-bar -->
<!-- Right bar overlay-->
<!-- Right bar overlay -->
<div class="rightbar-overlay"></div>
<!-- Vendor js -->
<script src="<?= base_url() . "public"; ?>/assets/js/vendor.min.js"></script>
<!-- ============================= -->
<!-- Core Vendor JS (Local) -->
<!-- ============================= -->
<script src="<?= base_url("public/assets/js/vendor.min.js"); ?>"></script>
<!-- KNOB JS -->
<script src="<?= base_url() . "public"; ?>/assets/libs/jquery-knob/jquery.knob.min.js"></script>
<!-- Apex js-->
<script src="<?= base_url() . "public"; ?>/assets/libs/apexcharts/apexcharts.min.js"></script>
<!-- ============================= -->
<!-- Charts -->
<!-- ============================= -->
<script src="<?= base_url("public/assets/libs/apexcharts/apexcharts.min.js"); ?>"></script>
<!-- third party js -->
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net/js/jquery.dataTables.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-bs4/js/dataTables.bootstrap4.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-responsive/js/dataTables.responsive.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-responsive-bs4/js/responsive.bootstrap4.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons/js/dataTables.buttons.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons-bs4/js/buttons.bootstrap4.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons/js/buttons.html5.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons/js/buttons.flash.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons/js/buttons.print.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-keytable/js/dataTables.keyTable.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-select/js/dataTables.select.min.js"></script>
<!-- <script src="<?= base_url() . "public"; ?>/assets/libs/pdfmake/build/pdfmake.min.js"></script> -->
<!-- <script src="<?= base_url() . "public"; ?>/assets/libs/pdfmake/build/vfs_fonts.js"></script> -->
<!-- third party js ends -->
<!-- ============================= -->
<!-- DataTables -->
<!-- ============================= -->
<script src="<?= base_url("public/assets/libs/datatables.net/js/jquery.dataTables.min.js"); ?>"></script>
<script src="<?= base_url("public/assets/libs/datatables.net-bs4/js/dataTables.bootstrap4.min.js"); ?>"></script>
<script src="<?= base_url("public/assets/libs/datatables.net-responsive/js/dataTables.responsive.min.js"); ?>"></script>
<script src="<?= base_url("public/assets/libs/datatables.net-responsive-bs4/js/responsive.bootstrap4.min.js"); ?>"></script>
<script src="<?= base_url("public/assets/libs/datatables.net-buttons/js/dataTables.buttons.min.js"); ?>"></script>
<script src="<?= base_url("public/assets/libs/datatables.net-buttons-bs4/js/buttons.bootstrap4.min.js"); ?>"></script>
<script src="<?= base_url("public/assets/libs/datatables.net-buttons/js/buttons.html5.min.js"); ?>"></script>
<script src="<?= base_url("public/assets/libs/datatables.net-buttons/js/buttons.print.min.js"); ?>"></script>
<script src="<?= base_url("public/assets/libs/datatables.net-keytable/js/dataTables.keyTable.min.js"); ?>"></script>
<script src="<?= base_url("public/assets/libs/datatables.net-select/js/dataTables.select.min.js"); ?>"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/bootstrap-datepicker/js/bootstrap-datepicker.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/moment/min/moment.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/bootstrap-daterangepicker/daterangepicker.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"></script>
<!-- ============================= -->
<!-- Date Handling -->
<!-- ============================= -->
<script src="<?= base_url("public/assets/libs/moment/min/moment.min.js"); ?>"></script>
<script src="<?= base_url("public/assets/libs/bootstrap-daterangepicker/daterangepicker.js"); ?>"></script>
<!-- Datatables init -->
<!-- <script src="<?= base_url() . "public"; ?>/assets/js/pages/datatables.init.js"></script> -->
<script src="<?= base_url() . "public"; ?>/assets/js/pages/tickets.init.js"></script>
<!-- Plugins js-->
<script src="<?= base_url() . "public"; ?>/assets/libs/admin-resources/jquery.vectormap/jquery-jvectormap-1.2.2.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/admin-resources/jquery.vectormap/maps/jquery-jvectormap-us-merc-en.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/parsleyjs/parsley.min.js"></script>
<!-- Dashboard init-->
<script src="<?= base_url() . "public"; ?>/assets/js/pages/dashboard-analytics.init.js"></script>
<!-- Validation init js-->
<script src="<?= base_url() . "public"; ?>/assets/js/pages/form-validation.init.js"></script>
<!-- App js -->
<script src="<?= base_url() . "public"; ?>/assets/js/app.min.js"></script>
<!-- Sweet Alert CDN -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap-multiselect@1.1.0/dist/js/bootstrap-multiselect.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/css/bootstrap-multiselect.css" />
<script src="https://cdn.jsdelivr.net/npm/toastr@2.1.4/toastr.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/toastr@2.1.4/build/toastr.min.css" rel="stylesheet">
<!-- flatpicker datepicker -->
<link href="https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/flatpickr.min.css" rel="stylesheet">
<!-- OR: Flatpickr (prefer this long-term) -->
<script src="https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/flatpickr.min.js"></script>
<!-- bootstrap datepicker -->
<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.10.0/js/bootstrap-datepicker.min.js"></script> -->
<!-- ============================= -->
<!-- Forms -->
<!-- ============================= -->
<script src="<?= base_url("public/assets/libs/parsleyjs/parsley.min.js"); ?>"></script>
<script src="<?= base_url("public/assets/js/pages/form-validation.init.js"); ?>"></script>
<script src="<?= base_url() . "public"; ?>/assets/js/pages/jquery.xeditable.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/js/form-xeditable.init.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/js/bootstrap-editable.min.js"></script>
<!-- ============================= -->
<!-- Notifications -->
<!-- ============================= -->
<script src="https://cdn.jsdelivr.net/npm/toastr@2.1.4/toastr.min.js"></script>
<!-- Jodit Js -->
<script src="<?= base_url() . "public"; ?>/assets/js/jodit.min.js"></script>
<!-- select2 -->
<!-- ============================= -->
<!-- Select2 -->
<!-- ============================= -->
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
<!-- ============================= -->
<!-- Editor -->
<!-- ============================= -->
<script src="<?= base_url("public/assets/js/jodit.min.js"); ?>"></script>
<script src="https://cdn.datatables.net/plug-ins/2.0.8/sorting/scientific.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.7.1/jszip.min.js"></script>
<!-- ============================= -->
<!-- App Init -->
<!-- ============================= -->
<script src="<?= base_url("public/assets/js/app.min.js"); ?>"></script>
<script>
toastr.options = {

View File

@ -0,0 +1,960 @@
</div> <!-- container -->
</div> <!-- content -->
<!-- Footer Start -->
<footer class="footer">
<div class="container-fluid">
<div class="row">
<div class="col-md-6">
<script>
document.write(new Date().getFullYear())
</script> &copy; NHANCE
</div>
<!-- <div class="col-md-6">
<div class="text-md-right footer-links d-none d-sm-block">
<a href="javascript:void(0);">About Us</a>
<a href="javascript:void(0);">Help</a>
<a href="javascript:void(0);">Contact Us</a>
</div>
</div> -->
</div>
</div>
</footer>
<!-- end Footer -->
</div>
<!-- ============================================================== -->
<!-- End Page content -->
<!-- ============================================================== -->
</div>
<!-- END wrapper -->
<!-- Right Sidebar -->
<div class="right-bar">
<div class="h-100">
<!-- Notifications Header -->
<h6 class="font-weight-medium px-3 m-0 py-2 font-13 text-uppercase bg-light fixed-header">
<i class="mdi mdi-message-text-outline font-22"></i>
<span class="header-title">Notification</span>
</h6>
<div class="scrollable-content">
<ul class="list-unstyled" id="messages-list">
<!-- Notifications list items go here -->
</ul>
</div>
<!-- Pending Action Header -->
<h6 class="font-weight-medium px-3 m-0 py-2 font-13 bg-light fixed-header">
<i class="mdi mdi-format-list-checks font-22"></i>
<span class="header-title">TO DOs</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>
<!-- /Right-bar -->
<!-- Right bar overlay-->
<div class="rightbar-overlay"></div>
<!-- Vendor js -->
<script src="<?= base_url() . "public"; ?>/assets/js/vendor.min.js"></script>
<!-- KNOB JS -->
<script src="<?= base_url() . "public"; ?>/assets/libs/jquery-knob/jquery.knob.min.js"></script>
<!-- Apex js-->
<script src="<?= base_url() . "public"; ?>/assets/libs/apexcharts/apexcharts.min.js"></script>
<!-- third party js -->
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net/js/jquery.dataTables.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-bs4/js/dataTables.bootstrap4.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-responsive/js/dataTables.responsive.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-responsive-bs4/js/responsive.bootstrap4.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons/js/dataTables.buttons.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons-bs4/js/buttons.bootstrap4.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons/js/buttons.html5.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons/js/buttons.flash.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons/js/buttons.print.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-keytable/js/dataTables.keyTable.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-select/js/dataTables.select.min.js"></script>
<!-- <script src="<?= base_url() . "public"; ?>/assets/libs/pdfmake/build/pdfmake.min.js"></script> -->
<!-- <script src="<?= base_url() . "public"; ?>/assets/libs/pdfmake/build/vfs_fonts.js"></script> -->
<!-- third party js ends -->
<script src="<?= base_url() . "public"; ?>/assets/libs/bootstrap-datepicker/js/bootstrap-datepicker.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/moment/min/moment.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/bootstrap-daterangepicker/daterangepicker.js"></script>
<!-- Datatables init -->
<!-- <script src="<?= base_url() . "public"; ?>/assets/js/pages/datatables.init.js"></script> -->
<script src="<?= base_url() . "public"; ?>/assets/js/pages/tickets.init.js"></script>
<!-- Plugins js-->
<script src="<?= base_url() . "public"; ?>/assets/libs/admin-resources/jquery.vectormap/jquery-jvectormap-1.2.2.min.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/admin-resources/jquery.vectormap/maps/jquery-jvectormap-us-merc-en.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/libs/parsleyjs/parsley.min.js"></script>
<!-- Dashboard init-->
<script src="<?= base_url() . "public"; ?>/assets/js/pages/dashboard-analytics.init.js"></script>
<!-- Validation init js-->
<script src="<?= base_url() . "public"; ?>/assets/js/pages/form-validation.init.js"></script>
<!-- App js -->
<script src="<?= base_url() . "public"; ?>/assets/js/app.min.js"></script>
<!-- Sweet Alert CDN -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap-multiselect@1.1.0/dist/js/bootstrap-multiselect.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/css/bootstrap-multiselect.css" />
<script src="https://cdn.jsdelivr.net/npm/toastr@2.1.4/toastr.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/toastr@2.1.4/build/toastr.min.css" rel="stylesheet">
<!-- flatpicker datepicker -->
<link href="https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/flatpickr.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/flatpickr.min.js"></script>
<!-- bootstrap datepicker -->
<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.10.0/js/bootstrap-datepicker.min.js"></script> -->
<script src="<?= base_url() . "public"; ?>/assets/js/pages/jquery.xeditable.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/js/form-xeditable.init.js"></script>
<script src="<?= base_url() . "public"; ?>/assets/js/bootstrap-editable.min.js"></script>
<!-- Jodit Js -->
<script src="<?= base_url() . "public"; ?>/assets/js/jodit.min.js"></script>
<!-- select2 -->
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
<script src="https://cdn.datatables.net/plug-ins/2.0.8/sorting/scientific.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.7.1/jszip.min.js"></script>
<script>
toastr.options = {
"timeOut": 5000,
"closeButton": true,
};
</script>
<script>
var pullNotificationCount = 0;
var pendingActionCount = 0;
$(document).ready(function() {
// function fetchMessages() {
// $.ajax({
// url: '<?= base_url('dashboard/get-notification') ?>',
// method: 'GET',
// success: function(response) {
// // console.log('responce', response)
// if(response.status == false){
// $('#notification_count').html('0')
// console.log('The session is not set correctly. ')
// return;
// }
// let messagesList = $('#messages-list');
// messagesList.empty();
// var html = "";
// pullNotificationCount = response.message.length
// localStorage.setItem('pullNotificationCount', pullNotificationCount)
// response.message.forEach(message => {
// // if (!message.is_read) {
// // unreadCount++;
// // }
// var jasonDecodeData = JSON.parse(message.message_text)
// 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 = 'Success';
// if (jasonDecodeData.msg_status == 'failure') {
// toast_body_css = 'background : #fdcfcf !important;';
// toast_head_css = 'background-color : rgb(235 105 105 / 85%) !important; color :#000; border-bottom: 0;';
// toast_icon = 'mdi mdi-information mr-auto'
// toast_status_word = 'Failure';
// } else if (jasonDecodeData.msg_status == 'success') {
// toast_body_css = 'background : #bfd7eb !important;';
// 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_status_word = 'Success';
// }
// var html = ` <li data-id="${message.id}" data-url="${jasonDecodeData.action_url != undefined && jasonDecodeData.action_url != "" ? jasonDecodeData.action_url : 'dashboard/view'}">
// <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>${jasonDecodeData.msg_title ? jasonDecodeData.msg_title : ''}</strong> <br><br>
// <small style="position: relative;bottom: 8px;">${jasonDecodeData.message_text}</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: 25px;position: relative;top: 2px;">${jasonDecodeData.action_url != undefined && jasonDecodeData.action_url != "" ? 'see more' : ''}</small></a>
// <small style="position: relative;top: 2px;left: 5px;font-size: 10px;">${formatDate(message.created_at)}</small>
// </div>
// </div>
// </div>
// </div>
// </li>`
// messagesList.append(html);
// $(function() {
// $('[data-toggle="tooltip"]').tooltip();
// });
// });
// },
// error: function(xhr, status, error) {
// console.error(xhr.responseText); // Log the error response
// }
// });
// let PNCount = parseInt(localStorage.getItem('pullNotificationCount'));
// let PACount = parseInt(localStorage.getItem('pendingActionCount'));
// totalcount = PNCount + PACount
// $('#notification_count').html(totalcount);
// }
// function acknowledgeMessage(messageId) {
// $.ajax({
// url: '<?= base_url('dashboard/acknowledge-notification/') ?>' + messageId,
// method: 'GET',
// success: function(response) {
// fetchMessages();
// },
// error: function(xhr, status, error) {
// console.error(xhr.responseText); // Log the error response
// }
// });
// }
// $('#messages-list').on('click', 'li', function(event) {
// //console.log('messages-list click li')
// if ($(event.target).closest('.rm_msg').length > 0) {
// //console.log('.rm_msg')
// let messageId = $(this).data('id');
// let url = $(this).data('url');
// // acknowledgeMessage(messageId);
// $(this).delay(300).fadeOut('slow', function() {
// $(this).remove();
// });
// } else if ($(event.target).closest('.redirect_page').length > 0) {
// //console.log('redirect_page')
// let messageId = $(this).data('id');
// let url = $(this).data('url');
// //console.log('url : ', url)
// // acknowledgeMessage(messageId);
// window.location.href = '<?= base_url() ?>' + url;
// }
// });
// fetchMessages();
// setInterval(fetchMessages, 60000); // Fetch messages every sixty seconds
});
// $(document).ready(function() {
// function fetchPendingAction() {
// $.ajax({
// url: '<?= base_url('dashboard/get-pending-action') ?>',
// method: 'GET',
// success: function(response) {
// console.log(response);
// if (response.length == 0) {
// pendingActionCount = 0;
// localStorage.setItem('pendingActionCount', pendingActionCount);
// }
// for (let key in response) {
// // console.log(response[key].length)
// // console.log('type', typeof response[key].length)
// // console.log('key', response[key])
// if(response[key].length != 'undefined' && response[key].length != undefined)
// {
// pendingActionCount = pendingActionCount + response[key].length;
// }
// }
// console.log(pendingActionCount);
// let messagesList = $('#messages-list-2');
// messagesList.empty();
// if (response.inception) {
// $.each(response.inception, function(index, item) {
// var queryParams = {
// client_id: item.client_id,
// client_policy_id: item.client_policy_id,
// client_branch_id: item.branch_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';
// if (!item.branch_name.toLowerCase().includes('branch')) {
// //console.log(item.branch_name)
// item.branch_name += ' branch';
// }
// ////console.log(item.branch_name);
// var toast_body_data = item.client_name + '( ' + item.branch_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);
// });
// } else {
// console.log('response.inception is undefined or null');
// }
// if (response.correction) {
// $.each(response.correction, function(index, item) {
// if (item.batch_export_count == 0 || item.batch_import_count == 0) {
// var queryParams = {
// client_id: item.client_id,
// client_branch_id: item.branch_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 title = 'Correction Pending';
// if (!item.branch_name.toLowerCase().includes('branch')) {
// //console.log(item.branch_name)
// item.branch_name += ' branch';
// }
// ////console.log(item.branch_name);
// // if (item.batch_export_count > 0) {
// // title = 'Correction Import Pending';
// // }
// var toast_body_data = item.client_name + ' - ' + item.branch_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>${title}</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);
// }
// });
// }else{
// console.log('response.correction is undefined or null');
// }
// if (response.deletion) {
// $.each(response.deletion, function(index, item) {
// if (item.batch_export_count == 0 || item.batch_import_count == 0) {
// var queryParams = {
// client_id: item.client_id,
// client_policy_id: item.client_policy_id,
// client_branch_id: item.branch_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 title = 'Deletion Pending';
// if (!item.branch_name.toLowerCase().includes('branch')) {
// //console.log(item.branch_name)
// item.branch_name += ' branch';
// }
// ////console.log(item.branch_name);
// // if (item.batch_export_count > 0) {
// // title = 'Deletion Import Pending';
// // }
// var toast_body_data = item.client_name + '( ' + item.branch_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>${title}</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);
// }
// });
// }else{
// console.log('response.deletion is undefined or null');
// }
// if (response.si_enhancement) {
// $.each(response.si_enhancement, function(index, item) {
// if (item.batch_export_count == 0 || item.batch_import_count == 0) {
// var queryParams = {
// client_id: item.client_id,
// client_policy_id: item.client_policy_id,
// client_branch_id: item.branch_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 title = 'SI Enhancement Pending';
// if (!item.branch_name.toLowerCase().includes('branch')) {
// //console.log(item.branch_name)
// item.branch_name += ' branch';
// }
// ////console.log(item.branch_name);
// // if (item.batch_export_count > 0) {
// // title = 'SI Enhancement Import Pending';
// // }
// var toast_body_data = item.client_name + '( ' + item.branch_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>${title}</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);
// }
// });
// }else{
// console.log('response.si_enhancement is undefined or null');
// }
// if (response.tpa) {
// $.each(response.tpa, function(index, item) {
// if (item.batch_export_count == 0 || item.batch_import_count == 0) {
// var queryParams = {
// client_id: item.client_id,
// client_policy_id: item.client_policy_id,
// client_branch_id: item.branch_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 title = 'TPA Pending';
// if (!item.branch_name.toLowerCase().includes('branch')) {
// //console.log(item.branch_name)
// item.branch_name += ' branch';
// }
// ////console.log(item.branch_name);
// // if (item.batch_export_count > 0) {
// // title = 'TPA Import Pending';
// // }
// var toast_body_data = item.client_name + '( ' + item.branch_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>${title}</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);
// }
// });
// }else{
// console.log('response.tpa is undefined or null');
// }
// if (response.uhid) {
// $.each(response.uhid, function(index, item) {
// if (item.batch_export_count == 0 || item.batch_import_count == 0) {
// var queryParams = {
// client_id: item.client_id,
// client_policy_id: item.client_policy_id,
// client_branch_id: item.branch_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 title = 'Insurer Pending';
// if (!item.branch_name.toLowerCase().includes('branch')) {
// //console.log(item.branch_name)
// item.branch_name += ' branch';
// }
// ////console.log(item.branch_name);
// // if (item.batch_export_count > 0) {
// // title = 'Insurer Import Pending';
// // }
// var toast_body_data = item.client_name + '( ' + item.branch_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>${title}</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);
// }
// });
// }else{
// console.log('response.uhid is undefined or null');
// }
// localStorage.setItem('pendingActionCount', pendingActionCount)
// },
// error: function(xhr, status, error) {
// console.error(xhr.responseText); // Log the error response
// }
// });
// }
// 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>
// function formatDate(dateString)
// {
// // Parse the input date string
// let date = new Date(dateString);
// // Define months array
// const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
// // Extract day, month, year, hours, and minutes
// let day = date.getDate();
// let month = months[date.getMonth()];
// let year = date.getFullYear();
// let hours = date.getHours();
// let minutes = date.getMinutes();
// // Convert hours to 12-hour format
// let period = hours >= 12 ? 'pm' : 'am';
// hours = hours % 12;
// hours = hours ? hours : 12; // Handle midnight (0 hours)
// // Format the time string
// let timeString = ('0' + hours).slice(-2) + ':' + ('0' + minutes).slice(-2) + ' ' + period;
// // Format the date string
// let formattedDate = day + '-' + month + '-' + year + ' ' + timeString;
// return formattedDate;
// }
function printCurrentTime()
{
var now = new Date();
var hours = now.getHours().toString().padStart(2, '0');
var minutes = now.getMinutes().toString().padStart(2, '0');
var seconds = now.getSeconds().toString().padStart(2, '0');
var currentTime = hours + ':' + minutes + ':' + seconds;
// console.log("Current Time:", currentTime);
return currentTime;
}
</script>
<script>
function checkDuplicateTableFieldValue(tableName, fieldName, value, callback) {
$.ajax({
url: '<?= base_url('util/checkDuplicateTableFieldValue') ?>', // Adjust this to your endpoint in CodeIgniter
type: 'POST',
data: {
table: tableName,
field: fieldName,
value: value
},
dataType: 'json',
success: function(response) {
if (typeof callback === 'function') {
callback(response.isDuplicate); // Pass the result to the callback
}
},
error: function(xhr, status, error) {
console.error('AJAX Error:', error);
}
});
}
function sendAjaxRequestForGlobal(url, method, data = {}, successCallback = null, errorCallback = null) {
$.ajax({
url: url,
method: method,
data: data,
dataType: 'json', // Expected response type
success: function(response) {
// If a success callback is provided, call it with the response
if (successCallback) {
successCallback(response);
}
},
error: function(xhr, status, error) {
// Handle errors if provided error callback
if (errorCallback) {
errorCallback(xhr, status, error);
} else {
console.error('AJAX Error:', error);
}
}
});
}
function confirmActionSweertAlert(message = "Are you sure?", confirmText = "Yes, Proceed!", cancelText = "Cancel", icon = "warning") {
return Swal.fire({
title: message,
icon: icon,
showCancelButton: true,
confirmButtonColor: "#3085d6",
cancelButtonColor: "#d33",
confirmButtonText: confirmText,
cancelButtonText: cancelText
}).then((result) => {
return result.isConfirmed; // Returns true if confirmed, false otherwise
});
}
</script>
<script>
window.addEventListener("load", function() {
document.body.style.setProperty("background-color", "white", "important");
});
</script>
<script>
function closeModalById(modalId) {
// Get the modal element
var modal = document.getElementById(modalId);
if (!modal) return; // Exit if no modal found
// Hide it by removing "show" or "in" classes and setting display:none
modal.style.display = 'none';
modal.classList.remove('in', 'show'); // 'in' for BS3, 'show' for BS4/5
modal.setAttribute('aria-hidden', 'true');
modal.removeAttribute('aria-modal'); // optional
modal.removeAttribute('role'); // optional
// Remove backdrop if present
var backdrop = document.querySelector('.modal-backdrop');
if (backdrop) backdrop.remove();
// Allow page scrolling again
document.body.classList.remove('modal-open');
}
</script>
</body>
</html>

View File

@ -50,17 +50,17 @@
<link href="<?= base_url() . "public"; ?>/assets/css/jodit.css" rel="stylesheet" type="text/css" />
<!-- JQuery CDN -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<!-- JQuery CDN -->
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<!-- Sweet Alert CDN -->
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.10.4/dist/sweetalert2.all.min.js"></script>
<!-- Sweet Alert CDN -->
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.12.0/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">
<!-- select2 -->
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" type="text/css">
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.3/dist/umd/popper.min.js"></script>
<script src="https://code.jquery.com/jquery-3.7.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"></script>
<!-- <link rel="manifest" href="../manifest.json"> -->
@ -77,7 +77,7 @@
</script> -->
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.css" />
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick-theme.min.css" />
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<!-- <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> -->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js"></script>
<!-- srinivas -->
<script src="https://editor.unlayer.com/embed.js"></script>

View File

@ -0,0 +1,759 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<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 -->
<link href="<?= base_url() . "public"; ?>/assets/libs/admin-resources/jquery.vectormap/jquery-jvectormap-1.2.2.css" rel="stylesheet" type="text/css" />
<!-- third party css -->
<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 -->
<!-- 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/libs/bootstrap-datepicker/css/bootstrap-datepicker.min.css" rel="stylesheet" type="text/css" />
<link href="<?= base_url() . "public"; ?>/assets/libs/bootstrap-daterangepicker/daterangepicker.css" rel="stylesheet" type="text/css">
<link href="<?= base_url() . "public"; ?>/assets/libs/bootstrap-daterangepicker/daterangepicker.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" /> -->
<link href="https://cdn.jsdelivr.net/npm/remixicon/fonts/remixicon.css" rel="stylesheet">
<!-- Jodit Css -->
<link href="<?= base_url() . "public"; ?>/assets/css/jodit.css" rel="stylesheet" type="text/css" />
<!-- 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">
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.3/dist/umd/popper.min.js"></script>
<!-- <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> -->
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.css" />
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick-theme.min.css" />
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js"></script>
<!-- srinivas -->
<script src="https://editor.unlayer.com/embed.js"></script>
<!-- <script src="<?= base_url('public/unlayer/js/embed.js') . '' ?>"></script> -->
<!-- srinivas -->
<style>
body[data-sidebar-size=condensed]:not([data-layout=compact]):not(.auth-fluid-pages) {
min-height: 0;
}
body[data-sidebar-size=condensed] .navbar-custom {
left: 155px !important;
}
body[data-sidebar-size=condensed] .logo-box {
width: 155px !important;
}
.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 {
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);
}
50% {
-webkit-transform: scale(1);
transform: scale(1);
}
}
@keyframes ballPulseDouble {
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;
} */
.dataTables_wrapper .dt-buttons .buttons-csv,
.dataTables_wrapper .dt-buttons .buttons-html5 {
background-color: #02a8b5;
color: #fff;
border-color: #02a8b5;
}
.dataTables_wrapper .dt-buttons .buttons-csv:hover,
.dataTables_wrapper .dt-buttons .buttons-html5:hover {
background-color: #028291;
border-color: #028291;
}
.modal-full-width {
width: 80% !important;
/* width: 95% !important; */
/* max-width: none; */
}
.modal-body {
/* position: relative;
flex: 1 1 auto; */
padding: 2rem !important;
}
</style>
<style>
.text-danger-2 {
font-style: italic;
color: black !important;
/* color: #02a8b5 !important; */
font-size: 12px;
}
/* .form-group {
margin-bottom: -0.2rem !important;
}
.form-row{
width: 84%;
} */
</style>
<style>
.select2-container--default .select2-selection--single {
height: 37px !important;
}
.select2-container--default .select2-selection--single .select2-selection__rendered {
line-height: 35px !important;
}
.select2-container--default .select2-selection--single .select2-selection__arrow {
top: 7px !important;
}
</style>
<style>
.toast-body {
padding: .75rem;
background: aliceblue !important;
}
#messages-list li {
margin-top: 0;
margin-bottom: -25px;
/* Adjust this value to reduce the space */
}
.toast-footer {
text-align: right;
color: #000;
border-top: 1px solid aliceblue;
margin-top: 11px;
margin-bottom: -6px;
}
.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;
}
#app_content_management:hover {
color: red;
}
</style>
<script>
$(window).on('load', function() {
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').fadeOut('slow');
}, 1000);
});
</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>
<!-- Preloader -->
<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..."> -->
<!-- Begin page -->
<div id="wrapper">
<!-- Topbar Start -->
<div class="navbar-custom">
<div class="container-fluid">
<ul class="list-unstyled topnav-menu float-right mb-0">
<!-- <li class="d-none d-lg-block">
<form class="app-search">
<div class="app-search-box dropdown">
<div class="input-group">
<input type="search" class="form-control" placeholder="Search..." id="top-search">
<div class="input-group-append">
<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">
<h5 class="text-overflow mb-2">Found <span class="text-danger">09</span> results</h5>
</div>
<a href="javascript:void(0);" class="dropdown-item notify-item">
<i class="fe-home mr-1"></i>
<span>Analytics Report</span>
</a>
<a href="javascript:void(0);" class="dropdown-item notify-item">
<i class="fe-aperture mr-1"></i>
<span>How can I help you?</span>
</a>
<a href="javascript:void(0);" class="dropdown-item notify-item">
<i class="fe-settings mr-1"></i>
<span>User profile settings</span>
</a>
<div class="dropdown-header noti-title">
<h6 class="text-overflow mb-2 text-uppercase">Users</h6>
</div>
<div class="notification-list">
<a href="javascript:void(0);" class="dropdown-item notify-item">
<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">
<div class="media-body">
<h5 class="m-0 font-14">Erwin E. Brown</h5>
<span class="font-12 mb-0">UI Designer</span>
</div>
</div>
</a>
<a href="javascript:void(0);" class="dropdown-item notify-item">
<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">
<div class="media-body">
<h5 class="m-0 font-14">Jacob Deo</h5>
<span class="font-12 mb-0">Developer</span>
</div>
</div>
</a>
</div>
</div> -->
<!-- </div>
</form>
</li> -->
<!-- <li class="dropdown notification-list topbar-dropdown">
<a class="nav-link dropdown-toggle right-bar-toggle waves-effect waves-light">
<i class="fe-bell noti-icon"></i>
<span class="badge badge-danger rounded-circle noti-icon-badge" id="notification_count">0</span>
</a>
</li> -->
<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">
<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;">
<?= (isset(get_session_userdata()->first_name) ? get_session_userdata()->first_name : 'NOT SET') ?>
<!-- <i class="mdi mdi-chevron-down"></i> -->
</span>
</a>
<!--<div class="dropdown-menu dropdown-menu-right profile-dropdown ">
<div class="dropdown-header noti-title">
<h6 class="text-overflow m-0">Welcome !</h6>
</div>
<a href="javascript:void(0);" class="dropdown-item notify-item">
<i class="ri-account-circle-line"></i>
<span>My Account</span>
</a>
<a href="javascript:void(0);" class="dropdown-item notify-item">
<i class="ri-settings-3-line"></i>
<span>Settings</span>
</a>
<a href="javascript:void(0);" class="dropdown-item notify-item">
<i class="ri-wallet-line"></i>
<span>My Wallet <span class="badge badge-success float-right">3</span> </span>
</a>
<a href="javascript:void(0);" class="dropdown-item notify-item">
<i class="ri-lock-line"></i>
<span>Lock Screen</span>
</a>
<a href="<?= base_url('/logout'); ?>" class="dropdown-item notify-item">
<i class="ri-logout-box-line"></i>
<span>Logout</span>
</a>
</div>
<!-- </li> -->
<!-- <li class="dropdown notification-list">
<a href="javascript:void(0);" class="nav-link right-bar-toggle waves-effect waves-light">
<i class="fe-settings noti-icon"></i>
</a>
</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 -->
<div class="logo-box">
<a href="https://localhost/nhance-enrollment/dashboard/view" class="logo logo-dark text-center">
<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-enrollment/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> -->
</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>
<!-- 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_white_logo.svg" alt="" width="130" height="30">
</span>
<!-- <span class="logo-lg">
<img src="<?= base_url() . "public"; ?>./assets/images/logo-light.png" alt="" height="20">
</span> -->
</a>
</div>
<div class="h-100" data-simplebar>
<!--- Sidemenu -->
<div id="sidebar-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> Action on Policies </span>
</a>
<div class="collapse" id="sidebarDashboards">
<ul class="nav-second-level">
<li>
<a href="<?= base_url('/employee/upload') ?>">View Inception</a>
</li>
<li>
<a href="<?= base_url('/employee/list') ?>">View Members</a>
</li>
<!-- <li>
<a href="<?= base_url('/employee/endorsement-list') ?>">View Endorsement</a>
</li> -->
<li>
<a href="<?= base_url('/employee/enrollment-list') ?>">View Enrolment</a>
</li>
<li>
<a href="<?= base_url('/employee/test_members_list') ?>">Test Members List</a>
</li>
</ul>
</div>
</li>
<?php if(get_role_id() == 1 || get_role_id() == 5) { ?>
<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> -->
<!-- <li>
<a href="<?= base_url('/master/cash_deposite/list') ?>">CD Master</a>
</li>
<li>
<a href="<?= base_url('/master/vehicle/list') ?>">Vehicle Master</a>
</li> -->
<li>
<a href="<?= base_url('/user/list') ?>"> Users </a>
</li>
</ul>
</div>
</li>
<?php } ?>
<!-- <li>
<?php /*
$sessionData = get_session_userdata();
$currentUrl = base_url();
$parsedUrl = parse_url($currentUrl);
$baseUrl = $parsedUrl['scheme'] . '://' . $parsedUrl['host'] . '/';
$hashedEmail = hash('sha256', $sessionData->email);
$redirectUrl = getenv('helpdeskURL') .'/staff/login?' . http_build_query(['token' => $hashedEmail]);
*/?>
<a href="<?php //echo $redirectUrl; ?>" target="_blank">
<i class="mdi mdi-lifebuoy"></i>
<span> Tickets </span>
</a>
</li> -->
<!-- <li>
<a id="app_content_management" href="#sidebarDashboardsmenu" data-toggle="collapse" class="waves-effect" style="color: grey;">
<i class="fa fa-info-circle" aria-hidden="true"></i>
<span class="badge badge-success badge-pill float-right">2</span>
<span> App Content Management </span>
</a>
<div class="collapse" id="sidebarDashboardsmenu">
<ul class="nav-second-level">
<li>
<a href="<?= base_url('/add_image_index') ?>"> Advertisement Images </a>
</li>
<li>
<a href="<?= base_url('/frontend_content') ?>">Front-end Content</a>
</li>
</ul>
</div>
</li> -->
<!-- leads -->
<!-- <li>
<a href="<?= base_url('/leads/list') ?>">
<i class="mdi mdi-chart-bar"></i>
<span> Leads </span>
</a>
</li> -->
<?php if((get_role_id() == 1 || get_role_id() == 5) && (in_array(BUSINESS_TEAM_ID, user_team()) || in_array(FINANCE_TEAM_ID, user_team()) || in_array(MANAGEMENT_TEAM_ID, user_team()))) { ?>
<!-- <li>
<a href="#sidebarDashboards" data-toggle="collapse" class="waves-effect">
<i class="mdi mdi-format-list-bulleted"></i>
<span class="badge badge-success badge-pill float-right">2</span>
<span> Policy Transactions </span>
</a>
<div class="collapse" id="sidebarDashboards">
<ul class="nav-second-level">
<li>
<a href="<?= base_url('/policy_tranction/inception/list') ?>">Policy</a>
</li>
<li>
<a href="<?= base_url('/policy_tranction/endorsement/list') ?>">Endorsement</a>
</li>
<?php if (in_array(FINANCE_TEAM_ID, user_team()) || in_array(MANAGEMENT_TEAM_ID, user_team())) { ?>
<li>
<a href="<?= base_url('/policy_tranction/statement/list') ?>">Statement upload</a>
</li>
<li>
<a href="<?= base_url('/policy_tranction/report/list') ?>">BDS</a>
</li>
<li>
<a href="<?= base_url('/policy_tranction/report/report-varience-list') ?>">Variance</a>
</li>
<li>
<a href="<?= base_url('/policy_tranction/report/report-outstanding-list') ?>">Outstanding</a>
</li>
<li>
<a href="<?= base_url('/policy_tranction/report/report-finance-list') ?>">Finance Team</a>
</li>
<?php } ?>
<?php if (in_array(BUSINESS_TEAM_ID, user_team()) || in_array(MANAGEMENT_TEAM_ID, user_team())) { ?>
<li>
<a href="<?= base_url('/policy_tranction/report/report-business-list') ?>">Business Team</a>
</li>
<?php } ?>
<li>
<a href="<?= base_url('/master/cash_deposite/list') ?>">CD Master</a>
</li>
<li>
<a href="<?= base_url('/master/vehicle/list') ?>">Vehicle Master</a>
</li>
<li>
<a href="<?= base_url('/dmsSearch') ?>">Documents</a>
</li>
</ul>
</div>
</li> -->
<?php } ?>
</ul>
</div>
<!-- End Sidebar -->
</div>
<!-- Sidebar -left -->
</div>
<!-- Left Sidebar End -->
<!-- ============================================================== -->
<!-- Start Page Content here -->
<!-- ============================================================== -->
<div class="content-page">
<div class="content">
<!-- Start Content-->
<div class="container-fluid"></div>

25
public/assets/.htaccess Normal file
View File

@ -0,0 +1,25 @@
# ===============================
# ABSOLUTE SCRIPT EXECUTION BLOCK
# ===============================
# Disable CGI
Options -ExecCGI
# Disable PHP for mod_php / LiteSpeed
<IfModule mod_php.c>
php_flag engine off
</IfModule>
<IfModule lsapi_module>
php_flag engine off
</IfModule>
# Block any script file access
<FilesMatch "\.(php|php5|php7|php8|phtml|phar|pl|py|cgi|asp|aspx|jsp|sh|rb)$">
Require all denied
</FilesMatch>
# Block double extensions
<FilesMatch "\.(php|php5|php7|php8|phtml|phar)\.">
Require all denied
</FilesMatch>

View File

@ -0,0 +1,25 @@
# ===============================
# ABSOLUTE SCRIPT EXECUTION BLOCK
# ===============================
# Disable CGI
Options -ExecCGI
# Disable PHP for mod_php / LiteSpeed
<IfModule mod_php.c>
php_flag engine off
</IfModule>
<IfModule lsapi_module>
php_flag engine off
</IfModule>
# Block any script file access
<FilesMatch "\.(php|php5|php7|php8|phtml|phar|pl|py|cgi|asp|aspx|jsp|sh|rb)$">
Require all denied
</FilesMatch>
# Block double extensions
<FilesMatch "\.(php|php5|php7|php8|phtml|phar)\.">
Require all denied
</FilesMatch>

View File

@ -0,0 +1,25 @@
# ===============================
# ABSOLUTE SCRIPT EXECUTION BLOCK
# ===============================
# Disable CGI
Options -ExecCGI
# Disable PHP for mod_php / LiteSpeed
<IfModule mod_php.c>
php_flag engine off
</IfModule>
<IfModule lsapi_module>
php_flag engine off
</IfModule>
# Block any script file access
<FilesMatch "\.(php|php5|php7|php8|phtml|phar|pl|py|cgi|asp|aspx|jsp|sh|rb)$">
Require all denied
</FilesMatch>
# Block double extensions
<FilesMatch "\.(php|php5|php7|php8|phtml|phar)\.">
Require all denied
</FilesMatch>

View File

@ -0,0 +1,25 @@
# ===============================
# ABSOLUTE SCRIPT EXECUTION BLOCK
# ===============================
# Disable CGI
Options -ExecCGI
# Disable PHP for mod_php / LiteSpeed
<IfModule mod_php.c>
php_flag engine off
</IfModule>
<IfModule lsapi_module>
php_flag engine off
</IfModule>
# Block any script file access
<FilesMatch "\.(php|php5|php7|php8|phtml|phar|pl|py|cgi|asp|aspx|jsp|sh|rb)$">
Require all denied
</FilesMatch>
# Block double extensions
<FilesMatch "\.(php|php5|php7|php8|phtml|phar)\.">
Require all denied
</FilesMatch>

25
public/writable/.htaccess Normal file
View File

@ -0,0 +1,25 @@
# ===============================
# ABSOLUTE SCRIPT EXECUTION BLOCK
# ===============================
# Disable CGI
Options -ExecCGI
# Disable PHP for mod_php / LiteSpeed
<IfModule mod_php.c>
php_flag engine off
</IfModule>
<IfModule lsapi_module>
php_flag engine off
</IfModule>
# Block any script file access
<FilesMatch "\.(php|php5|php7|php8|phtml|phar|pl|py|cgi|asp|aspx|jsp|sh|rb)$">
Require all denied
</FilesMatch>
# Block double extensions
<FilesMatch "\.(php|php5|php7|php8|phtml|phar)\.">
Require all denied
</FilesMatch>