Merge branch 'dev' of bitbucket.org:jubilian/nhance into dev
@ -592,7 +592,9 @@ $routes->group("/ticket", ["filter" => "authMVC"], function ($routes) {
|
|||||||
$routes->post("getPoliciesbyEmpID","TicketController::getPoliciesbyEmpID");
|
$routes->post("getPoliciesbyEmpID","TicketController::getPoliciesbyEmpID");
|
||||||
$routes->post("getMoreInfo","TicketController::getMoreInfo");
|
$routes->post("getMoreInfo","TicketController::getMoreInfo");
|
||||||
$routes->get("getMoreInfo","TicketController::getMoreInfo");
|
$routes->get("getMoreInfo","TicketController::getMoreInfo");
|
||||||
// $routes->post('ticket_messages','TicketController::getTicketMessage');
|
$routes->post('upload_url',"TicketController::upload_url");
|
||||||
|
$routes->post('getUrlDataByTicketId',"TicketController::getUrlDataByTicketId");
|
||||||
|
$routes->get('remove_url',"TicketController::remove_url");
|
||||||
});
|
});
|
||||||
|
|
||||||
$routes->group("clientApi",["filter" => "AuthClientApi"], function ($routes){
|
$routes->group("clientApi",["filter" => "AuthClientApi"], function ($routes){
|
||||||
|
|||||||
@ -20,6 +20,7 @@ use App\Models\EmployeePolicyModel;
|
|||||||
use App\Models\InsurerModel;
|
use App\Models\InsurerModel;
|
||||||
use App\Models\EmployeeModel;
|
use App\Models\EmployeeModel;
|
||||||
use App\Models\TPAModel;
|
use App\Models\TPAModel;
|
||||||
|
use App\Models\ClaimFilesModel;
|
||||||
|
|
||||||
use DOMDocument;
|
use DOMDocument;
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
@ -58,6 +59,7 @@ class TicketController extends BaseController
|
|||||||
protected $extraFieldsDisplayForFrontend;
|
protected $extraFieldsDisplayForFrontend;
|
||||||
protected $insurerModel;
|
protected $insurerModel;
|
||||||
protected $TPAModel;
|
protected $TPAModel;
|
||||||
|
protected $claimFilesModel;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
@ -341,6 +343,7 @@ class TicketController extends BaseController
|
|||||||
$this->employeePolicyModel = new EmployeePolicyModel();
|
$this->employeePolicyModel = new EmployeePolicyModel();
|
||||||
$this->insurerModel = new InsurerModel();
|
$this->insurerModel = new InsurerModel();
|
||||||
$this->TPAModel = new TPAModel();
|
$this->TPAModel = new TPAModel();
|
||||||
|
$this->claimFilesModel = new ClaimFilesModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function ticketList()
|
public function ticketList()
|
||||||
@ -825,8 +828,12 @@ class TicketController extends BaseController
|
|||||||
// dd($data);
|
// dd($data);
|
||||||
$data['ticket_data'] = $ticket_data;
|
$data['ticket_data'] = $ticket_data;
|
||||||
$data['acms'] = $this->employeeModel->getAcmUsingClientID($ticket_data['client_id']);
|
$data['acms'] = $this->employeeModel->getAcmUsingClientID($ticket_data['client_id']);
|
||||||
|
|
||||||
|
$raw_json = $this->ticketMasterModel->getPolicyTermsJson($ticket_id) ;
|
||||||
|
|
||||||
|
$decoded_top = json_decode($raw_json ?? "", true) ?? [];
|
||||||
|
$data['policy_terms'] = $this->recursive_json_decode($decoded_top);
|
||||||
|
|
||||||
// dd($data);
|
|
||||||
|
|
||||||
return $this->loadLayout('ticket_edit_onbording', $data);
|
return $this->loadLayout('ticket_edit_onbording', $data);
|
||||||
}
|
}
|
||||||
@ -2135,7 +2142,117 @@ class TicketController extends BaseController
|
|||||||
$date = \DateTime::createFromFormat($format, $value);
|
$date = \DateTime::createFromFormat($format, $value);
|
||||||
return $date && $date->format($format) === $value;
|
return $date && $date->format($format) === $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function upload_url(){
|
||||||
|
|
||||||
|
$data = $this->request->getPost();
|
||||||
|
|
||||||
|
$insertArr = [];
|
||||||
|
|
||||||
|
foreach ($data['docs_name'] as $key => $eachData) {
|
||||||
|
|
||||||
|
if (!empty($eachData) ) {
|
||||||
|
|
||||||
|
$insertData = [
|
||||||
|
'doc_name' => $data['docs_name'][$key]??'',
|
||||||
|
'url' => $data['url'][$key]??'',
|
||||||
|
'ticket_id'=> $data['ticket_id_url']??'',
|
||||||
|
'created_by' => get_session_userid(),
|
||||||
|
'is_active' => 1
|
||||||
|
];
|
||||||
|
|
||||||
|
$insertArr[] = $insertData;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!empty($insertArr)){
|
||||||
|
// Insert into database
|
||||||
|
$insert = $this->claimFilesModel->insertBatch($insertArr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (isset($insert) && !empty($insert)) {
|
||||||
|
return $this->respond(['status' => true, 'message' => 'File uploaded successfully ']);
|
||||||
|
} else {
|
||||||
|
return $this->respond(['status' => false, 'message' => 'Failed to upload file ']);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getUrlDataByTicketId()
|
||||||
|
{
|
||||||
|
$ticket_id = $this->request->getPost('ticket_id');
|
||||||
|
|
||||||
|
if (!$ticket_id) {
|
||||||
|
return $this->response->setJSON([
|
||||||
|
'status' => false,
|
||||||
|
'message' => 'Ticket ID is required',
|
||||||
|
'data' => []
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$urlData = $this->claimFilesModel
|
||||||
|
->where('ticket_id', $ticket_id)
|
||||||
|
->where('is_active',1)
|
||||||
|
->findAll();
|
||||||
|
|
||||||
|
return $this->response->setJSON([
|
||||||
|
'status' => true,
|
||||||
|
'data' => $urlData
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function remove_url()
|
||||||
|
{
|
||||||
|
$id = $this->request->getGet('id');
|
||||||
|
|
||||||
|
if (empty(trim($id))) {
|
||||||
|
return $this->response->setJSON([
|
||||||
|
'status' => false,
|
||||||
|
'message' => 'Invalid ID'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$updated = $this->claimFilesModel
|
||||||
|
->where('id', $id)
|
||||||
|
->set(['is_active' => 0])
|
||||||
|
->update();
|
||||||
|
|
||||||
|
if ($updated) {
|
||||||
|
return $this->response->setJSON([
|
||||||
|
'status' => true,
|
||||||
|
'message' => 'URL successfully marked inactive.'
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
return $this->response->setJSON([
|
||||||
|
'status' => false,
|
||||||
|
'message' => 'Failed to update record.'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function recursive_json_decode($input) {
|
||||||
|
if (is_string($input)) {
|
||||||
|
$decoded = json_decode($input, true);
|
||||||
|
if (json_last_error() === JSON_ERROR_NONE) {
|
||||||
|
return $this->recursive_json_decode($decoded); // continue decoding recursively
|
||||||
|
} else {
|
||||||
|
return $input;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_array($input)) {
|
||||||
|
foreach ($input as $key => $value) {
|
||||||
|
$input[$key] = $this->recursive_json_decode($value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $input;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
55
app/Models/ClaimFilesModel.php
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use CodeIgniter\Model;
|
||||||
|
|
||||||
|
class ClaimFilesModel extends Model
|
||||||
|
{
|
||||||
|
protected $table = 'claim_files';
|
||||||
|
protected $primaryKey = 'id';
|
||||||
|
protected $allowedFields = [
|
||||||
|
'id',
|
||||||
|
'ticket_id',
|
||||||
|
'doc_name',
|
||||||
|
'url',
|
||||||
|
'created_by',
|
||||||
|
'updated_by',
|
||||||
|
'created_at',
|
||||||
|
'updated_at',
|
||||||
|
'is_active'
|
||||||
|
];
|
||||||
|
|
||||||
|
// Callbacks
|
||||||
|
protected $allowCallbacks = true;
|
||||||
|
protected $beforeInsert = ["checkAndADDCreatedByValue"];
|
||||||
|
protected $afterInsert = [];
|
||||||
|
protected $beforeUpdate = ["checkAndUpdateUpdatedByValue"];
|
||||||
|
protected $afterUpdate = [];
|
||||||
|
protected $beforeFind = [];
|
||||||
|
protected $afterFind = [];
|
||||||
|
protected $beforeDelete = [];
|
||||||
|
protected $afterDelete = [];
|
||||||
|
|
||||||
|
protected function checkAndADDCreatedByValue(array $data)
|
||||||
|
{
|
||||||
|
// Check if 'updated_by' value is null or empty
|
||||||
|
if (empty($data['data']['created_by'])) {
|
||||||
|
// Set 'updated_by' value to the current session user ID
|
||||||
|
$data['data']['created_by'] = get_session_userid();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function checkAndUpdateUpdatedByValue(array $data)
|
||||||
|
{
|
||||||
|
// Check if 'updated_by' value is null or empty
|
||||||
|
if (empty($data['data']['updated_by'])) {
|
||||||
|
// Set 'updated_by' value to the current session user ID
|
||||||
|
$data['data']['updated_by'] = get_session_userid();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -953,4 +953,29 @@ class TicketMasterModel extends Model
|
|||||||
'ticket_ids' => $ticketIdsString
|
'ticket_ids' => $ticketIdsString
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getPolicyTermsJson($ticket_id)
|
||||||
|
{
|
||||||
|
$sql = " SELECT cp.policy_terms
|
||||||
|
FROM ticket_master tm
|
||||||
|
JOIN client_policy cp ON cp.id = tm.client_policy_id
|
||||||
|
WHERE tm.id = ?
|
||||||
|
AND tm.is_active = 1
|
||||||
|
AND cp.is_active = 1
|
||||||
|
";
|
||||||
|
|
||||||
|
$binds = [$ticket_id];
|
||||||
|
$query = $this->db->query($sql, $binds);
|
||||||
|
|
||||||
|
if ($query && $query->getNumRows() > 0) {
|
||||||
|
$row = $query->getRowArray();
|
||||||
|
return json_encode(['policy_terms' => $row['policy_terms']]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return json_encode(['policy_terms' => null]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
329
app/Views/claim_files_upload.php
Normal file
@ -0,0 +1,329 @@
|
|||||||
|
|
||||||
|
<div class="tab-pane" id="fileupload">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xl-12">
|
||||||
|
<div id="accordion" class="mb-3">
|
||||||
|
<div class="card mb-1">
|
||||||
|
<h5 class="m-1">
|
||||||
|
<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;color:black;"></i>
|
||||||
|
</a>
|
||||||
|
</h5>
|
||||||
|
<div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordion">
|
||||||
|
<div class="card-body">
|
||||||
|
<form class="parsley-examples" id="drive_file_upload_form" method="post"
|
||||||
|
enctype="multipart/form-data">
|
||||||
|
|
||||||
|
<input type="hidden" id="ticket_id_url" name="ticket_id_url">
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
|
||||||
|
<div id="dynamic-form-container"></div>
|
||||||
|
|
||||||
|
<div class="form-group text-right m-b-0">
|
||||||
|
<button type="submit" class="btn btn-primary waves-effect waves-light mr-1"
|
||||||
|
id="g_drive_file_upload_sbt_btn">Submit</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="file_table" class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="row" style="padding-bottom: 10px;">
|
||||||
|
<div class="col-6" style="align-self: center;">
|
||||||
|
<h4 style="position: relative;">File List</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="table-responsive" style="overflow-x: auto;">
|
||||||
|
<table id="scroll-horizontal-datatable" class="table w-100 nowrap">
|
||||||
|
<thead class="bg-light">
|
||||||
|
<tr>
|
||||||
|
<th>S.No</th>
|
||||||
|
<th>Docs Name</th>
|
||||||
|
<th>File Name</th>
|
||||||
|
<th>Action</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody id="table_bd">
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div><!-- end col -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- edit modal -->
|
||||||
|
<div class="modal fade" id="edit_url_modal" tabindex="-1" role="dialog" aria-labelledby="editUrlModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog" role="document">
|
||||||
|
<form id="edit_url_form">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">Edit URL</h5>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
|
<span>×</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal-body">
|
||||||
|
<input type="hidden" id="edit_url_id" name="id">
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="edit_doc_name">Document Name</label>
|
||||||
|
<input type="text" class="form-control" id="edit_doc_name" name="doc_name">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="edit_url_link">URL</label>
|
||||||
|
<input type="text" class="form-control" id="edit_url_link" name="url">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="submit" class="btn btn-primary">Save Changes</button>
|
||||||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(document).ready(function(){
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
let ticket_id = $('#ticket_master_id').val();
|
||||||
|
|
||||||
|
$('#ticket_id_url').val(ticket_id);
|
||||||
|
|
||||||
|
let urlData = getUrlDataByTicketId(ticket_id);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
$("#drive_file_upload_form").submit(function(event) {
|
||||||
|
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
var isValid = $('#drive_file_upload_form').parsley().validate();
|
||||||
|
if (!isValid) {
|
||||||
|
console.log('Form is Empty', 'Warning');
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
form_action = '<?php echo base_url() . 'ticket/upload_url' ?>';
|
||||||
|
|
||||||
|
$('.loader').fadeIn();
|
||||||
|
$('.loader-mask').fadeIn();
|
||||||
|
|
||||||
|
var formData = new FormData($('#drive_file_upload_form')[0]);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
data:formData,
|
||||||
|
url: form_action,
|
||||||
|
type: "POST",
|
||||||
|
dataType: 'json',
|
||||||
|
processData: false,
|
||||||
|
contentType: false,
|
||||||
|
success: function(res) {
|
||||||
|
|
||||||
|
$('.loader').fadeOut();
|
||||||
|
$('.loader-mask').delay(350).fadeOut('slow');
|
||||||
|
|
||||||
|
if(res.status == true){
|
||||||
|
toastr.success(res.message, 'Success');
|
||||||
|
window.location.reload();
|
||||||
|
}else{
|
||||||
|
toastr.error(res.message, 'Error');
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
error: function (xhr, status, error) {
|
||||||
|
console.log("error in submission of url data");
|
||||||
|
console.error(xhr.responseText);
|
||||||
|
console.error(status, error);
|
||||||
|
|
||||||
|
},
|
||||||
|
complete : function(){
|
||||||
|
console.log("ajax call is completed for submission of url data..!!");
|
||||||
|
$('.loader').fadeOut();
|
||||||
|
$('.loader-mask').delay(350).fadeOut('slow');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
function addHTMLInput()
|
||||||
|
{
|
||||||
|
const container = document.getElementById('dynamic-form-container');
|
||||||
|
const newRow = document.createElement('div');
|
||||||
|
newRow.className = 'form-row dynamic-form-row';
|
||||||
|
newRow.innerHTML = `
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label for="file_name">Document Name<span class="text-danger">*</span></label>
|
||||||
|
<input type="text" class="form-control" id="docs_name" name="docs_name[]" placeholder="Enter file name" required
|
||||||
|
value=""
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label for="file">URL<span class="text-danger">*</span></label>
|
||||||
|
<input type="text" class="form-control" id="url_name" name="url[]" required
|
||||||
|
value=""
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-2" style="position: relative;top: 28px;">
|
||||||
|
<a class="btn btn-danger waves-effect waves-light" onclick="removeHTMLInput(this)">x</a>
|
||||||
|
<a class="btn btn-primary waves-effect waves-light mr-1" onclick="addHTMLInput(this)">+</a>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
container.appendChild(newRow);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeHTMLInput(element)
|
||||||
|
{
|
||||||
|
const container = document.getElementById('dynamic-form-container');
|
||||||
|
const rows = container.querySelectorAll('.dynamic-form-row');
|
||||||
|
|
||||||
|
if (rows.length > 1) {
|
||||||
|
const row = element.closest('.dynamic-form-row');
|
||||||
|
row.remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getUrlDataByTicketId(ticket_id) {
|
||||||
|
|
||||||
|
// Show loader
|
||||||
|
$('.loader').fadeIn();
|
||||||
|
$('.loader-mask').fadeIn();
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: "<?= base_url('ticket/getUrlDataByTicketId')?>", // base_url must be defined in JS
|
||||||
|
type: "POST",
|
||||||
|
data: { ticket_id: ticket_id },
|
||||||
|
dataType: 'json',
|
||||||
|
success: function(response) {
|
||||||
|
console.log('Form submitted response:', response);
|
||||||
|
|
||||||
|
if (response.status === true) {
|
||||||
|
create_url_list(response.data);
|
||||||
|
addHTMLInput();
|
||||||
|
return ;
|
||||||
|
} else {
|
||||||
|
addHTMLInput();
|
||||||
|
console.warn("No Data");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: function(xhr, status, error) {
|
||||||
|
console.log("error in get urldata api");
|
||||||
|
console.error("AJAX Error:", error);
|
||||||
|
},
|
||||||
|
complete: function() {
|
||||||
|
// Hide loader
|
||||||
|
$('.loader').fadeOut();
|
||||||
|
$('.loader-mask').delay(350).fadeOut('slow');
|
||||||
|
console.log("Ajax is completed for get url data..!!");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function openEditModal(id, docName, url) {
|
||||||
|
$('#edit_url_id').val(id);
|
||||||
|
$('#edit_doc_name').val(docName);
|
||||||
|
$('#edit_url_link').val(url);
|
||||||
|
$('#edit_url_modal').modal('show'); // Bootstrap modal
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function create_url_list(data) {
|
||||||
|
$('#table_bd').empty(); // clear existing rows
|
||||||
|
|
||||||
|
let base_url = "<?php echo base_url() ?>";
|
||||||
|
|
||||||
|
if (data && data.length > 0) {
|
||||||
|
let html = "";
|
||||||
|
|
||||||
|
data.forEach((item, index) => {
|
||||||
|
html += `
|
||||||
|
<tr>
|
||||||
|
<td>${index + 1}</td>
|
||||||
|
<td>${item.doc_name}</td>
|
||||||
|
<td><a href="${item.url}" target="_blank">${item.url}</a></td>
|
||||||
|
<td>
|
||||||
|
<a href="javascript:void(0);" class="delete-url"
|
||||||
|
style="bacolor:black;"
|
||||||
|
data-href="${base_url}/ticket/remove_url?id=${item.id}">
|
||||||
|
<i class="mdi mdi-delete mr-1"></i>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
`;
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#table_bd').append(html);
|
||||||
|
} else {
|
||||||
|
$('#table_bd').html('<tr><td colspan="4">No Data Found</td></tr>');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$(document).on('click', '.delete-url', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
const url = $(this).data('href');
|
||||||
|
const $row = $(this).closest('tr'); // capture the row before async execution
|
||||||
|
|
||||||
|
confirmActionSweertAlert("Do you want to delete?", "Yes, Proceed!", "No, Cancel")
|
||||||
|
.then((confirmed) => {
|
||||||
|
if (confirmed) {
|
||||||
|
$.ajax({
|
||||||
|
url: url,
|
||||||
|
type: "GET",
|
||||||
|
dataType: "json",
|
||||||
|
beforeSend: function () {
|
||||||
|
$('.loader').fadeIn();
|
||||||
|
$('.loader-mask').fadeIn();
|
||||||
|
},
|
||||||
|
success: function (response) {
|
||||||
|
if (response.status === true) {
|
||||||
|
toastr.success('Removed Successfully');
|
||||||
|
$row.remove();
|
||||||
|
} else {
|
||||||
|
toastr.error(response.message || 'Deletion failed');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: function (xhr, status, error) {
|
||||||
|
console.log("error ");
|
||||||
|
console.error("AJAX Error:", error);
|
||||||
|
toastr.error('AJAX request failed');
|
||||||
|
},
|
||||||
|
complete: function () {
|
||||||
|
$('.loader').fadeOut();
|
||||||
|
$('.loader-mask').delay(350).fadeOut('slow');
|
||||||
|
console.log("Ajax is completed for get url data..!!");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
@ -106,6 +106,8 @@
|
|||||||
<th class="font-weight-medium">EMP Code</th>
|
<th class="font-weight-medium">EMP Code</th>
|
||||||
<th class="font-weight-medium">Relationship</th>
|
<th class="font-weight-medium">Relationship</th>
|
||||||
<th class="font-weight-medium">Gender</th>
|
<th class="font-weight-medium">Gender</th>
|
||||||
|
<th class="font-weight-medium">Email</th>
|
||||||
|
<th class="font-weight-medium">Mobile</th>
|
||||||
<th class="font-weight-medium">Date of Birth</th>
|
<th class="font-weight-medium">Date of Birth</th>
|
||||||
<th class="font-weight-medium">Policy name</th>
|
<th class="font-weight-medium">Policy name</th>
|
||||||
<th class="font-weight-medium">Insurer name</th>
|
<th class="font-weight-medium">Insurer name</th>
|
||||||
@ -141,6 +143,8 @@
|
|||||||
<td><?php echo $employee['emp_code']; ?></td>
|
<td><?php echo $employee['emp_code']; ?></td>
|
||||||
<td><?php echo $employee['relationship']; ?></td>
|
<td><?php echo $employee['relationship']; ?></td>
|
||||||
<td><?php echo $employee['gender']; ?></td>
|
<td><?php echo $employee['gender']; ?></td>
|
||||||
|
<td><?php echo $employee['email_corporate']; ?></td>
|
||||||
|
<td><?php echo $employee['mobile']; ?></td>
|
||||||
<td><?php echo date('d/m/Y', strtotime($employee['dob'])); ?></td>
|
<td><?php echo date('d/m/Y', strtotime($employee['dob'])); ?></td>
|
||||||
<td><?php echo isset($employee['policy_type']) ? $employee['policy_type'] : ''; ?> - <?php echo isset($employee['policy_no']) ? $employee['policy_no'] : ''; ?></td>
|
<td><?php echo isset($employee['policy_type']) ? $employee['policy_type'] : ''; ?> - <?php echo isset($employee['policy_no']) ? $employee['policy_no'] : ''; ?></td>
|
||||||
<td><?php echo $employee['insurer_short_name']; ?></td>
|
<td><?php echo $employee['insurer_short_name']; ?></td>
|
||||||
|
|||||||
@ -56,6 +56,20 @@
|
|||||||
<span class="d-none d-sm-inline-block">Auto Query Content</span>
|
<span class="d-none d-sm-inline-block">Auto Query Content</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a href="#uploads-tab" data-toggle="tab" class="nav-link px-2 py-1" id="uploads_tab"
|
||||||
|
aria-expanded="false">
|
||||||
|
<i class="mdi mdi-file mr-1"></i>
|
||||||
|
<span class="d-none d-sm-inline-block">Claim Files</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a href="#viewpolicyterms-tab" data-toggle="tab" class="nav-link px-2 py-1" id="viewpolicyterms_tab"
|
||||||
|
aria-expanded="false">
|
||||||
|
<i class="mdi mdi-eye mr-1"></i>
|
||||||
|
<span class="d-none d-sm-inline-block">View Policy Terms</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<!-- Tab Content -->
|
<!-- Tab Content -->
|
||||||
@ -82,6 +96,12 @@
|
|||||||
<div class="tab-pane fade" id="autoQuery-tab">
|
<div class="tab-pane fade" id="autoQuery-tab">
|
||||||
<?php include('ticket_auto_query.php'); ?>
|
<?php include('ticket_auto_query.php'); ?>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="tab-pane fade" id="uploads-tab">
|
||||||
|
<?php include('claim_files_upload.php'); ?>
|
||||||
|
</div>
|
||||||
|
<div class="tab-pane fade" id="viewpolicyterms-tab">
|
||||||
|
<?php include('view_policy_terms.php'); ?>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -109,7 +109,12 @@ table.dataTable tbody td {
|
|||||||
|
|
||||||
|
|
||||||
<th>TAT</th>
|
<th>TAT</th>
|
||||||
|
|
||||||
|
<!-- role based delete option -->
|
||||||
|
<?php if(in_array(get_role_id(), [1,2,5]) ) { ?>
|
||||||
<th>ACTION</th>
|
<th>ACTION</th>
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@ -217,16 +222,21 @@ table.dataTable tbody td {
|
|||||||
|
|
||||||
|
|
||||||
<td><?php echo $row['tat']; ?></td>
|
<td><?php echo $row['tat']; ?></td>
|
||||||
<td>
|
|
||||||
<div class="btn-group dropdown">
|
<!-- role based delete option -->
|
||||||
<a href="javascript: void(0);" class="dropdown-toggle arrow-none btn btn-light btn-sm" data-toggle="dropdown" aria-expanded="false"><i class="mdi mdi-dots-horizontal"></i></a>
|
<?php if(in_array(get_role_id(), [1,2,5]) ) { ?>
|
||||||
<div class="dropdown-menu dropdown-menu-right">
|
<td>
|
||||||
<a class="dropdown-item delete" data-id="<?= $row['id'];?>" onclick="removeClaim(this, '<?= htmlspecialchars($row['id'], ENT_QUOTES) ?>')">
|
<div class="btn-group dropdown">
|
||||||
<i class="mdi mdi-delete mr-2 text-muted font-18 vertical-middle"></i>Delete
|
<a href="javascript: void(0);" class="dropdown-toggle arrow-none btn btn-light btn-sm" data-toggle="dropdown" aria-expanded="false"><i class="mdi mdi-dots-horizontal"></i></a>
|
||||||
</a>
|
<div class="dropdown-menu dropdown-menu-right">
|
||||||
|
<a class="dropdown-item delete" data-id="<?= $row['id'];?>" onclick="removeClaim(this, '<?= htmlspecialchars($row['id'], ENT_QUOTES) ?>')">
|
||||||
|
<i class="mdi mdi-delete mr-2 text-muted font-18 vertical-middle"></i>Delete
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</td>
|
||||||
</td>
|
<?php } ?>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
|||||||
97
app/Views/view_policy_terms.php
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
<br>
|
||||||
|
<p style="color:black;">
|
||||||
|
<b>Policy Terms</b>
|
||||||
|
</p>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
// ✅ Format keys: underscores to spaces, each word capitalized
|
||||||
|
function readable_key($key) {
|
||||||
|
$key = str_replace('_', ' ', $key);
|
||||||
|
return ucwords($key);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ✅ Format values: 0 = NO, 1 = YES, >1 = number as-is
|
||||||
|
function format_value($value) {
|
||||||
|
if (is_numeric($value)) {
|
||||||
|
if ($value == 0) return 'No';
|
||||||
|
if ($value == 1) return 'Yes';
|
||||||
|
}
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ✅ Recursively render nested key–value pairs
|
||||||
|
function nestedKeyValuePair($data) {
|
||||||
|
$output = '';
|
||||||
|
|
||||||
|
foreach ($data as $key => $value) {
|
||||||
|
$label = readable_key($key);
|
||||||
|
$output .= "<span style='color:black;'> : <b>$label</b>";
|
||||||
|
|
||||||
|
if (is_array($value)) {
|
||||||
|
$output .= "<span style='margin-left: 10px;'>" . nestedKeyValuePair($value) . "</span>";
|
||||||
|
} else {
|
||||||
|
$formattedValue = format_value($value);
|
||||||
|
$output .= " : " . htmlspecialchars($formattedValue) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
$output .= "</span>";
|
||||||
|
}
|
||||||
|
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($policy_terms['policy_terms']) && is_array($policy_terms['policy_terms'])) {
|
||||||
|
|
||||||
|
// ✅ Merge multiple_sum_insured with sum_insured
|
||||||
|
if (
|
||||||
|
isset($policy_terms['policy_terms']['multiple_sum_insured']) &&
|
||||||
|
is_array($policy_terms['policy_terms']['multiple_sum_insured'])
|
||||||
|
) {
|
||||||
|
$sum_insured_values = implode(' , ', $policy_terms['policy_terms']['multiple_sum_insured']);
|
||||||
|
$original_sum = isset($policy_terms['policy_terms']['sum_insured'])
|
||||||
|
? $policy_terms['policy_terms']['sum_insured']
|
||||||
|
: '';
|
||||||
|
$policy_terms['policy_terms']['sum_insured'] = $original_sum . " , " . $sum_insured_values;
|
||||||
|
unset($policy_terms['policy_terms']['multiple_sum_insured']);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ✅ Display each policy term
|
||||||
|
foreach ($policy_terms['policy_terms'] as $key => $value) {
|
||||||
|
if ($key === "age_ratio" || $key === "enrollment_display_key") {
|
||||||
|
continue; // Skip excluded keys
|
||||||
|
}
|
||||||
|
|
||||||
|
// Normalize specific raw keys (if needed)
|
||||||
|
if ($key === 'waiverof30dayswaitingperiod') {
|
||||||
|
$key = 'Waiver_of_30_days_waiting_period';
|
||||||
|
}
|
||||||
|
if ($key === 'suminsuredenhancement') {
|
||||||
|
$key = 'sum_insured_enhancement';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Readable label
|
||||||
|
$label = readable_key($key);
|
||||||
|
$nesetedValues = "";
|
||||||
|
?>
|
||||||
|
<div class="row">
|
||||||
|
<div class="form-group col-3">
|
||||||
|
<p style="color:black;"><b><?php echo htmlspecialchars($label); ?>:</b></p>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-6">
|
||||||
|
<?php
|
||||||
|
if (is_array($value)) {
|
||||||
|
$nesetedValues .= nestedKeyValuePair($value) .",";
|
||||||
|
echo "$nesetedValues";
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$formattedValue = format_value($value);
|
||||||
|
echo "<p style='color:black;'>: " . htmlspecialchars($formattedValue) . "</p>";
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
BIN
public/assets/images/action_on_policies_sb.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
public/assets/images/app_content_mng_sb.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
public/assets/images/claims_sb.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
public/assets/images/clients_sb.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
public/assets/images/leads_sb.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
public/assets/images/masters_sb.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
public/assets/images/policy_transactions_sb.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
public/assets/images/user_manual_sb.png
Normal file
|
After Width: | Height: | Size: 15 KiB |