FEAT_PAYMENT_STATUS_MODULE

This commit is contained in:
Srinivas-Saravanan 2025-02-28 16:15:12 +05:30
parent 01e22f2b93
commit db7cc3d8eb
10 changed files with 586 additions and 228 deletions

View File

@ -201,7 +201,7 @@ $routes->get('/payment_failure', 'Payment::payment_failure');
$routes->get('/payment_process','Payment::payment_process');
$routes->get('payment_success','Payment::payment_success');
$routes->match(['get','post'],'/subscription_renewal/(:any)','Payment::index/$1');
$routes->match(['get','post'],'payment_status','Payment::paymentStatus');
// Logs

View File

@ -9,12 +9,19 @@ use App\Models\BusinessModel;
use App\Models\BooksModel;
use App\Helpers\NotificationHelper;
use App\Helpers\date_picker;
use App\Models\PaymentStatusModel;
use App\Models\SubscriptionModel;
use Mpdf\Mpdf;
use Dompdf\Dompdf;
class Invoice extends BaseController
{
protected $paymentModel;
public function __construct()
{
$this->paymentModel = new PaymentStatusModel();
}
## For Invoice Listing..
public function index()
{
@ -410,6 +417,7 @@ class Invoice extends BaseController
if ((int)$invoiceType === 2) {
$membership = (!empty($this->request->getPost('membership_id'))) ? $this->request->getPost('membership_id') : "";
$membership_id = substr($membership,0,6);
log_message('error','Membership id : '.$membership != null && $membership != ''? $membership : "");
$this->create_or_update_subscription($invoice_id,$invoice_status, $msg_flag_name,$membership_id);
}
@ -546,6 +554,8 @@ public function create_or_update_subscription($invoice_id,$invoice_status, $msg_
$renewal = 0;
if (!empty($membership_id)){
$sub_id = $subModel->select('sub_id')->where('membership_id',$membership_id)->first();
log_message('error','going to call the function');
$this->checkPaymentStatus($membership_id);
}
foreach ($invoiceItems as $item) {
$product_id = $item['product'];
@ -561,7 +571,7 @@ public function create_or_update_subscription($invoice_id,$invoice_status, $msg_
$membership_id = $this->generate_membership_id(6);
}
// Prepare subscription data
$subscription_data = [
'customer_id' => $customer_id,
@ -594,6 +604,24 @@ public function create_or_update_subscription($invoice_id,$invoice_status, $msg_
}
}
public function checkPaymentStatus($membership_id){
log_message("error","Function Called");
try {
$id = $this->paymentModel->where('membership_id', $membership_id)->first()['id'];
if ($id) {
$data['status'] = 9999;
$data['updated_by'] = (int)get_logged_user_id();
$this->paymentModel->update($id, $data);
log_message('error', 'Payment Status Found and updated by User' . $data['updated_by']);
} else {
log_message("error", "id not found" . $membership_id);
}
}catch (\Exception $e){
log_message('error','Id not found on the checkpaymentstatus ');
}
}
## For Updating Events Details ..

View File

@ -8,6 +8,7 @@ use App\Models\InvoiceModel;
use App\Models\TransactionModel;
use App\Models\SubscriptionModel;
use App\Models\AuthenticationModel;
use App\Models\PaymentStatusModel;
require_once('vendor/autoload.php');
define('PROJECT', 'vendor/paytm/paytm-pg');
@ -15,8 +16,11 @@ define('PROJECT', 'vendor/paytm/paytm-pg');
class Payment extends BaseController
{
protected $paymentModel;
public function __construct() {
helper('encdec_paytm');
$this->paymentModel = new PaymentStatusModel();
}
public function index($membership_id = null)
@ -84,6 +88,7 @@ class Payment extends BaseController
public function pay()
{
// $payment_model = new PaymentStatusModel();
$userAgent = $_SERVER['HTTP_USER_AGENT'];
$payment_method = preg_match('/mobile/i', $userAgent) ? "mobile" : 'website';
$data = $_POST;
@ -107,6 +112,18 @@ class Payment extends BaseController
$data['checkSum'] = $checkSum;
$data['paramList'] = $paramList;
$decryptedChecksum = verifychecksum_e($data['paramList'], env('Merchant_Key'),$data['checkSum']);
$payment_status_data = [
'customer_id' => $CUST_ID,
'membership_id' => $membership_id,
'order_id' => $ORDER_ID,
'scheme_id' => env('RENEWAL_SCHEME_ID'),
'amount' => $TXN_AMOUNT,
'device' => $payment_method == "mobile"? "Mobile":"Web"
];
$result = $this->paymentModel->insert($payment_status_data);
if ($result){
log_message('info','Data Inserted to Payment Status '.json_encode($payment_status_data));
}
log_message('error','Data Sent to Paytm: '.json_encode($data['paramList']));
return view('/tresponse', $data);
}
@ -153,7 +170,7 @@ public function tresponse() {
}
}
public function payment_failure(){
public function payment_failure(){
$paramList = [
'BANKTXNID' => $this->request->getVar('BANKTXNID'),
'CHECKSUMHASH' => $this->request->getVar('CHECKSUMHASH'),
@ -323,8 +340,18 @@ public function payment_process() {
$model4->save($paramList);
log_message('error','transaction details added to transaction table');
$insertId = $model4->insertID();
$payment_status_id = $this->paymentModel->select('id')->where('order_id',$this->request->getVar('ORDERID'))->first()['id'];
// echo "payment status id :";
// var_dump($payment_status_id);die();
$payement_status_update['status'] = $insertId;
// $payement_status_update['status'] = $payment_status_id;
log_message('info','sent data' .json_encode($data));
$updated = $this->paymentModel->update($payment_status_id, $payement_status_update);
log_message('error', 'Payment Status Updated: ' . json_encode($updated));
log_message('info', 'saved data' . json_encode($data));
return redirect()->to(base_url('/payment_success'));
}
@ -406,6 +433,39 @@ public function viewLog($fileName)
return redirect()->back()->with('error', 'Log file not found.');
}
public function paymentStatus(){
if ($this->request->is('get')){
$data['page_name'] = "Payment Status";
$data['selected_data'] = "";
$data['payment_status'] = $this->paymentModel->where('is_active',1)->findAll();
// dd($data);
return $this->render_page('payment_status_view',$data);
}else{
$received_data = $this->request->getPost();
log_message('error','data received from post '.json_encode($received_data));
$dateParts = explode(' - ', $received_data['dateRange']);
$status = $received_data['status'];
$fromDate = $dateParts[0];
$toDate = $dateParts[1];
// Update date conversion format using the global namespace
$fromDate = \DateTime::createFromFormat('d/m/Y', $dateParts[0])->format('Y-m-d');
$toDate = \DateTime::createFromFormat('d/m/Y', $dateParts[1])->format('Y-m-d');
$payment_data['payment_status_data'] = $this->paymentModel->getPaymentData($fromDate, $toDate,$status);
log_message('debug',json_encode($payment_data));
$html = view('payment_status_table',$payment_data);
$data['selected_data'] = $received_data['dateRange'];
// $data = "";
return $this->response->setJSON(['status'=> true,'data' => $data,"html" => $html]);
}
}
}

View File

@ -0,0 +1,52 @@
<?php
namespace App\Models;
use CodeIgniter\Model;
class PaymentStatusModel extends Model
{
protected $DBGroup = 'default';
protected $table = 'payment_status';
protected $primaryKey = 'id';
protected $useAutoIncrement = true;
protected $returnType = 'array';
protected $useSoftDeletes = false;
protected $protectFields = true;
protected $allowedFields = [
'id',
'customer_id',
'membership_id',
'scheme_id',
'amount',
'device',
'status',
'is_active',
'order_id'
];
public function getPaymentData($fromDate = null, $toDate = null, $status)
{
$builder = $this->db->table('payment_status')->select('payment_status.*,concat(customers.first_name," ",customers.last_name) as customer_name,books.short_code as scheme_name')
->join('customers','customers.customer_id = payment_status.customer_id and customers.isactive = 1')
->join('books','books.book_id = payment_status.scheme_id and books.isactive = 1');
if (!empty($fromDate) && !empty($toDate)) {
$builder->where('payment_status.created_at >=', $fromDate.' 00:00:00')
->where('payment_status.created_at <=', $toDate. ' 23:59:59');
}
if ($status == 1) {
$builder->where('payment_status.status >', 0); // Correct usage of where() for status
}else{
$builder->where('payment_status.status', null);
}
$builder->where('payment_status.is_active',1);
$data = $builder->get()->getResultArray();
log_message('error',json_encode($this->db->getLastQuery()->getQuery()));
return $data; // Fetch and return as an array
}
}

View File

@ -0,0 +1,23 @@
<table id="datatable-buttons" class="table table-striped nowrap w-100">
<thead class="custom-thead">
<tr>
<th><b>Customer Name</b></th>
<th><b>Membership ID</b></th>
<th><b>SCHEME Name</b></th>
<th><b>ORDER ID</b></th>
<th><b>Amount</b></th>
</tr>
</thead>
<tbody class="custom-tbody">
<?php foreach ($payment_status_data as $row) { ?>
<tr>
<td><?= isset($row['customer_name'])?$row['customer_name']:"-"?></td>
<td><?= isset($row['membership_id'])?$row['membership_id']:"-"?></td>
<td><?= isset($row['scheme_name'])?$row['scheme_name']:"-"?></td>
<td><?= isset($row['order_id'])?$row['order_id']:"-"?></td>
<td><?= isset($row['amount'])?$row['amount']:"-"?></td>
</tr>
<?php } ?>
</tbody>
</table>

View File

@ -0,0 +1,175 @@
<style>
.custom-thead th,
.custom-tbody td {
white-space: initial !important;
}
.custom-thead th {
text-align: center;
/* Center-align the main table column headings */
}
td {
text-align: center;
}
</style>
<div class="card">
<div class="card-body">
<!-- start page title -->
<div class="row d-flex align-items-center">
<!-- Title Section -->
<div class="col-md-3">
<div class="page-title-box page-title-box-alt">
<h4 class="page-title"><?= $page_name ?></h4>
</div>
</div>
<div class="col-md-4">
<div class="custom-control custom-switch" style="text-align: left;">
<input type="checkbox" class="custom-control-input" id="statusSwitch" data-parsley-multiple="statusSwitch" checked>
<label class="custom-control-label" for="statusSwitch">Payment receieved</label>
</div>
</div>
<!-- Form Section -->
<div class="col-md-5">
<!-- <form id="payment_status_form"> -->
<div class="form-group">
<div class="row">
<div class="col-md-7">
<input class="form-control input-daterange-datepicker" type="text" id="daterange" name="date" value="<?php echo $selected_data; ?>" />
</div>
<div class="col-md-5">
<button onclick="submitdateRange()" id="dateRangeButton" class="btn btn-primary">Get Details</button>
</div>
</div>
</div>
<!-- </form> -->
</div>
</div>
<div id="payment_status_table"></div>
</div>
</div>
<script>
$(document).ready(function() {
var $select_data = '<?php echo $selected_data; ?>';
var dateRangeFilter = $('input.input-daterange-datepicker')
.daterangepicker({
locale: {
format: 'DD/MM/YYYY',
cancelLabel: 'Clear'
},
startDate: $select_data ? moment($select_data.split(' - ')[0], 'DD/MM/YYYY') : moment(),
endDate: $select_data ? moment($select_data.split(' - ')[1], 'DD/MM/YYYY') : moment(),
ranges: {
'Today': [moment(), moment()],
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
'This Month': [moment().startOf('month'), moment().endOf('month')]
}
})
.on('apply.daterangepicker', function(ev, picker) {
var formattedStartDate = picker.startDate.format('DD/MM/YYYY');
var formattedEndDate = picker.endDate.format('DD/MM/YYYY');
var selectedDateRange = formattedStartDate + ' - ' + formattedEndDate;
$(this).val(selectedDateRange);
})
.on('cancel.daterangepicker', function() {
$(this).val('');
});
$('.today-btn').on('click', function() {
var today = moment();
dateRangeFilter.data('daterangepicker').setStartDate(today);
dateRangeFilter.data('daterangepicker').setEndDate(today);
dateRangeFilter.val(today.format('DD/MM/YYYY') + ' - ' + today.format('DD/MM/YYYY'));
dateRangeFilter.trigger('apply.daterangepicker');
});
// Trigger "Today" button click to set it as default if $select_data is empty
if ($select_data === '') {
$('.today-btn').trigger('click');
}
});
</script>
<script>
$(document).ready(function() {
var status = $('#statusSwitch').is(':checked') ? 1 : 0;
var daterange = getPreviousMonthDateRange();
console.log("date range - ", daterange);
getTableData(daterange, status);
})
function submitdateRange() {
event.stopPropagation();
console.log("button clicked");
var status = $('#statusSwitch').is(':checked') ? 1 : 0;
var daterange = $('#daterange').val();
getTableData(daterange, status);
}
$('#statusSwitch').change(function() {
console.log("status is switched");
var status = $('#statusSwitch').is(':checked') ? 1 : 0;
var daterange = $('#daterange').val();
getTableData(daterange, status);
})
function getTableData(daterange, status) {
console.log('Function called:', daterange, status);
var formData = {
dateRange: daterange,
status: status
};
console.log('Form Data:', formData);
$.ajax({
url: "<?= base_url('payment_status') ?>",
method: "POST",
data: formData,
dataType: "json",
success: function(response) {
if (response.status) {
console.log("Response Data:", response.data);
$('#payment_status_table').html(response.html);
setTable();
} else {
console.log("Error: Unexpected response format.");
}
},
error: function(xhr, status, error) {
console.log("AJAX Error:", status, error);
}
});
}
function setTable() {
var table = $('#datatable-buttons').DataTable({
"order": [
[2, 'asc']
],
dom: 'Bfrtip', // 'B' means Buttons
buttons: [],
});
}
function getPreviousMonthDateRange() {
let today = new Date();
let previousMonth = new Date(today);
previousMonth.setMonth(previousMonth.getMonth() - 1);
let formatDate = (date) => {
let day = date.getDate().toString().padStart(2, '0');
let month = (date.getMonth() + 1).toString().padStart(2, '0'); // Months are 0-indexed
let year = date.getFullYear();
return `${day}/${month}/${year}`;
};
return `${formatDate(previousMonth)} - ${formatDate(today)}`;
}
</script>

View File

@ -156,6 +156,7 @@
<script>
$(document).ready(function () {
var table = $('#datatable-buttons').DataTable({
"order": [[1, 'desc']],
dom: '<"row mb-3"<"col-md-6 d-flex align-items-center"B><"col-md-6 d-flex justify-content-end"f>>rtip',
buttons: [
{

View File

@ -149,7 +149,7 @@
var table = $('#datatable-buttons').DataTable({
"order": [
[0, 'desc']
[1, 'desc']
],
"dom": '<"row mb-3"<"col-md-6 d-flex align-items-center"B><"col-md-6 d-flex justify-content-end"f>>rtip',
buttons: [{

View File

@ -69,6 +69,7 @@
<script>
$(document).ready(function () {
var table = $('#datatable-buttons').DataTable({
"order": [[0, 'desc']],
// "order": [[0, 'desc']],
"dom": '<"row mb-3"<"col-md-6 d-flex align-items-center"B><"col-md-6 d-flex justify-content-end"f>>rtip',
buttons: [

View File

@ -1,167 +1,179 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title><?= $browser_title; ?></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta content="A fully featured admin theme which can be used to build CRM, CMS, etc." name="description" />
<meta content="Coderthemes" name="author" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!-- App favicon -->
<link rel="shortcut icon" href="<?= $favicon; ?>">
<!-- plugin css -->
<link href="<?= base_url()."public/assets/libs/multiselect/css/multi-select.css" ?>" rel="stylesheet" type="text/css" />
<link href="<?= base_url()."public/assets/libs/select2/css/select2.min.css" ?>" rel="stylesheet" type="text/css" />
<!-- <link href="<?= base_url()."public/assets/libs/selectize/css/selectize.bootstrap3.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" />
<head>
<meta charset="utf-8" />
<title><?= $browser_title; ?></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta content="A fully featured admin theme which can be used to build CRM, CMS, etc." name="description" />
<meta content="Coderthemes" name="author" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!-- App favicon -->
<link rel="shortcut icon" href="<?= $favicon; ?>">
<link href="<?= base_url()."public/assets/libs/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css" ?>" rel="stylesheet" type="text/css" />
<link href="<?= base_url()."public/assets/libs/clockpicker/bootstrap-clockpicker.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">
<!-- third party css end -->
<!-- plugin css -->
<link href="<?= base_url() . "public/assets/libs/multiselect/css/multi-select.css" ?>" rel="stylesheet" type="text/css" />
<link href="<?= base_url() . "public/assets/libs/select2/css/select2.min.css" ?>" rel="stylesheet" type="text/css" />
<!-- <link href="<?= base_url() . "public/assets/libs/selectize/css/selectize.bootstrap3.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" />
<link href="<?= base_url() . "public/assets/libs/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css" ?>" rel="stylesheet" type="text/css" />
<link href="<?= base_url() . "public/assets/libs/clockpicker/bootstrap-clockpicker.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="https://cdn.jsdelivr.net/gh/gitbrent/bootstrap4-toggle@3.6.1/css/bootstrap4-toggle.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/gh/gitbrent/bootstrap4-toggle@3.6.1/js/bootstrap4-toggle.min.js"></script>">
<!-- third party css end -->
<!-- App css -->
<link href="<?= base_url()."public/assets/css/bootstrap.min.css" ?>" rel="stylesheet" type="text/css" id="bs-default-stylesheet" />
<link href="<?= base_url()."public/assets/css/app.min.css" ?>" rel="stylesheet" type="text/css" id="app-default-stylesheet" />
<!-- App css -->
<link href="<?= base_url() . "public/assets/css/bootstrap.min.css" ?>" rel="stylesheet" type="text/css" id="bs-default-stylesheet" />
<link href="<?= base_url() . "public/assets/css/app.min.css" ?>" rel="stylesheet" type="text/css" id="app-default-stylesheet" />
<link href="<?= base_url()."public/assets/css/bootstrap-dark.min.css" ?>" rel="stylesheet" type="text/css" id="bs-dark-stylesheet" />
<link href="<?= base_url()."public/assets/css/app-dark.min.css" ?>" rel="stylesheet" type="text/css" id="app-dark-stylesheet" />
<link href="<?= base_url() . "public/assets/css/bootstrap-dark.min.css" ?>" rel="stylesheet" type="text/css" id="bs-dark-stylesheet" />
<link href="<?= base_url() . "public/assets/css/app-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/summernote/summernote-bs4.min.css" ?>" rel="stylesheet" type="text/css" />
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<!-- icons -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css">
<link href="<?= base_url() . "public/assets/css/icons.min.css" ?>" rel="stylesheet" type="text/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>
<!-- toster alert -->
<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">
<!-- toster alert -->
<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">
<style>
/* Override toastr font color */
.toast-warning {
<style>
/* Override toastr font color */
.toast-warning {
color: black !important;
background-color: #edd179 !important; /* Set background color to a solid color */
opacity: 1 !important; /* Set opacity to 1 to remove transparency */
}
.toast-success {
background-color: #edd179 !important;
/* Set background color to a solid color */
opacity: 1 !important;
/* Set opacity to 1 to remove transparency */
}
.toast-success {
color: black !important;
background-color: #2aa762 !important; /* Set background color to a solid color */
opacity: 1 !important; /* Set opacity to 1 to remove transparency */
}
background-color: #2aa762 !important;
/* Set background color to a solid color */
opacity: 1 !important;
/* Set opacity to 1 to remove transparency */
}
.icon-large {
font-size: 1.5em; /* Adjust the font size as needed */
}
.debug-bar-ndisplay {
display: none !important;
}
</style>
.icon-large {
font-size: 1.5em;
/* Adjust the font size as needed */
}
<script>
toastr.options = {
"timeOut": 5000,
"closeButton": true,
};
</script>
</head>
.debug-bar-ndisplay {
display: none !important;
}
</style>
<body class="loading">
<script>
toastr.options = {
"timeOut": 5000,
"closeButton": true,
};
</script>
</head>
<!-- Begin page -->
<div id="wrapper"> <!-- close div on footer.php -->
<body class="loading">
<!-- ========== Left Sidebar Start ========== -->
<div class="left-side-menu">
<!-- Begin page -->
<div id="wrapper"> <!-- close div on footer.php -->
<!-- LOGO -->
<div class="logo-box">
<a href="<?= base_url('dashboard')?>" class="logo logo-dark text-center">
<span class="logo-sm">
<img src="<?= $company_logo_small; ?>" alt="<?= $company_short_name; ?>" height="24">
</span>
<span class="logo-lg">
<img src="<?= $company_logo_large; ?>" alt="<?= $company_name; ?>" height="50">
</span>
</a>
<!-- ========== Left Sidebar Start ========== -->
<div class="left-side-menu">
<a href="<?= base_url('dashboard')?>" class="logo logo-light text-center">
<span class="logo-sm">
<img src="<?= $company_logo_small; ?>" alt="<?= $company_short_name; ?>" height="24">
</span>
<span class="logo-lg">
<img src="<?= $company_logo_large; ?>" alt="<?= $company_name; ?>" height="50">
</span>
</a>
<!-- LOGO -->
<div class="logo-box">
<a href="<?= base_url('dashboard') ?>" class="logo logo-dark text-center">
<span class="logo-sm">
<img src="<?= $company_logo_small; ?>" alt="<?= $company_short_name; ?>" height="24">
</span>
<span class="logo-lg">
<img src="<?= $company_logo_large; ?>" alt="<?= $company_name; ?>" height="50">
</span>
</a>
<a href="<?= base_url('dashboard') ?>" class="logo logo-light text-center">
<span class="logo-sm">
<img src="<?= $company_logo_small; ?>" alt="<?= $company_short_name; ?>" height="24">
</span>
<span class="logo-lg">
<img src="<?= $company_logo_large; ?>" alt="<?= $company_name; ?>" height="50">
</span>
</a>
</div>
<div class="h-100" data-simplebar>
<!-- User box -->
<div class="user-box text-center">
<img src="<?= $profile_picture ?>" alt="user-img" title="Mat Helme" class="rounded-circle avatar-md">
<div class="dropdown">
<a href="javascript: void(0);" class="text-reset dropdown-toggle h5 mt-2 mb-1 d-block"
data-toggle="dropdown"><?= $loggedin_person; ?></a>
<div class="dropdown-menu user-pro-dropdown">
<!-- item-->
<a href="javascript:void(0);" class="dropdown-item notify-item">
<i class="fe-user mr-1"></i>
<span>My Account</span>
</a>
<!-- item-->
<a href="javascript:void(0);" class="dropdown-item notify-item">
<i class="fe-settings mr-1"></i>
<span>Settings</span>
</a>
<!-- item-->
<a href="javascript:void(0);" class="dropdown-item notify-item">
<i class="fe-lock mr-1"></i>
<span>Lock Screen</span>
</a>
<!-- item-->
<a href="logout" class="dropdown-item notify-item">
<i class="fe-log-out mr-1"></i>
<span>Logout</span>
</a>
</div>
</div>
<p class="text-reset"><?= $loggedin_person_role; ?></p>
</div>
<div class="h-100" data-simplebar>
<!--- Sidemenu -->
<div id="sidebar-menu">
<!-- User box -->
<div class="user-box text-center">
<img src="<?= $profile_picture ?>" alt="user-img" title="Mat Helme" class="rounded-circle avatar-md">
<div class="dropdown">
<a href="javascript: void(0);" class="text-reset dropdown-toggle h5 mt-2 mb-1 d-block"
data-toggle="dropdown"><?= $loggedin_person; ?></a>
<div class="dropdown-menu user-pro-dropdown">
<!-- item-->
<a href="javascript:void(0);" class="dropdown-item notify-item">
<i class="fe-user mr-1"></i>
<span>My Account</span>
</a>
<!-- item-->
<a href="javascript:void(0);" class="dropdown-item notify-item">
<i class="fe-settings mr-1"></i>
<span>Settings</span>
</a>
<!-- item-->
<a href="javascript:void(0);" class="dropdown-item notify-item">
<i class="fe-lock mr-1"></i>
<span>Lock Screen</span>
</a>
<!-- item-->
<a href="logout" class="dropdown-item notify-item">
<i class="fe-log-out mr-1"></i>
<span>Logout</span>
</a>
</div>
</div>
<p class="text-reset"><?= $loggedin_person_role; ?></p>
</div>
<!--- Sidemenu -->
<div id="sidebar-menu">
<ul id="side-menu">
<li>
<a href="<?= base_url()."dashboard"; ?>">
<i class="ri-dashboard-line"></i>
<!-- <span class="badge badge-success badge-pill float-right">3</span> -->
<span> Dashboard </span>
</a>
</li>
<?php if ($loggedin_person_role !== 'sadmin') : ?>
<li>
<a href="<?= base_url()."customer_list"; ?>">
<i class="ri-map-pin-user-fill"></i>
<ul id="side-menu">
<li>
<a href="<?= base_url() . "dashboard"; ?>">
<i class="ri-dashboard-line"></i>
<!-- <span class="badge badge-success badge-pill float-right">3</span> -->
<span> Dashboard </span>
</a>
</li>
<?php if ($loggedin_person_role !== 'sadmin') : ?>
<li>
<a href="<?= base_url() . "customer_list"; ?>">
<i class="ri-map-pin-user-fill"></i>
<span> Customer </span>
</a>
</li>
<?php endif; ?>
<?php if ($loggedin_person_role !== 'sadmin') : ?>
<li>
</li>
<?php endif; ?>
<?php if ($loggedin_person_role !== 'sadmin') : ?>
<li>
<a href="#salesLayouts" data-toggle="collapse">
<i class="ri-file-chart-fill"></i>
<span> Sales </span>
@ -170,20 +182,20 @@
<div class="collapse" id="salesLayouts">
<ul class="nav-second-level">
<li>
<a href="<?= base_url()."invoice_list"; ?>">Online Sales</a>
<a href="<?= base_url() . "invoice_list"; ?>">Online Sales</a>
</li>
<!-- <li>
<a href="<?= base_url()."mem_inv_rp"; ?>">Membership Invoice Report</a>
<a href="<?= base_url() . "mem_inv_rp"; ?>">Membership Invoice Report</a>
</li> -->
<li>
<a href="<?= base_url()."offline_invoice"; ?>">Offline Sales</a>
<a href="<?= base_url() . "offline_invoice"; ?>">Offline Sales</a>
</li>
</ul>
</div>
</li>
<?php endif; ?>
<?php if ($loggedin_person_role !== 'sadmin') : ?>
<?php endif; ?>
<?php if ($loggedin_person_role !== 'sadmin') : ?>
<li>
<a href="#subscribersLayouts" data-toggle="collapse">
<i class="ri-shield-user-line"></i>
@ -193,74 +205,74 @@
<div class="collapse" id="subscribersLayouts">
<ul class="nav-second-level">
<li>
<a href="<?= base_url()."subscribers_list"; ?>">Membership list</a>
<a href="<?= base_url() . "subscribers_list"; ?>">Membership list</a>
</li>
<li>
<a href="<?= base_url()."notify_the_expiry_subscribers"; ?>">Send Expiry message</a>
<a href="<?= base_url() . "notify_the_expiry_subscribers"; ?>">Send Expiry message</a>
</li>
</ul>
</div>
</li>
<!-- <li>
<a href="<?= base_url()."subscribers_list"; ?>">
<a href="<?= base_url() . "subscribers_list"; ?>">
<i class="ri-shield-user-line"></i>
<span>Members </span>
</a>
</li> -->
<?php endif; ?>
<?php if ($loggedin_person_role !== 'manager' && $loggedin_person_role !== 'sadmin') : ?>
<li>
<a href="<?= base_url()."scheme_list"; ?>">
<i class="ri-currency-line"></i>
<?php endif; ?>
<?php if ($loggedin_person_role !== 'manager' && $loggedin_person_role !== 'sadmin') : ?>
<li>
<a href="<?= base_url() . "scheme_list"; ?>">
<i class="ri-currency-line"></i>
<span> Schemes </span>
</a>
</li>
<?php endif; ?>
<?php if ($loggedin_person_role !== 'manager'&& $loggedin_person_role !== 'sadmin') : ?>
<li>
<a href="<?= base_url()."book_list"; ?>">
</li>
<?php endif; ?>
<?php if ($loggedin_person_role !== 'manager' && $loggedin_person_role !== 'sadmin') : ?>
<li>
<a href="<?= base_url() . "book_list"; ?>">
<i class="ri-book-open-line"></i>
<span> Books</span>
</a>
</li>
<?php endif; ?>
<?php if ($loggedin_person_role !== 'manager') : ?>
<?php endif; ?>
<?php if ($loggedin_person_role !== 'manager') : ?>
<li>
<a href="<?= base_url()."user_list"; ?>">
<a href="<?= base_url() . "user_list"; ?>">
<i class="ri-user-line"></i>
<span> Users </span>
</a>
</li>
<?php endif; ?>
<?php if ($loggedin_person_role === 'sadmin') : ?>
<li>
<a href="<?= base_url()."sitesetting_list"; ?>">
<i class="ri-list-settings-line"></i>
<span> Site Setting </span>
</a>
</li>
<li>
<a href="<?= base_url()."business_list"; ?>">
<i class="ri-briefcase-4-fill"></i>
<span> Business </span>
</a>
</li>
<?php endif; ?>
<?php if ($loggedin_person_role !== 'manager' && $loggedin_person_role !== 'sadmin') : ?>
<li>
<a href="<?= base_url()."event_list"; ?>">
<i class="fe-shopping-bag"></i>
<?php endif; ?>
<?php if ($loggedin_person_role === 'sadmin') : ?>
<li>
<a href="<?= base_url() . "sitesetting_list"; ?>">
<i class="ri-list-settings-line"></i>
<span> Site Setting </span>
</a>
</li>
<li>
<a href="<?= base_url() . "business_list"; ?>">
<i class="ri-briefcase-4-fill"></i>
<span> Business </span>
</a>
</li>
<?php endif; ?>
<?php if ($loggedin_person_role !== 'manager' && $loggedin_person_role !== 'sadmin') : ?>
<li>
<a href="<?= base_url() . "event_list"; ?>">
<i class="fe-shopping-bag"></i>
<span> Events </span>
</a>
</li>
<?php endif; ?>
</li>
<?php endif; ?>
<?php if ($loggedin_person_role !== 'manager' && $loggedin_person_role !== 'sadmin') : ?>
<?php endif; ?>
<?php if ($loggedin_person_role !== 'manager' && $loggedin_person_role !== 'sadmin') : ?>
<?php if ($loggedin_person_role !== 'manager' && $loggedin_person_role !== 'sadmin') : ?>
<?php endif; ?>
<?php if ($loggedin_person_role !== 'manager' && $loggedin_person_role !== 'sadmin') : ?>
<li>
<a href="#reportLayouts" data-toggle="collapse">
<i class="ri-file-chart-fill"></i>
@ -270,37 +282,44 @@
<div class="collapse" id="reportLayouts">
<ul class="nav-second-level">
<li>
<a href="<?= base_url()."expired_customer_report"; ?>">Membership Renewal</a>
<a href="<?= base_url() . "expired_customer_report"; ?>">Membership Renewal</a>
</li>
<li>
<a href="<?= base_url()."general_inv_rp"; ?>">Sales</a>
<a href="<?= base_url() . "general_inv_rp"; ?>">Sales</a>
</li>
<!-- <li>
<a href="<?= base_url()."mem_inv_rp"; ?>">Membership Invoice Report</a>
<a href="<?= base_url() . "mem_inv_rp"; ?>">Membership Invoice Report</a>
</li> -->
<li>
<a href="<?= base_url()."book_publishwise_Report"; ?>">Books Published</a>
<a href="<?= base_url() . "book_publishwise_Report"; ?>">Books Published</a>
</li>
<li>
<a href="<?= base_url()."itemwise_report"; ?>">Bookswise</a>
<a href="<?= base_url() . "itemwise_report"; ?>">Bookswise</a>
</li>
<li>
<a href="<?= base_url()."itemwise_report_with_payment_method"; ?>">Sales by Books</a>
<a href="<?= base_url() . "itemwise_report_with_payment_method"; ?>">Sales by Books</a>
</li>
<li>
<a href="<?= base_url()."received_payments_report"; ?>">Payment received</a>
</li>
<li>
<a href="<?= base_url()."report_userwise_and_eventwise"; ?>">User Eventwise-Sales</a>
<a href="<?= base_url() . "received_payments_report"; ?>">Payment received</a>
</li>
<li>
<a href="<?= base_url() . "report_userwise_and_eventwise"; ?>">User Eventwise-Sales</a>
</li>
</ul>
</div>
</li>
<?php endif; ?>
<?php endif; ?>
<?php if ($loggedin_person_role !== 'manager' && $loggedin_person_role !== 'sadmin') : ?>
<?php if ($loggedin_person_role !== 'manager' && $loggedin_person_role !== 'sadmin') : ?>
<li>
<a href="<?= base_url('payment_status') ?>">
<i class="fas fa-hourglass-half"></i>
<span> Payment Status </span>
</a>
</li>
<li>
<a href="#notificationsLayouts" data-toggle="collapse">
<i class="ri-notification-3-line"></i>
@ -310,46 +329,45 @@
<div class="collapse" id="notificationsLayouts">
<ul class="nav-second-level">
<li>
<a href="<?= base_url()."template_creation"; ?>">Templates</a>
<a href="<?= base_url() . "template_creation"; ?>">Templates</a>
</li>
<li>
<a href="<?= base_url()."customer_group"; ?>">Customer Group</a>
<a href="<?= base_url() . "customer_group"; ?>">Customer Group</a>
</li>
<li>
<a href="<?= base_url()."campaign_creation"; ?>">Campaign</a>
<a href="<?= base_url() . "campaign_creation"; ?>">Campaign</a>
</li>
<li>
<a href="<?= base_url()."acknowlegdement"; ?>">Campaign Status</a>
<a href="<?= base_url() . "acknowlegdement"; ?>">Campaign Status</a>
</li>
<li>
<a href="<?= base_url()."custom_notifications"; ?>">Ad-hoc Messages</a>
<a href="<?= base_url() . "custom_notifications"; ?>">Ad-hoc Messages</a>
</li>
</ul>
</div>
</li>
<?php endif; ?>
</ul>
<?php endif; ?>
</ul>
</div>
<!-- End Sidebar -->
<div class="clearfix"></div>
</div>
<!-- Sidebar -left -->
<!-- End Sidebar -->
<div class="clearfix"></div>
</div>
<!-- Left Sidebar End -->
<!-- Sidebar -left -->
<!-- ============================================================== -->
<!-- Start Page Content here -->
<!-- ============================================================== -->
</div>
<!-- Left Sidebar End -->
<!-- ========== Header-file content-page-class Start here ========== -->
<div class="content-page"> <!-- close div on footer.php -->
<!-- ============================================================== -->
<!-- Start Page Content here -->
<!-- ============================================================== -->
<!-- ========== Header-file content-page-class Start here ========== -->
<div class="content-page"> <!-- close div on footer.php -->
<!-- ========== Header-file content-class Start here ========== -->
<div class="content"> <!-- close div on footer.php -->
<div class="content"> <!-- close div on footer.php -->