CHANGE_CLIENT_DOC_PREVIEW : AADHAVAN

This commit is contained in:
aadhavan valli 2024-06-01 09:32:43 +05:30
parent e921262a7f
commit 73af47e38c
8 changed files with 316 additions and 31 deletions

View File

@ -32,8 +32,9 @@ use CodeIgniter\Router\RouteCollection;
$routes->post('verify_otp_client','ClientController::verify_otp');
$routes->get('client_home','ClientController::client_home');
$routes->post('status_client','ClientController::status_client');
$routes->post('doc_rejection','ClientController::doc_rejection');
$routes->match(['get','post'],'/service_list','MasterController::service_list');
$routes->match(['get','post'],'/service_create','MasterController::service_create');
@ -52,7 +53,10 @@ use CodeIgniter\Router\RouteCollection;
$routes->match(['get','post'],'/test','MasterController::test');
$routes->post('doc_generate_otp','MasterController::doc_generate_otp');
$routes->post('doc_verify_otp','MasterController::doc_verify_otp');

View File

@ -188,13 +188,9 @@ class ClientController extends BaseController
return json_encode(true);
}
} else {
$client_data = $this->ClientModel->where('pan_no', $pan_no )->first();
$id = $client_data['client_id'];
$update = $this->ClientModel->update($id , $data);
return false;
return ;
}
} catch (\Exception $e) {
// Handle any exceptions that occur during execution
@ -228,5 +224,24 @@ class ClientController extends BaseController
}
public function doc_rejection()
{
$id = $this->request->getPost('doc_id');
$data=[
'rejection_reason' => $this->request->getPost('rejection_reason'),
'is_approved' => $this->request->getPost('is_approved')
];
if($id){
$update =$this->ClientDocsModel->update($id, $data);
if ($update) {
return json_encode(true);
}
}
return ;
}
}

View File

@ -253,7 +253,7 @@ class MasterController extends BaseController
$data['body_html'] = str_replace($placeHolder,$value,$data['body_html']);
}
echo view('layout/header', ['Data'=>$userData]);
echo view('client_docs_preview',$data);
echo view('layout/footer');
@ -283,14 +283,69 @@ class MasterController extends BaseController
}
public function doc_generate_otp()
{
try {
$mobile_no = $this->request->getPost('mobile_no');
$client_data = $this->ClientModel->where('mobile_no', $mobile_no )->first();
if($client_data){
$id = $this->request->getPost('doc_id');
$data = [
'otp' => '123456' ,
'ip_address' => $this->request->getPost('clientIp')
];
$update = $this->ClientDocsModel->update($id, $data);
if($update){
return json_encode(true);
}
} else {
return false;
}
} catch (\Exception $e) {
// Handle any exceptions that occur during execution
return $this->respond(['status' => 'error', 'code' => 500, 'message' => $e->getMessage()], 500);
}
}
// str_replace("%name%","Gowtham",$data['templateData']->body_html);
public function doc_verify_otp()
{
try {
$id = $this->request->getPost('doc_id');
$otp = $this->request->getPost('otp');
$client_doc_data = $this->ClientDocsModel->where('id', $id )->where('otp', $otp)->first();
$data = ['otp' =>'' ,'rejection_reason' =>''];
if($client_doc_data){
$data['is_approved']=$this->request->getPost('is_approved');
$update = $this->ClientDocsModel->update($id , $data);
if($update){
return json_encode(true);
}
} else {
return json_encode('');
}
} catch (\Exception $e) {
// Handle any exceptions that occur during execution
return $this->respond(['status' => 'error', 'code' => 500, 'message' => $e->getMessage()], 500);
}
}

View File

