Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
velz 2026-04-01 11:02:11 +05:30
commit 6cd89bbf2f
10 changed files with 348 additions and 132 deletions

View File

@ -313,7 +313,7 @@ class Acl
// ===================== DEFAULT DENY (ZERO TRUST) ===================== // ===================== DEFAULT DENY (ZERO TRUST) =====================
'#^/#' => [ '#^/#' => [
'roles' => [ADMIN_ROLE_ID], 'roles' => [ADMIN_ROLE_ID, HEAD_ROLE_ID],
'teams' => [] 'teams' => []
], ],
]; ];

View File

@ -1233,16 +1233,106 @@ class ClientController extends AdminController
public function createClientKYCInfo() public function createClientKYCInfo()
{ {
$this->myLogger->logme('error', 'Create Client KYC function called'); $this->myLogger->logme('error', 'Create Client KYC function called');
$data = $this->request->getPost();
$sanitized_data = sanitizeInputArrayAdvanced($data);
$form_type = $sanitized_data['form_type'] ?? null;
$client_id = $sanitized_data['client_id'] ?? null;
$uploadFilePath = WRITEPATH . 'uploads/client_kyc_documents';
$allowedExtensions = ['pdf', 'jpg', 'jpeg', 'png'];
$maxFileSize = 5 * 1024 * 1024; // 5MB
if (empty($client_id)) {
return $this->response->setStatusCode(400)->setJSON([
'status' => false,
'message' => 'Input validation failed',
'code' => 400,
'errors' => ['client_id' => 'Client is required']
]);
}
// Multi-row handler for Additional Documents form
if ($form_type === 'others') {
$docNames = $this->request->getPost('other_docs_name');
if (!is_array($docNames)) {
$docNames = [$docNames];
}
$uploadedFiles = $this->request->getFileMultiple('file_name');
if (!is_array($uploadedFiles)) {
$uploadedFiles = [];
}
$rows = max(count($docNames), count($uploadedFiles));
$validationErrors = [];
if ($rows === 0) {
return $this->response->setStatusCode(400)->setJSON([
'status' => false,
'message' => 'Input validation failed',
'code' => 400,
'errors' => ['file_name' => 'At least one file is required']
]);
}
for ($i = 0; $i < $rows; $i++) {
$docName = trim((string)($docNames[$i] ?? ''));
$fileObj = $uploadedFiles[$i] ?? null;
if ($docName === '') {
$validationErrors["other_docs_name.$i"] = 'Documents Name is required';
} elseif (!preg_match('/^[a-zA-Z0-9_\- ]+$/', $docName)) {
$validationErrors["other_docs_name.$i"] = 'Document Name can only contain letters, numbers, hyphens, and underscores';
}
if (!$fileObj || !$fileObj->isValid()) {
$validationErrors["file_name.$i"] = 'KYC document file is required';
} else {
$extension = strtolower((string)$fileObj->getExtension());
if (!in_array($extension, $allowedExtensions, true)) {
$validationErrors["file_name.$i"] = 'Allowed file types: pdf, jpg, jpeg, png';
}
if ((int)$fileObj->getSize() > $maxFileSize) {
$validationErrors["file_name.$i"] = 'File size should not exceed 5MB';
}
}
}
if (!empty($validationErrors)) {
return $this->response->setStatusCode(400)->setJSON([
'status' => false,
'message' => 'Input validation failed',
'code' => 400,
'errors' => $validationErrors
]);
}
foreach ($uploadedFiles as $index => $singleFile) {
$fileName = file_Upload_for_lead($singleFile, $uploadFilePath, UPLOAD_EXT_KYC_DOCS);
if (empty($fileName)) {
return $this->respond(['status' => false, 'code' => 404, 'message' => 'Failed to upload KYC document'], 200);
}
$insertData = [
'client_id' => $client_id,
'kyc_doc_type_id' => $sanitized_data['kyc_doc_type_id'] ?? 0,
'other_docs_name' => trim((string)($docNames[$index] ?? '')),
'file_name' => $fileName,
'created_by' => get_session_userid()
];
$insertID = $this->clientKYCDocsModel->insert($insertData);
if (!$insertID) {
return $this->respond(['status' => false, 'code' => 404, 'message' => 'Failed to upload KYC document'], 200);
}
}
$kycDocs = $this->generateKycOthersTable($client_id);
return $this->respond(['status' => true, 'code' => 200, 'data' => $kycDocs], 200);
}
// Backward compatible handler for primary KYC upload
$rules = [ $rules = [
'other_docs_name' => [
'label' => 'Documents Name',
'rules' => 'permit_empty|regex_match[/^[a-zA-Z0-9_\- ]+$/]',
'errors' => [
'regex_match' => 'Document Name can only contain letters, numbers, hyphens, and underscores'
]
],
'file_name' => [ 'file_name' => [
'rules' => 'uploaded[file_name]|max_size[file_name,5120]|ext_in[file_name,pdf,jpg,jpeg,png]', 'rules' => 'uploaded[file_name]|max_size[file_name,5120]|ext_in[file_name,pdf,jpg,jpeg,png]',
'errors' => [ 'errors' => [
@ -1262,36 +1352,23 @@ class ClientController extends AdminController
]); ]);
} }
$data = $this->request->getPost();
$sanitized_data = sanitizeInputArrayAdvanced($data);
$form_type = $sanitized_data['form_type'] ?? null;
$uploadFilePath = WRITEPATH . 'uploads/client_kyc_documents';
unset($data['file_name']);
$file = $this->request->getFile('file_name'); $file = $this->request->getFile('file_name');
$fileName = file_Upload_for_lead($file, $uploadFilePath, UPLOAD_EXT_KYC_DOCS);
$fileName = file_Upload($file, $uploadFilePath, UPLOAD_EXT_KYC_DOCS);
if (!empty($fileName)) { if (!empty($fileName)) {
$sanitized_data['file_name'] = $fileName; $sanitized_data['file_name'] = $fileName;
} }
$sanitized_data['created_by'] = get_session_userid(); $sanitized_data['created_by'] = get_session_userid();
$insertID = $this->clientKYCDocsModel->insert($sanitized_data); $insertID = $this->clientKYCDocsModel->insert($sanitized_data);
if ($insertID) { if ($insertID) {
if ($form_type === 'others') { $kycDocs = $this->generateKycPrimaryTable($client_id);
$kycDocs = $this->generateKycOthersTable($sanitized_data['client_id']); return $this->respond(['status' => true, 'code' => 200, 'data' => $kycDocs, 'file_name' => $file], 200);
} else {
$kycDocs = $this->generateKycPrimaryTable($sanitized_data['client_id']);
} }
return $this->respond(['status' => true, 'code' => 200, 'data' => $kycDocs, 'file_name' => $file
], 200);
} else {
return $this->respond(['status' => false, 'code' => 404, 'message' => 'Failed to upload KYC document'], 200); return $this->respond(['status' => false, 'code' => 404, 'message' => 'Failed to upload KYC document'], 200);
} }
}
/** Edit Client KYC Documents V1 */ /** Edit Client KYC Documents V1 */
public function editClientKYCInfo() public function editClientKYCInfo()
@ -1327,7 +1404,7 @@ class ClientController extends AdminController
$file = $this->request->getFile('file_name'); $file = $this->request->getFile('file_name');
$fileName = file_Upload($file, $uploadFilePath, UPLOAD_EXT_KYC_DOCS); $fileName = file_Upload_for_lead($file, $uploadFilePath, UPLOAD_EXT_KYC_DOCS);
if (!empty($fileName)) { if (!empty($fileName)) {
$sanitized_data['file_name'] = $fileName; $sanitized_data['file_name'] = $fileName;
@ -1352,24 +1429,40 @@ class ClientController extends AdminController
public function deleteClientKycDocs($id = null) public function deleteClientKycDocs($id = null)
{ {
$client_id = $this->request->getGet('client_id');
$updateData = [
'is_active' => 0,
'updated_by' => get_session_userid()
];
$delete = $this->clientKYCDocsModel->where('kyc_doc_type_id', $id)->delete(); $delete = $this->clientKYCDocsModel->update($id, $updateData);
if ($delete) { if ($delete) {
return $this->respond(['status' => true, 'code' => 200, 'id' => $id], 200); $response = ['status' => true, 'code' => 200, 'id' => $id];
} else { if (!empty($client_id)) {
return $this->respond(['status' => false, 'code' => 404, 'message' => 'no data found'], 200); $response['data'] = $this->generateKycPrimaryTable($client_id);
} }
return $this->respond($response, 200);
}
return $this->respond(['status' => false, 'code' => 404, 'message' => 'no data found'], 200);
} }
public function deleteClientKycOtherDocs($id = null) public function deleteClientKycOtherDocs($id = null)
{ {
$client_id = $this->request->getGet('client_id');
$updateData = [
'is_active' => 0,
'updated_by' => get_session_userid()
];
$delete = $this->clientKYCDocsModel->where('id', $id)->delete(); $delete = $this->clientKYCDocsModel->update($id, $updateData);
if ($delete) { if ($delete) {
return $this->respond(['status' => true, 'code' => 200, 'id' => $id], 200); $response = ['status' => true, 'code' => 200, 'id' => $id];
} else { if (!empty($client_id)) {
return $this->respond(['status' => false, 'code' => 404, 'message' => 'no data found'], 200); $response['data'] = $this->generateKycOthersTable($client_id);
} }
return $this->respond($response, 200);
}
return $this->respond(['status' => false, 'code' => 404, 'message' => 'no data found'], 200);
} }
@ -3660,7 +3753,7 @@ class ClientController extends AdminController
$db = db_connect(); $db = db_connect();
$builder = $db->table('kyc_docs kd'); $builder = $db->table('kyc_docs kd');
$builder->select('kd.*, ck.file_name AS upload_doc_name'); $builder->select('kd.*, ck.file_name AS upload_doc_name, ck.id AS client_kyc_id');
$builder->join('clients c', 'kd.kyc_type_id = c.entity_type_id'); $builder->join('clients c', 'kd.kyc_type_id = c.entity_type_id');
$builder->join( $builder->join(
'client_kyc_documents ck', 'client_kyc_documents ck',
@ -4712,7 +4805,8 @@ class ClientController extends AdminController
if (file_exists($file)) { if (file_exists($file)) {
return $this->response->download($file, null)->setFileName($file_name); return $this->response->download($file, null)->setFileName($file_name);
} else { } else {
return "File not found."; $data['message'] = 'The Physical File Not Found';
echo view('errors/404', $data);
} }
} }
@ -9675,7 +9769,8 @@ class ClientController extends AdminController
// download() takes the path as first param and null (or data) as second // download() takes the path as first param and null (or data) as second
return $this->response->download($file, null); return $this->response->download($file, null);
} else { } else {
return "File not found at: " . $file; $data['message'] = 'The Physical File Not Found';
echo view('errors/404', $data);
} }
} }

