FIX_notification history mismatched

This commit is contained in:
VE10-Sanjeev 2024-11-14 11:53:23 +00:00
parent 8a39ba1a54
commit 8af557dde1
3 changed files with 88 additions and 68 deletions

View File

@ -27,7 +27,7 @@ class Home extends BaseController
$data['invoice'] = $model->invoice_dtls();
// $data['active_category'] = $model->schemes();
$data['active_schemes'] = $model->active_schemes();
$data['expiring_membership'] = $model->expiring_membership_list();
$data['expiring_membership'] = $model->expiring_membership_with_notification_list();
$data['notifications'] = $model->expiring_membership_list();
// print_r( $data['expiring_membership']);die;
// $data['active_category'] = array_filter($model->schemes(), function ($element) {

View File

@ -175,6 +175,48 @@ class HomeModel extends Model
->get()
->getResultArray();
}
public function expiring_membership_with_notification_list() {
$now = date('Y-m-d');
$last30days = date('Y-m-d', strtotime('+30 days'));
$membershipList = $this->db->table('subscription as S')
->join('customers as C', 'C.customer_id = S.customer_id', 'left')
->join('books as BK', 'BK.book_id = S.scheme_id', 'left')
->join('book_categories as BC', 'BC.book_id = S.scheme_id', 'left')
->join('category as CM', 'CM.id = BC.category_id', 'left')
->select('CM.name, CONCAT_WS(" ", C.first_name, C.last_name) as customer_name,
C.email as customer_email, C.mobile_no as customer_mobile,
S.sub_id, S.scheme_id, S.customer_id, S.business_id,
S.to_subscription, S.from_subscription, BK.title, BK.short_code, BK.book_id,
DATEDIFF(S.to_subscription, CURDATE()) as countdays,
DATE_FORMAT(S.to_subscription, "%d/%m/%Y") as to_subscription_date_format,
(
SELECT MAX(NHP.start_date_time)
FROM notification_campaign as NC
LEFT JOIN notification_history_parents as NHP ON NHP.campaign_id = NC.campaign_id
LEFT JOIN notification_history_children as NHC ON NHC.fkid = NHP.id
WHERE NHC.customer_id = C.customer_id AND NHC.receiving_entity LIKE "%@%" AND NHC.receiving_status = 1
) as email_last_notify_on,
(
SELECT MAX(NHP.start_date_time)
FROM notification_campaign as NC
LEFT JOIN notification_history_parents as NHP ON NHP.campaign_id = NC.campaign_id
LEFT JOIN notification_history_children as NHC ON NHC.fkid = NHP.id
WHERE NHC.customer_id = S.customer_id AND NHC.receiving_entity NOT LIKE "%@%" AND NHC.receiving_status = 1
AND NHC.receiving_status REGEXP "^[0-9]+$"
) as whatsapp_last_notify_on')
->where('S.to_subscription >=', $now)
->where('S.to_subscription <=', $last30days)
->where('S.isactive', 1)
->where('LOWER(CM.name)', strtolower("Membership"))
->orderBy('S.to_subscription', 'ASC')
->groupBy('S.sub_id')
->get()
->getResultArray();
return $membershipList;
}
public function book_published_dtls(){

View File

@ -133,74 +133,52 @@
<h4 class="header-title mt-1">Expiring Membership List in next 30 days</h4>
<div class="conversation-list" data-simplebar style="max-height: 255px !important">
<div class="table-responsive">
<table class="table table-sm table-centered mb-0 font-14">
<thead class="thead-light">
<tr>
<th style="width: 5%;">#</th>
<th style="width: 20%;">Name</th>
<th style="width: 20%;">Mobile No</th>
<th style="width: 20%;">Email</th>
<th style="width: 50%;">Scheme Name</th>
<th style="width: 25%;">Expiring In</th>
<th style="width: 25%;">Notification On</th>
</tr>
</thead>
<tbody>
<?php $tempinx = 0;
// echo "<pre>";
// print_r($expiring_membership);
// echo "</pre>";
if(!empty($expiring_membership)):
foreach ($expiring_membership as $e) :
$daysincount = (int)$e['countdays'];
$daysincountstring = ($daysincount == 0 ? 'Today' : ($daysincount == 1 ? 'Tomorrow' : $daysincount . ' days'));
?>
<tr>
<!-- <td><?= $e['sub_id']; ?></td> -->
<td><?= ++$tempinx; ?></td>
<td><h5 class="mt-0 mb-1"><?= $e['customer_name']; ?></h5></td>
<td><?= $e['customer_mobile'];?></td>
<td><?= $e['customer_email'];?></td>
<td><?= $e['short_code']; ?></td>
<td><span class="badge badge-success badge-pill"><?= $daysincountstring; ?></span> <span class="font-13"><br><?= $e['to_subscription_date_format']; ?></span></td>
<td>
<?php
$startDate = date('d/m/Y', strtotime($e['from_subscription']));
$endDate = date('d/m/Y', strtotime($e['to_subscription']));
<table class="table table-sm table-centered mb-0 font-14">
<thead class="thead-light">
<tr>
<th style="width: 5%;">#</th>
<th style="width: 20%;">Name</th>
<th style="width: 20%;">Mobile No</th>
<th style="width: 20%;">Email</th>
<th style="width: 50%;">Scheme Name</th>
<th style="width: 25%;">Expiring In</th>
<th style="width: 25%;">Notification On</th>
</tr>
</thead>
<tbody>
<?php
$tempinx = 0;
if(!empty($expiring_membership)):
foreach ($expiring_membership as $e) :
$daysincount = (int)$e['countdays'];
$daysincountstring = ($daysincount == 0 ? 'Today' : ($daysincount == 1 ? 'Tomorrow' : $daysincount . ' days')); ?>
<tr>
<td><?= ++$tempinx; ?></td>
<td><h5 class="mt-0 mb-1"><?= $e['customer_name']; ?></h5></td>
<td><?= $e['customer_mobile'];?></td>
<td><?= $e['customer_email'];?></td>
<td><?= $e['short_code']; ?></td>
<td>
<span class="badge badge-success badge-pill"><?= $daysincountstring; ?></span>
<span class="font-13"><br><?= $e['to_subscription_date_format']; ?></span>
</td>
<td>
<?php
echo !empty($e['email_last_notify_on'])
? date('d-m-Y h:i A', strtotime($e['email_last_notify_on']))
: '';
?>
</td>
</tr>
<?php endforeach;
else : ?>
<tr>
<td colspan="7"><center>No data found</center></td>
</tr>
<?php endif; ?>
</tbody>
</table>
$notifications = $e['notifications'];
$emailNotifications = array_filter($notifications, function($notification) {
return $notification['mode'] === 'Email';
});
$lastNotification = end($emailNotifications);
$lastStartDateTime = ($lastNotification && isset($lastNotification['start_date_time'])) ? $lastNotification['start_date_time'] : '';
$startDateTime = $lastStartDateTime ? date('d/m/Y', strtotime($lastStartDateTime)) : '';
if(isset($lastNotification['receiving_status'])){
if ($startDateTime >= $startDate && $startDateTime <= $endDate) {
echo $startDateTime ;
}
}
?>
<?php
/*
<script>
var lastNotification = <?= empty($lastNotification) ? '' : json_encode($lastNotification) ?>;
console.log(lastNotification);
</script>
*/
?>
</td>
</tr>
<?php endforeach; else : ?>
<tr>
<td colspan="7"><center>No data found</center></td>
</tr>
<?php endif; ?>
</tbody>
</table>
</div> <!-- end table-responsive-->
</div>
</div> <!-- end card-body-->