@ -7,7 +7,7 @@ class ClientDocsModel extends Model
protected $table = 'client_docs';
protected $primaryKey = 'id';
protected $allowedFields = ['client_id','template_id','is_active' ,'created_by','updated_by'];
protected $allowedFields = ['client_id','template_id','rejection_reason','is_approved','otp','ip_address','is_active' ,'created_by','updated_by'];
@ -37,7 +37,7 @@ class ClientDocsModel extends Model
public function docPreview($doc_id){
$this->select('client_docs.is_approved ,client_docs.id as doc_id,client_docs.client_id ,client_docs.updated_at,template.template_name,template.body_html , services.service_name');
$this->select('client_docs.is_approved ,client_docs.id as doc_id,client_docs.client_id ,client_docs.updated_at,client_docs.ip_address,template.template_name,template.body_html , services.service_name');
$this->join('template', 'template.template_id = client_docs.template_id');
$this->join('services', 'services.service_id = template.service_id');
$this->where('client_docs.id', $doc_id);

View File

@ -2,7 +2,12 @@
<!-- ============================================================== -->
<!-- Start Page Content here -->
<!-- ============================================================== -->
<style>
.otp-input {
text-align: center;
letter-spacing: 0.5rem;
}
</style>
<div class="content-page">
<!-- Start Content-->
<div class="container-fluid">
@ -15,9 +20,9 @@
<h4 class="page-title"><?php echo $docData->service_name; ?></h4>
<div class="page-title-right">
<a onclick="window.history.back()" class="btn btn-secondary waves-effect waves-light"> Close </a>
<a href="<?= base_url(''); ?>" class="btn btn-danger waves-effect waves-light"> Reject </a>
<a href="#" class="btn btn-danger waves-effect waves-light" data-toggle="modal" data-target="#reject-modal"> Reject </a>
<?php if($docData->is_approved != 1){ ?>
<a href="<?= base_url(''); ?>" class="btn btn-primary waves-effect waves-light"> Approve </a>
<a href="#" data-toggle="modal" data-target="#approve-modal" class="btn btn-primary waves-effect waves-light"> Approve </a>
<?php } ?>
</div>
</div>
@ -43,7 +48,7 @@
</div>
<div>
<?php if($docData->is_approved == 1){ echo 'Approved at '.date('d-m-Y H:i:s', strtotime($docData->updated_at)).' through OTP sent to '.$clientData->mobile_no.' from ip address 119.22.334' ; } ?>
<?php if($docData->is_approved == 1){ echo 'Approved at '.date('d-m-Y H:i:s', strtotime($docData->updated_at)).' through OTP sent to '.$clientData->mobile_no.' from ip address '.$docData->ip_address; } ?>
</div>
</div>
@ -59,7 +64,226 @@
</div> <!-- content -->
<!-- SignIn modal content -->
<div id="reject-modal" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true" aria-modal="true" data-backdrop="static">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<div class="text-center mt-2 mb-4">
<h4>Document Rejection</h4>
</div>
<input type="hidden" id="doc_id" value="<?php echo $docData->doc_id; ?>">
<div class="form-group">
<label for="rejection_reason">Rejection Reason</label>
<textarea class="form-control" name="rejection_reason" id="rejection_reason" rows="5" required="" placeholder="Rejection Reason"></textarea>
</div>
<div class="form-group text-center">
<button class="btn btn-rounded btn-primary" type="button" id="submit_button">Submit</button>
</div>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<!-- SignIn modal content -->
<div id="approve-modal" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true" aria-modal="true" data-backdrop="static">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<div class="text-center mt-2 mb-4">
<h4>Document Approve</h4>
</div>
<div class="form-group" id="approve_error"></div>
<div class="form-group">
<label for="rejection_reason">Mobile No</label>
<input type="text" readonly class="form-control" id="mobile_no" value="<?php echo $clientData->mobile_no; ?>">
</div>
<div class="loader-mask modal-loader-mask" style="display:none;">
<div class="loader modal-loader" style="display:none;">
Please Wait <img src="<?= base_url() . "public" ?>/assets/images/simple_loader.gif" height="30" width="30" alt="Loading...">
</div>
</div>
<div class="form-group" id="otp_hide" style="display:none;">
<label for="otp">OTP</label>
<input type="text" name="otp" id="otp" class="form-control otp-input" maxlength="6" pattern="\d{6}">
</div>
<div class="form-group mb-0 text-right" id="approve_resend_otp_hide" style="margin-top: 10px;display:none;">
<a href="#" id="approve_resend_otp">Resend OTP</a>
</div>
<div class="form-group text-center">
<button class="btn btn-primary btn-block" id="generate_otp" type="button">Generate OTP </button>
</div>
<div class="form-group text-center" id="submit_hide" style="display:none;">
<button class="btn btn-rounded btn-primary" type="button" id="approve_submit_button">Submit</button>
</div>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<script>
$('#generate_otp').click(function (params) {
event.preventDefault(); // Prevent form submission
$('.loader').fadeIn();
$('.loader-mask').fadeIn();
$.getJSON('https://api.ipify.org?format=json', function(data) {
var clientIp = data.ip;
$.ajax({
url: '<?php echo base_url()."doc_generate_otp"?>',
method: 'POST',
data: {
mobile_no : $('#mobile_no').val(),
doc_id : $('#doc_id').val(),
clientIp: clientIp
},
success: function(response) {
console.log(response);
if(response){
$('#approve_error').html('OTP Sent Successfully').css('color','green');
$('#generate_otp').hide();
$('#otp_hide').show();
$('#submit_hide').show();
$('#approve_resend_otp_hide').show();
}else{
// pan_error.html('PAN number mismatch. Please try again.');
// pan_error.css('color','red');
}
$('.loader').fadeOut();
$('.loader-mask').fadeOut('slow');
},
error: function(xhr, status, error) {
// Handle any errors
$('.loader').fadeOut();
$('.loader-mask').fadeOut('slow');
console.error('Error generating OTP: ' + error);
}
});
})
})
$('#approve_submit_button').click(function (params) {
var formData ={
otp : $('#otp').val(),
doc_id : $('#doc_id').val(),
is_approved: 1
}
$('.loader').fadeIn();
$('.loader-mask').fadeIn();
$('#approve_error').html('');
$.ajax({
type: 'POST',
url: '<?php echo base_url()."doc_verify_otp"?>',
data: formData,
dataType: 'json',
success: function(response) {
console.log(response);
if (response) {
window.location.reload();
}else{
$('#approve_error').html('OTP Incorrect. Please try again.');
$('#approve_error').css('color','red');
}
$('.loader').fadeOut();
$('.loader-mask').fadeOut('slow');
},
error: function(xhr, status, error) {
// Handle error response here
console.error(xhr.responseText);
$('.loader').fadeOut();
$('.loader-mask').fadeOut('slow');
}
});
})
$('#submit_button').click(function (params) {
var formData ={
rejection_reason : $('#rejection_reason').val(),
doc_id : $('#doc_id').val(),
is_approved: 2
}
$('.loader').fadeIn();
$('.loader-mask').fadeIn();
$.ajax({
type: 'POST',
url: '<?php echo base_url()."doc_rejection"?>',
data: formData,
dataType: 'json',
success: function(response) {
console.log(response);
if (response) {
window.location.reload();
}
$('.loader').fadeOut();
$('.loader-mask').fadeOut('slow');
},
error: function(xhr, status, error) {
// Handle error response here
console.error(xhr.responseText);
$('.loader').fadeOut();
$('.loader-mask').fadeOut('slow');
}
});
})
$('#approve_resend_otp').click(function (params) {
$('#approve_error').html('');
event.preventDefault(); // Prevent form submission
$('.loader').fadeIn();
$('.loader-mask').fadeIn();
$.getJSON('https://api.ipify.org?format=json', function(data) {
var clientIp = data.ip;
$.ajax({
url: '<?php echo base_url()."doc_generate_otp"?>',
method: 'POST',
data: {
mobile_no : $('#mobile_no').val(),
doc_id : $('#doc_id').val(),
clientIp: clientIp
},
success: function(response) {
console.log(response);
if(response){
$('#approve_error').html('OTP Sent Successfully').css('color','green');
}else{
// $('#approve_error').html('PAN number mismatch. Please try again.');
// $('#approve_error').css('color','red');
}
$('.loader').fadeOut();
$('.loader-mask').fadeOut('slow');
},
error: function(xhr, status, error) {
// Handle any errors
$('.loader').fadeOut();
$('.loader-mask').fadeOut('slow');
console.error('Error generating OTP: ' + error);
}
});
})
})
</script>
<!-- ============================================================== -->

View File

@ -82,20 +82,3 @@
<!-- ============================================================== -->
<!-- End Page content -->
<!-- ============================================================== -->
<script>
$(document).ready(function() {
$('#datatable-buttons').DataTable({
"ordering": false,
"paging": false,
"info": false,
"searching": true,
"lengthChange": false,
"dom": 'Bfrtip',
});
});
</script>

View File

@ -165,6 +165,8 @@
$('#otp_hide').show();
$('#verify_otp_hide').show();
$('#pan_no').attr('readonly', true);
$('#resend_reenter_otp_hide').show();
}else{
pan_error.html('PAN number mismatch. Please try again.');
pan_error.css('color','red');
@ -199,7 +201,6 @@
$('#client_login_form').submit();
}else{
$('#resend_reenter_otp_hide').show();
$('#pan_error').html('OTP Mismatch. Please try again.').css('color','red');
$('#otp').val('');

View File

@ -38,6 +38,9 @@
<!-- Summernote css -->
<link href="<?= base_url()."public"; ?>/assets/libs/summernote/summernote-bs4.min.css" rel="stylesheet" type="text/css" />
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<link href="<?= base_url() . "public"; ?>/assets/libs/admin-resources/jquery.vectormap/jquery-jvectormap-1.2.2.css" rel="stylesheet" type="text/css" />
<style>
.loader-mask {