View File

@ -701,11 +701,11 @@ class PolicyTransactionController extends BaseController
nhance_branch.branch_name as nhance_branch_name, nhance_branch.branch_name as nhance_branch_name,
rm.first_name AS rm_name rm.first_name AS rm_name
') ')
->join('user_teams', 'user_profiles.id = user_teams.user_id') // ->join('user_teams', 'user_profiles.id = user_teams.user_id')
->join('nhance_branch', 'user_profiles.nhance_branch_id = nhance_branch.id','left') ->join('nhance_branch', 'user_profiles.nhance_branch_id = nhance_branch.id','left')
->join('user_profiles AS rm', 'user_profiles.rm_id = rm.id', 'left') ->join('user_profiles AS rm', 'user_profiles.rm_id = rm.id', 'left')
->where('user_teams.team_id', 5) // ->where('user_teams.team_id', 5)
->where('user_teams.is_active', 1) // ->where('user_teams.is_active', 1)
->where('user_profiles.is_active', 1) ->where('user_profiles.is_active', 1)
->groupBy('user_profiles.id', 'asc') ->groupBy('user_profiles.id', 'asc')
->findAll(); ->findAll();
@ -727,7 +727,7 @@ class PolicyTransactionController extends BaseController
->join('user_teams', 'user_profiles.id = user_teams.user_id') ->join('user_teams', 'user_profiles.id = user_teams.user_id')
->join('nhance_branch', 'user_profiles.nhance_branch_id = nhance_branch.id', 'left') ->join('nhance_branch', 'user_profiles.nhance_branch_id = nhance_branch.id', 'left')
->join('user_profiles AS rm', 'user_profiles.rm_id = rm.id', 'left') ->join('user_profiles AS rm', 'user_profiles.rm_id = rm.id', 'left')
->where('user_profiles.role', 3) // ->where('user_profiles.role', 3)
->where('user_profiles.is_active', 1) ->where('user_profiles.is_active', 1)
->groupBy('user_profiles.id', 'asc') ->groupBy('user_profiles.id', 'asc')
->findAll(); ->findAll();
@ -970,8 +970,8 @@ class PolicyTransactionController extends BaseController
'valid_date' => 'Please provide a valid D.O.E date.', 'valid_date' => 'Please provide a valid D.O.E date.',
'regex_match' => 'The D.O.E date format is incorrect. ' 'regex_match' => 'The D.O.E date format is incorrect. '
]], ]],
'emp_count' => ['label' => 'No of Insured', 'rules' => 'permit_empty|numeric', 'errors' => [ 'emp_count' => ['label' => 'No of Employees', 'rules' => 'permit_empty|numeric', 'errors' => [
'numeric' => 'No of Insured must contain only numbers.' 'numeric' => 'No of Employees must contain only numbers.'
]], ]],
'dependent_count' => ['label' => 'No of Dependents', 'rules' => 'permit_empty|numeric', 'errors' => [ 'dependent_count' => ['label' => 'No of Dependents', 'rules' => 'permit_empty|numeric', 'errors' => [
'numeric' => 'No of Dependents must contain only numbers.' 'numeric' => 'No of Dependents must contain only numbers.'
@ -2491,9 +2491,9 @@ class PolicyTransactionController extends BaseController
'errors' => ['valid_date' => 'Please provide a valid Endorsement Effective Date.'] 'errors' => ['valid_date' => 'Please provide a valid Endorsement Effective Date.']
], ],
'emp_count' => [ 'emp_count' => [
'label' => 'No of Insured', 'label' => 'No of Employees',
'rules' => 'permit_empty|numeric', 'rules' => 'permit_empty|numeric',
'errors' => ['numeric' => 'No of Insured must be a number.'] 'errors' => ['numeric' => 'No of Employees must be a number.']
], ],
'dependent_count' => [ 'dependent_count' => [
'label' => 'No of Dependents', 'label' => 'No of Dependents',

View File

@ -1063,15 +1063,21 @@
->where('policy_transaction.is_active', 1) ->where('policy_transaction.is_active', 1)
->where('policy_transaction.action_type', 'inception'); ->where('policy_transaction.action_type', 'inception');
if ( // if (
(!in_array(get_role_id(), [1, 5])) && // (!in_array(get_role_id(), [1, 5])) &&
!( // !(
in_array(MANAGEMENT_TEAM_ID, user_team()) || // in_array(MANAGEMENT_TEAM_ID, user_team()) ||
in_array(FINANCE_TEAM_ID, user_team()) || // in_array(FINANCE_TEAM_ID, user_team()) ||
in_array(BUSINESS_TEAM_ID, user_team()) // in_array(BUSINESS_TEAM_ID, user_team())
) // )
) { // ) {
if (get_role_id() == 4 && in_array(POS_TEAM_ID, user_team())) { // if (get_role_id() == 4 && in_array(POS_TEAM_ID, user_team())) {
// $builder->where('policy_transaction.created_by', get_session_userid());
// }
// }
if ((!in_array(get_role_id(), [1, 5]))) {
if (in_array(POS_TEAM_ID, user_team())) {
$builder->where('policy_transaction.created_by', get_session_userid()); $builder->where('policy_transaction.created_by', get_session_userid());
} }
} }
@ -1165,20 +1171,27 @@
->where('policy_transaction.is_active', 1) ->where('policy_transaction.is_active', 1)
->where('policy_transaction.action_type !=', 'inception'); ->where('policy_transaction.action_type !=', 'inception');
if ( // if (
(!in_array(get_role_id(), [1, 5])) && // (!in_array(get_role_id(), [1, 5])) &&
!( // !(
in_array(MANAGEMENT_TEAM_ID, user_team()) || // in_array(MANAGEMENT_TEAM_ID, user_team()) ||
in_array(FINANCE_TEAM_ID, user_team()) || // in_array(FINANCE_TEAM_ID, user_team()) ||
in_array(BUSINESS_TEAM_ID, user_team()) // in_array(BUSINESS_TEAM_ID, user_team())
) // )
) { // ) {
if (get_role_id() == 4 && in_array(POS_TEAM_ID, user_team())) { // if (get_role_id() == 4 && in_array(POS_TEAM_ID, user_team())) {
// $builder->where('policy_transaction.created_by', get_session_userid());
// }
// }
if ((!in_array(get_role_id(), [1, 5]))) {
if (in_array(POS_TEAM_ID, user_team())) {
$builder->where('policy_transaction.created_by', get_session_userid()); $builder->where('policy_transaction.created_by', get_session_userid());
} }
} }
if ($start_date != 0 && $end_date != 0 && $date_type != 0) { if ($start_date != 0 && $end_date != 0 && $date_type != 0) {
$this->validateDateType($date_type); $this->validateDateType($date_type);
@ -3067,15 +3080,21 @@
$conditions = ""; // start safely $conditions = ""; // start safely
// 1. Role-based restrictions // 1. Role-based restrictions
if ( // if (
(!in_array(get_role_id(), [1, 5])) && // (!in_array(get_role_id(), [1, 5])) &&
!( // !(
in_array(MANAGEMENT_TEAM_ID, user_team()) || // in_array(MANAGEMENT_TEAM_ID, user_team()) ||
in_array(FINANCE_TEAM_ID, user_team()) || // in_array(FINANCE_TEAM_ID, user_team()) ||
in_array(BUSINESS_TEAM_ID, user_team()) // in_array(BUSINESS_TEAM_ID, user_team())
) // )
) { // ) {
if (get_role_id() == 4 && in_array(POS_TEAM_ID, user_team())) { // if (get_role_id() == 4 && in_array(POS_TEAM_ID, user_team())) {
// $conditions .= " AND pt.created_by = " . get_session_userid();
// }
// }
if ((!in_array(get_role_id(), [1, 5]))) {
if (in_array(POS_TEAM_ID, user_team())) {
$conditions .= " AND pt.created_by = " . get_session_userid(); $conditions .= " AND pt.created_by = " . get_session_userid();
} }
} }

View File

@ -39,26 +39,28 @@
<input type="hidden" name="client_id" id="client_id_kyc" value="<?= isset($client['id']) ? $client['id'] : '' ?>"/> <input type="hidden" name="client_id" id="client_id_kyc" value="<?= isset($client['id']) ? $client['id'] : '' ?>"/>
<input type="hidden" name="kyc_doc_type_id" value="" /> <input type="hidden" name="kyc_doc_type_id" value="" />
<div class="form-group"> <div class="form-group">
<div id="additional_docs_rows">
<div class="form-row additional-doc-row" data-row-index="0">
<div class="form-group col-md-4">
<label>Document Name<span class="text-danger">*</span></label>
<input type="text" class="form-control other-doc-name-field" placeholder="Document Name" name="other_docs_name[]" required>
</div>
<div class="form-group col-md-4">
<label>File<span class="text-danger">*</span></label>
<input class="form-control other-doc-file-field" type="file" name="file_name[]" required accept=".pdf, .jpeg, .jpg, .png">
</div>
<div class="form-group col-md-4" style="<?= isset($client['id']) ? 'margin-top: 41px;' : 'margin-top: 30px;' ?>">
<button type="button" class="btn btn-outline-danger remove-additional-doc-row" style="display:none;">Remove</button>
</div>
</div>
</div>
<div class="form-row"> <div class="form-row">
<div class="form-group col-md-4"> <div class="form-group col-md-12">
<label for="emp_code">Document Name<span <button type="button" class="btn btn-outline-primary waves-effect waves-light mr-1" id="add_more_other_docs">Add More</button>
class="text-danger">*</span></label>
<input type="text" class="form-control" id="other_docs_name" placeholder="Document Name" name="other_docs_name" required>
</div>
<div class="form-group col-md-4">
<label for="kyc_docs">File<span
class="text-danger">*</span></label>
<input class="form-control" type="file" name="file_name"
id="kyc_docs_file"
required accept=".pdf, .jpeg, .jpg, .png">
</div>
<!-- <div class="form-group col-md-4 align-self-end"> -->
<div class="form-group col-md-4" style="<?= isset($client['id']) ? 'margin-top: 41px;' : 'margin-top: 30px;' ?>">
<button type="submit" class="btn btn-primary waves-effect waves-light mr-1" id="btnSubmit">Save</button> <button type="submit" class="btn btn-primary waves-effect waves-light mr-1" id="btnSubmit">Save</button>
</div> </div>
</div> </div>
</div> </div>
</form> </form>
</div> </div>
@ -94,6 +96,24 @@
var kycPrimaryKey = $('#client_id_kyc').val(); var kycPrimaryKey = $('#client_id_kyc').val();
function getAdditionalDocRowTemplate(index) {
return `
<div class="form-row additional-doc-row" data-row-index="${index}">
<div class="form-group col-md-4">
<label>Document Name<span class="text-danger">*</span></label>
<input type="text" class="form-control other-doc-name-field" placeholder="Document Name" name="other_docs_name[]" required>
</div>
<div class="form-group col-md-4">
<label>File<span class="text-danger">*</span></label>
<input class="form-control other-doc-file-field" type="file" name="file_name[]" required accept=".pdf, .jpeg, .jpg, .png">
</div>
<div class="form-group col-md-4" style="<?= isset($client['id']) ? 'margin-top: 41px;' : 'margin-top: 30px;' ?>">
<button type="button" class="btn btn-outline-danger remove-additional-doc-row">Remove</button>
</div>
</div>
`;
}
$(document).ready(function(){ $(document).ready(function(){
kycPrimaryKey = $('#kyc_PrimaryKey').val(); kycPrimaryKey = $('#kyc_PrimaryKey').val();
@ -195,6 +215,20 @@
}); });
}); });
$(document).on('click', '#add_more_other_docs', function () {
var nextIndex = $('#additional_docs_rows .additional-doc-row').length;
$('#additional_docs_rows').append(getAdditionalDocRowTemplate(nextIndex));
$('#additional_docs_rows .remove-additional-doc-row').show();
});
$(document).on('click', '.remove-additional-doc-row', function () {
$(this).closest('.additional-doc-row').remove();
if ($('#additional_docs_rows .additional-doc-row').length <= 1) {
$('#additional_docs_rows .remove-additional-doc-row').hide();
}
});
}) })
/*** for Others documents form submit ***/ /*** for Others documents form submit ***/
@ -202,8 +236,35 @@
event.preventDefault(); event.preventDefault();
var isValid = $('#kyc_form').parsley().validate(); var isValid = $('#kyc_form').parsley().validate();
var rowHtml = '';
var form_action = ''; var form_action = '';
var allowedExtensions = ['pdf', 'png', 'jpeg', 'jpg'];
$('#kyc_form .other-doc-name-field, #kyc_form .other-doc-file-field').removeClass('is-invalid');
$('#additional_docs_rows .additional-doc-row').each(function() {
var docNameField = $(this).find('.other-doc-name-field');
var fileField = $(this).find('.other-doc-file-field');
var docNameValue = (docNameField.val() || '').trim();
var selectedFile = fileField[0].files[0];
if (docNameValue === '' || !selectedFile) {
isValid = false;
if (docNameValue === '') {
docNameField.addClass('is-invalid');
}
if (!selectedFile) {
fileField.addClass('is-invalid');
}
return;
}
var fileExtension = selectedFile.name.split('.').pop().toLowerCase();
if (allowedExtensions.indexOf(fileExtension) === -1) {
isValid = false;
fileField.addClass('is-invalid');
}
});
if (isValid) { if (isValid) {
if(kycPrimaryKey === ''){ if(kycPrimaryKey === ''){
@ -240,6 +301,8 @@
} }
$('#kyc_form').trigger('reset'); $('#kyc_form').trigger('reset');
$('#additional_docs_rows .additional-doc-row').not(':first').remove();
$('#additional_docs_rows .remove-additional-doc-row').hide();
}, },
error: function(xhr, status, error) { error: function(xhr, status, error) {
console.error(xhr.responseText); console.error(xhr.responseText);
@ -274,6 +337,8 @@
} }
}); });
} else {
toastr.warning('Please fill all Additional Document rows and upload valid files.', 'Warning');
} }
}); });
@ -291,12 +356,14 @@
if (result.isConfirmed) { if (result.isConfirmed) {
var kyc_id = $(this).attr('data-id'); var kyc_id = $(this).attr('data-id');
$.get('<?php echo base_url('client/kyc/delete/');?>'+kyc_id, function (data) { var client_id = $(this).attr('data-client-id') || $('#client_id_kyc').val();
// console.log('kyc-'+ kyc_id) $.get('<?php echo base_url('client/kyc/delete/');?>'+kyc_id, { client_id: client_id }, function (data) {
// console.log(data) if(data && data.status){
if(data){ if (data.data) {
$('#form_'+kyc_id).show(); $('#tbody').empty();
$('#name_'+kyc_id).hide(); $('#tbody').append(data.data);
}
toastr.success('Document deleted successfully', 'Success');
} }
}) })
} }
@ -317,11 +384,17 @@
if (result.isConfirmed) { if (result.isConfirmed) {
var kyc_id = $(this).attr('data-id'); var kyc_id = $(this).attr('data-id');
$.get('<?php echo base_url('util/kyc-other-docs-delete/');?>'+kyc_id, function (data) { var client_id = $(this).attr('data-client-id') || $('#client_id_kyc').val();
// console.log('kyc-'+ kyc_id) $.get('<?php echo base_url('util/kyc-other-docs-delete/');?>'+kyc_id, { client_id: client_id }, function (data) {
if(data){ if(data && data.status){
if (data.data) {
$('#other_docs').empty();
$('#other_docs').append(data.data);
} else {
$('#kyc-'+ kyc_id).remove(); $('#kyc-'+ kyc_id).remove();
} }
toastr.success('Document deleted successfully', 'Success');
}
}) })
} }
}); });

