From d466bbd1f072f37e171f75887ddb93855373d616 Mon Sep 17 00:00:00 2001 From: VE10-Sanjeev Date: Wed, 20 Nov 2024 04:55:29 +0000 Subject: [PATCH] FIX_expiring_membership_with_notification_list --- app/Models/HomeModel.php | 97 ++++++++++++++++------------------------ 1 file changed, 38 insertions(+), 59 deletions(-) diff --git a/app/Models/HomeModel.php b/app/Models/HomeModel.php index 076c5961..01930699 100755 --- a/app/Models/HomeModel.php +++ b/app/Models/HomeModel.php @@ -179,65 +179,44 @@ class HomeModel extends Model public function expiring_membership_with_notification_list() { $now = date('Y-m-d'); $last30days = date('Y-m-d', strtotime('+30 days')); - $sql = "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` = `S`.`customer_id` - AND `NHC`.`receiving_entity` LIKE '%@%' - AND `NHC`.`receiving_status` = 1 - AND `NHP`.`start_date_time` >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) - ) 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]+$' - AND `NHP`.`start_date_time` >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) - ) AS whatsapp_last_notify_on - FROM - `subscription` AS `S` - LEFT JOIN `customers` AS `C` ON `C`.`customer_id` = `S`.`customer_id` - LEFT JOIN `books` AS `BK` ON `BK`.`book_id` = `S`.`scheme_id` - LEFT JOIN `book_categories` AS `BC` ON `BC`.`book_id` = `S`.`scheme_id` - LEFT JOIN `category` AS `CM` ON `CM`.`id` = `BC`.`category_id` - WHERE - `S`.`to_subscription` >= $now - AND `S`.`to_subscription` <= $last30days - AND `S`.`isactive` = 1 - AND LOWER(`CM`.`name`) = 'membership' - - GROUP BY - `S`.`sub_id` - - ORDER BY - `S`.`to_subscription` ASC; -"; - -$query = $this->db->query($sql); -$membershipList = $query->getResultArray(); -return $membershipList; + + $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 + AND NHP.start_date_time >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) + ) 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]+$" + AND NHP.start_date_time >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) + ) 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; }