CHANGE_CLIENT_DOC_PREVIEW : AADHAVAN
This commit is contained in:
parent
e921262a7f
commit
73af47e38c
@ -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');
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -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 ;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
<!-- ============================================================== -->
|
||||
|
||||
@ -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>
|
||||
@ -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('');
|
||||
|
||||
@ -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 {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user