View File

@ -2,9 +2,17 @@
<?php foreach ($data as $index => $item): ?> <?php foreach ($data as $index => $item): ?>
<tr id="kyc-<?= $item['id'] ?>"> <tr id="kyc-<?= $item['id'] ?>">
<!-- <td><?= $index + 1; ?></td> --> <!-- <td><?= $index + 1; ?></td> -->
<td><?= esc($item['file_name']); ?></td>
<td><?= esc($item['other_docs_name']); ?></td> <td><?= esc($item['other_docs_name']); ?></td>
<td><a id="download_<?= esc($item['id']); ?>" data-id="<?= esc($item['id']); ?>" class="mdi mdi-download" style="font-size:18px;" download title="Download file"></a></td> <td><?= esc($item['file_name']); ?></td>
<td>
<a href="<?= base_url('download-kyc-docs/') . ($item['file_name'] ?? '') ?>" data-id="<?= esc($item['id']); ?>" class="mdi mdi-download mr-2" style="font-size:18px;" target="_blank"></a>
<i
data-id="<?= esc($item['id']); ?>"
data-client-id="<?= esc($client_id); ?>"
class="mdi mdi-delete btnKycOtherDelete"
style="font-size:18px; cursor:pointer;"
></i>
</td>
</tr> </tr>
<?php endforeach; ?> <?php endforeach; ?>
<?php else: ?> <?php else: ?>

