256 lines
10 KiB
PHP
Executable File
256 lines
10 KiB
PHP
Executable File
<!-- start page title -->
|
|
<div class="row d-flex align-items-center">
|
|
<!-- Title Section -->
|
|
<div class="col-md-4">
|
|
<div class="page-title-box page-title-box-alt">
|
|
<h4 class="page-title"><?= $page_name ?></h4>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Form Section -->
|
|
<div class="col-md-5 offset-md-3">
|
|
<form action="<?php echo base_url('expired_customer_report'); ?>" method="post">
|
|
<div class="form-group">
|
|
<div class="row">
|
|
<div class="col-md-7">
|
|
<input class="form-control input-daterange-datepicker" type="text" name="date" value="<?php echo $selected_data; ?>" />
|
|
</div>
|
|
<div class="col-md-5">
|
|
<button type="submit" class="btn btn-primary">Generate Report</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<div class="table-responsive">
|
|
<table id="datatable-buttons" class="table table-striped nowrap w-100">
|
|
<thead>
|
|
<tr>
|
|
<th hidden>id</th>
|
|
<th>Member Name</th>
|
|
<th>Membership ID</th>
|
|
<th>From Subscription</th>
|
|
<th>To Subscription</th>
|
|
<th>Mobile Number</th>
|
|
<th>Email</th>
|
|
<th>Scheme Code</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php foreach ($expired_customers as $row) { ?>
|
|
<tr>
|
|
<td hidden><?= isset($row['sub_id'])?$row['sub_id']: " " ?></td>
|
|
<td style="text-align: left;"><?= $row['first_name'] . ' ' . (isset($row['last_name']) ? $row['last_name'] : "") ?></td>
|
|
<td style="text-align: center;"><?= $row['membership_id'] ?></td>
|
|
<td style="text-align: center;"><?= date("d/m/Y", strtotime($row['from_subscription'])); ?></td>
|
|
<td style="text-align: center;"><?= date("d/m/Y", strtotime($row['to_subscription'])); ?></td>
|
|
<td><?= $row['mobile_no'] ?></td>
|
|
<td style="text-align: left;"><?= $row['email'] ?></td>
|
|
<td><?= $row['short_code'] ?></td>
|
|
</tr>
|
|
<?php } ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div> <!-- end card body-->
|
|
</div> <!-- end card -->
|
|
</div><!-- end col-->
|
|
</div>
|
|
<!-- end row -->
|
|
Sri Kasi, 12, M.V. Naidu Street, Chetpet,Chennai -
|
|
<script>
|
|
$(document).ready(function() {
|
|
var table = $('#datatable-buttons').DataTable({
|
|
"order": [
|
|
[2, 'asc']
|
|
],
|
|
"dom": '<"row"<"col-md-6"B><"col-md-6"f>>rtip',
|
|
buttons: [
|
|
{
|
|
extend: 'print',
|
|
title: '<?= $page_name ?>',
|
|
text: 'Print',
|
|
customize: function(win) {
|
|
// Exclude the first and last columns
|
|
$(win.document.body).find('table').find('th:first-child, td:first-child').remove();
|
|
}
|
|
|
|
},
|
|
{
|
|
extend: 'csv',
|
|
text: 'CSV',
|
|
title: '<?= $page_name?>',
|
|
exportOptions: {
|
|
columns: function (index, data, node) {
|
|
return index !== 0;
|
|
},
|
|
},
|
|
},
|
|
{
|
|
text: 'Active Members',
|
|
action: function (e, dt, node, config) {
|
|
getActiveMembers(); // Call the custom function
|
|
}
|
|
}
|
|
],
|
|
columnDefs: [
|
|
{
|
|
type: 'date',
|
|
targets: [1, 2, 3, 4, 5, 6],
|
|
orderable: false,
|
|
|
|
},
|
|
{
|
|
targets: 0,
|
|
visible: false,
|
|
}
|
|
|
|
]
|
|
});
|
|
|
|
$('#datatable-buttons thead tr:eq(1)').remove(); // Remove any existing second row in the header
|
|
$('#datatable-buttons thead tr').clone(true).appendTo('#datatable-buttons thead'); // Clone the header row
|
|
|
|
$('#datatable-buttons thead tr:eq(1) th').each(function(i) {
|
|
var title = $(this).text(); // Get the column title
|
|
var visibleColumns = table.columns(':visible'); // Get only visible columns
|
|
var visibleColumnIndex = visibleColumns.indexes()[i]; // Map header index to visible column index
|
|
|
|
// Skip if the column is not visible or has no title
|
|
if (visibleColumnIndex === undefined || !title) {
|
|
$(this).empty(); // Clear the header cell
|
|
return;
|
|
}
|
|
|
|
var column = table.column(visibleColumnIndex); // Get the visible column object
|
|
var uniqueValues = column.data().unique().sort(); // Fetch unique values for the column
|
|
|
|
// Create a dropdown for filtering
|
|
var select = $('<select class="form-control form-control-sm"><option value="">Search ' + title + '</option></select>')
|
|
.appendTo($(this).empty()) // Append the dropdown to the header cell
|
|
.on('change', function() {
|
|
var val = $.fn.dataTable.util.escapeRegex($(this).val());
|
|
column
|
|
.search(val ? '^' + val + '$' : '', true, false) // Apply exact match filtering
|
|
.draw();
|
|
});
|
|
|
|
// Populate the dropdown with unique values
|
|
uniqueValues.each(function(d) {
|
|
if (d) { // Only add non-empty values
|
|
select.append('<option value="' + d + '">' + d + '</option>');
|
|
}
|
|
});
|
|
|
|
|
|
|
|
$('input', this).on('keyup change', function() {
|
|
if (table.column(i).search() !== this.value) {
|
|
table
|
|
.column(i)
|
|
.search(this.value)
|
|
.draw();
|
|
}
|
|
});
|
|
});
|
|
|
|
moment.updateLocale('en', {
|
|
longDateFormat: {
|
|
L: 'DD/MM/YYYY',
|
|
}
|
|
});
|
|
let isFirstClick = true;
|
|
function getActiveMembers() {
|
|
if(isFirstClick){
|
|
$.ajax({
|
|
type: 'POST',
|
|
url: "<?= base_url('getActiveMembers') ?>",
|
|
success: function(response) {
|
|
// Assuming the response contains an array of active member data
|
|
var data = response.data;
|
|
var table = $('#datatable-buttons').DataTable();
|
|
table.clear();
|
|
data.forEach(function(item) {
|
|
var from_subscription = new Date(item.from_subscription);
|
|
var from_subscription_formatted = ('0' + from_subscription.getDate()).slice(-2) + '/' +
|
|
('0' + (from_subscription.getMonth() + 1)).slice(-2) + '/' +
|
|
from_subscription.getFullYear();
|
|
var to_subscription = new Date(item.to_subscription);
|
|
var to_subscription_formatted = ('0' + to_subscription.getDate()).slice(-2) + '/' +
|
|
('0' + (to_subscription.getMonth() + 1)).slice(-2) + '/' +
|
|
to_subscription.getFullYear();
|
|
table.row.add([
|
|
item.sub_id,
|
|
item.first_name + ' ' + ((typeof item.last_name !== 'undefined' && item.last_name !== null) ? item.last_name : ''),
|
|
item.membership_id,
|
|
from_subscription_formatted,
|
|
to_subscription_formatted,
|
|
item.mobile_no,
|
|
item.email,
|
|
item.short_code,
|
|
]);
|
|
});
|
|
|
|
// Redraw the table with the new data
|
|
table.draw();
|
|
},
|
|
error: function(xhr, status, error) {
|
|
console.error("Error fetching active members:", error);
|
|
alert("An error occurred while fetching active members.");
|
|
}
|
|
});
|
|
}else{
|
|
location.reload();
|
|
}
|
|
isFirstClick = !isFirstClick;
|
|
}
|
|
|
|
$(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');
|
|
});
|
|
|
|
if ($select_data === '') {
|
|
$('.today-btn').trigger('click');
|
|
}
|
|
});
|
|
});
|
|
</script>
|