View File

@ -17,7 +17,17 @@
<td></td> <td></td>
<?php } else { ?> <?php } else { ?>
<td><?= esc($item['upload_doc_name']); ?></td> <td><?= esc($item['upload_doc_name']); ?></td>
<td><a id="download_<?= esc($item['id']); ?>" data-id="<?= esc($item['id']); ?>" class="mdi mdi-download" style="font-size:18px;" download></a></td> <td>
<a href="<?= base_url('download-kyc-docs/') . ($item['upload_doc_name'] ?? '') ?>" data-id="<?= esc($item['id']); ?>" class="mdi mdi-download mr-2" style="font-size:18px;" target="_blank"></a>
<?php if (!empty($item['upload_doc_name']) && !empty($item['client_kyc_id'])): ?>
<i
data-id="<?= esc($item['client_kyc_id']); ?>"
data-client-id="<?= esc($client_id); ?>"
class="mdi mdi-delete btnKycDelete"
style="font-size:18px; cursor:pointer;"
></i>
<?php endif; ?>
</td>
<?php } ?> <?php } ?>
</tr> </tr>
<?php endforeach; ?> <?php endforeach; ?>

View File

@ -2108,9 +2108,10 @@ body[data-sidebar-size="condensed"] .footer {
</div> </div>
</li> </li>
<?php if ((get_role_id() == 1 || get_role_id() == 5) || (get_role_id() == 4 && in_array(FINANCE_TEAM_ID, user_team())) || (in_array(MANAGEMENT_TEAM_ID, user_team()) || in_array(FINANCE_TEAM_ID, user_team()) || in_array(BUSINESS_TEAM_ID, user_team()) || in_array(POS_TEAM_ID, user_team()))) { ?> <?php if ((get_role_id() == 1 || get_role_id() == 5) || (get_role_id() == 4 && in_array(FINANCE_TEAM_ID, user_team())) || (in_array(MANAGEMENT_TEAM_ID, user_team()) || in_array(FINANCE_TEAM_ID, user_team()) || in_array(BUSINESS_TEAM_ID, user_team()))) { ?>
<?php if (in_array(get_role_id(), [1, 5]) || (get_role_id() == 4 && in_array(FINANCE_TEAM_ID, user_team())) || in_array(MANAGEMENT_TEAM_ID, user_team())) { ?>
<?php if (in_array(get_role_id(), [1, 5]) || (get_role_id() == 4 && in_array(FINANCE_TEAM_ID, user_team())) || in_array(MANAGEMENT_TEAM_ID, user_team()) || in_array(POS_TEAM_ID, user_team())) { ?>
<li> <li>
<a href="#policyReports" data-toggle="collapse" class="waves-effect"> <a href="#policyReports" data-toggle="collapse" class="waves-effect">
<i class="ri-file-chart-fill"></i> <i class="ri-file-chart-fill"></i>
@ -2141,7 +2142,7 @@ body[data-sidebar-size="condensed"] .footer {
</ul> </ul>
</div> </div>
</li> </li>
<?php } ?>
<li> <li>
<a href="#policy_tat_report_type" data-toggle="collapse" class="waves-effect"> <a href="#policy_tat_report_type" data-toggle="collapse" class="waves-effect">
<i class="ri-file-chart-fill"></i> <i class="ri-file-chart-fill"></i>
@ -2163,6 +2164,8 @@ body[data-sidebar-size="condensed"] .footer {
</div> </div>
</li> </li>
<?php } ?>
<!-- This Menu Hide because of Role Merge REF : SVM,SVR,KV. <!-- This Menu Hide because of Role Merge REF : SVM,SVR,KV.
<?php if ((get_role_id() == 1 || get_role_id() == 5) || (in_array(MANAGEMENT_TEAM_ID, user_team()) || in_array(FINANCE_TEAM_ID, user_team()) || in_array(BUSINESS_TEAM_ID, user_team()))) { ?> <?php if ((get_role_id() == 1 || get_role_id() == 5) || (in_array(MANAGEMENT_TEAM_ID, user_team()) || in_array(FINANCE_TEAM_ID, user_team()) || in_array(BUSINESS_TEAM_ID, user_team()))) { ?>
<li> <li>
@ -2221,6 +2224,7 @@ body[data-sidebar-size="condensed"] .footer {
</a> </a>
</li> </li>
<?php } ?> <?php } ?>
<li> <li>
<a href="<?= base_url('/payout/list') ?>"> <a href="<?= base_url('/payout/list') ?>">
<i class="ri-money-rupee-circle-line"></i> <i class="ri-money-rupee-circle-line"></i>
@ -2241,7 +2245,8 @@ body[data-sidebar-size="condensed"] .footer {
</li> </li>
<?php } ?> <?php } ?>
<?php if (in_array(get_role_id(), [1, 5]) || (in_array(MANAGEMENT_TEAM_ID, user_team()) || in_array(FINANCE_TEAM_ID, user_team()) || in_array(BUSINESS_TEAM_ID, user_team()) || in_array(POS_TEAM_ID, user_team()))) { ?>
<?php if (in_array(get_role_id(), [1, 5]) || (in_array(MANAGEMENT_TEAM_ID, user_team()) || in_array(FINANCE_TEAM_ID, user_team()) || in_array(BUSINESS_TEAM_ID, user_team()))) { ?>
<li> <li>
<a href="<?= base_url('/policy_tranction/inception/list2') ?>"> <a href="<?= base_url('/policy_tranction/inception/list2') ?>">
<i class="ri-barcode-line"></i> <i class="ri-barcode-line"></i>
@ -2255,6 +2260,7 @@ body[data-sidebar-size="condensed"] .footer {
</a> </a>
</li> </li>
<?php } ?> <?php } ?>
</ul> </ul>
</div> </div>
</li> </li>

View File

@ -766,7 +766,7 @@
</div> --> </div> -->
<div class="form-group col-md-3" id="no_of_insured_div"> <div class="form-group col-md-3" id="no_of_insured_div">
<label for="addon_policy">No of Insured<span id="base_danger"class="text-danger"></span></label> <label for="addon_policy">No of Employees<span id="base_danger"class="text-danger"></span></label>
<input type="text" class="form-control" id="emp_count" name="emp_count" placeholder="Enter Employeee" onkeypress="return onlyNumbers(event)"> <input type="text" class="form-control" id="emp_count" name="emp_count" placeholder="Enter Employeee" onkeypress="return onlyNumbers(event)">
</div> </div>

View File

@ -661,6 +661,11 @@ function getAddPage(){
if(view == 1){ if(view == 1){
runInceptionAddFlowFromList(); runInceptionAddFlowFromList();
setTimeout(() => {
var backUrl = '<?= base_url("policy_tranction/inception/list"); ?>';
var backButton = `<a href="${backUrl}" aria-label="Back to list"><i class="mdi mdi-arrow-left" style="font-size: 17px;"></i></a>`;
updateNavTitle('Add Policy', backButton);
}, 500);
} }
} }