smsHelper = new SendSMSHelper(); } ################################################################ # Custom Notification ################################################################ public function custom_notifications() { $data['page_name'] = 'Custom Notifications'; if ($this->request->is('post')) { session()->setFlashdata('reset', true); $records = $this->request->getVar(); if ($records['mode'] == 'Email') { helper('notification'); $notification = new NotificationHelper(); $records['description'] = $records['maildescription']; $data = $notification->sendEmail($records); $parents_status = 0; $receiving_status = 0; if (isset($data['error'])) { session()->setFlashdata('error', 'Message: ' . $data['error']); $history_msg = $data; } if (isset($data['success'])) { session()->setFlashdata('success', 'Message: ' . $data['success']); $parents_status = 1; $receiving_status = 1; $history_msg = 'Email sent successfully'; } $history_msg = (strtolower(gettype($history_msg)) == "string" ? $history_msg : json_encode($history_msg)); $NotificationModel = new NotificationModel(); $history_parents_data = ['campaign_id' => 0, 'status' => $parents_status]; $history_parent_id = $NotificationModel->save_notification_history_parents($history_parents_data); $history_child_data = [ 'fkid' => $history_parent_id, 'customer_id' => 0, 'receiving_entity' => $records['recipient_email'], 'receiving_status' => $receiving_status, 'message' => $records['description'], 'result' => strtolower(gettype($history_msg)) == "string" ? $history_msg : json_encode($history_msg) ]; $history_child_id = $NotificationModel->save_notification_history_child($history_child_data); $this->logger->error('Custom Notifications Email : historychildid = ' . $history_child_id); } else { $records = $this->request->getVar(); $doc_details = $this->request->getFile('media_doc'); $params = (object) Null; $parents_status = 0; $receiving_status = 0; $doc_path = APPPATH . '../public/uploads/'; $doc_name = ''; $errorMessages = []; $this->logger->error("Whatsapp : sending message instance id = " . $_ENV['WAAI_INSTANCE'] . " - " . $_ENV['WAAI_TOKEN']); if ($records['mobile'] != "") { $string = $records['mobile']; $mobile_no_arr = explode(',', $string); $total_number_count = count($mobile_no_arr); $sended_number_count = 0; $not_sended_number_count = 0; // Step 1 Categories Check if ($records['categories'] == 'SEND_WAAI_GROUP_URL') { if ($records['group_id'] != "") { $params->group_id = $records['group_id']; } else { session()->setFlashdata('error', 'Group Id Missing Please Try again..'); $data['page_name'] = 'Custom Notifications'; $this->render_page('notifications_form', $data); return; } } else if ($records['categories'] == 'SEND_WAAI_URL') { if ($records['mobile'] == "") { session()->setFlashdata('error', 'Mobile Number Missing Please Try again..'); $data['page_name'] = 'Custom Notifications'; $this->render_page('notifications_form', $data); return; } } else { session()->setFlashdata('error', 'Please Choose your Category..'); $data['page_name'] = 'Custom Notifications'; $this->render_page('notifications_form', $data); return; } // Step 2 Media Check, Document Also Convert into Media Here. if ($records['type'] == 'media') { if ($records['media_url'] != "") { $params->media_url = $records['media_url']; $params->type = "media"; } else { session()->setFlashdata('error', 'Media Url Missing Please Try again..'); $data['page_name'] = 'Custom Notifications'; $this->render_page('notifications_form', $data); return; } } elseif ($records['type'] == 'document') { $doc_details = $this->request->getFile('media_doc'); $doc_path = APPPATH . '../public/uploads/'; if (empty($doc_details)) { session()->setFlashdata('error', 'Please select a file to upload.'); $data['page_name'] = 'Custom Notifications'; $this->render_page('notifications_form', $data); return; } if (!$doc_details->isValid() || $doc_details->getClientMimeType() !== 'image/jpeg') { session()->setFlashdata('error', 'Please upload a valid JPEG image.'); $data['page_name'] = 'Custom Notifications'; $this->render_page('notifications_form', $data); return; } $doc_name = $doc_details->getName(); if ($doc_name === '') { $this->logger->error("Err on upload: name not found"); session()->setFlashdata('error', 'Document name not found. Please try again.'); $data['page_name'] = 'Custom Notifications'; $this->render_page('notifications_form', $data); return; } $doc_details->move($doc_path, $doc_name); $params->media_url = base_url() . 'public/uploads/' . $doc_name; $params->type = "media"; $this->logger->error("Name After Upload: " . $doc_name); } else { $params->type = "text"; } $NotificationModel = new NotificationModel(); $history_parents_data = ['campaign_id' => 0, 'status' => 0, 'field_value' => $records['mobile']]; $history_parent_id = $NotificationModel->save_notification_history_parents($history_parents_data); // print_r($mobile_no_arr); if (!empty($mobile_no_arr)) { foreach ($mobile_no_arr as $mobile) { // try { $exceptionOccurred = false; // echo "----$mobile"; if (trim(strlen($mobile)) == 10) { if (ctype_digit($mobile)) { if ($mobile != "") { $params->number = (int)'91' . $mobile; $url = constant($records['categories']); $params->instance_id = $_ENV['WAAI_INSTANCE']; $params->access_token = $_ENV['WAAI_TOKEN']; $params->message = strip_tags(ltrim($records['description'])); $this->logger->error("Whatsapp : Request Type ==> Mobile Number = " . $mobile . " - " . gettype($params)); helper('notification'); $notification = new NotificationHelper(); $success = $notification->sendWhatsAppMessage($url, "POST", $params); // echo "
";print_r($success);echo ""; $receiving_status = $success['receiving_status']; $parents_status = $success['receiving_status']; $this->logger->error("Whatsapp : Reponse ==> Mobile Number = " . $mobile . " Waai Reponse = " . json_encode($success['reponse'])); $history_msg = strtolower(gettype($success)) == "string" ? $success : json_encode($success['reponse']); // $tag = (int)$receiving_status === 1 ? 'success' : 'error' ; // session()->setFlashdata($tag, 'Message : ' . $success['message']); (int)$receiving_status === 1 ? $sended_number_count++ : $not_sended_number_count++; } else { $receiving_status = 0; $parents_status = 0; $history_msg = "Mobile Number = " . $mobile . " is invalid."; $this->logger->error("Whatsapp : Reponse ==> " . $history_msg); $not_sended_number_count++; $errorMessages[] = $history_msg; } } elseif (ctype_alpha($mobile)) { $receiving_status = 0; $parents_status = 0; $history_msg = "Mobile Number = " . $mobile . " is a character."; $this->logger->error("Whatsapp : Reponse ==> " . $history_msg); $not_sended_number_count++; $errorMessages[] = $history_msg; } else { $receiving_status = 0; $parents_status = 0; $history_msg = "Mobile Number = " . $mobile . " is a combination of characters and numbers."; $this->logger->error("Whatsapp : Reponse ==> " . $history_msg); $not_sended_number_count++; $errorMessages[] = $history_msg; } } else { $history_msg = "Mobile Number = " . $mobile . " does not have 10 digits."; $this->logger->error("Whatsapp : Reponse ==> " . $history_msg); $not_sended_number_count++; $errorMessages[] = $history_msg; } $history_child_data = [ 'fkid' => $history_parent_id, 'customer_id' => 0, 'receiving_entity' => $mobile, 'receiving_status' => $receiving_status, 'message' => $records['description'], 'result' => $history_msg ]; $NotificationModel = new NotificationModel(); $history_child_id = $NotificationModel->save_custom_notification_history_child($history_child_data); $this->logger->error('Custom Notifications Whatsapp : historychildid = ' . $history_child_id); } if (!empty($errorMessages)) { $this->logger->error(implode("\n", $errorMessages)); session()->setFlashdata('error', implode('
";
// print_r($details);
// echo "";
// die;
$records = [];
$recipient_name = "";
$recipient_email = "";
$recipient_mobile = "";
$subscription_name = "";
$business_name = "";
$to_subscription = "";
if (isset($details)) {
$this->logger->error("Notification : Duedate notification Request data type = " . gettype($details));
}
helper('notification');
$notification = new NotificationHelper();
foreach ($details as $rec) {
$recipient_name = $rec['customer_name'];
$recipient_email = $rec['customer_email'];
$recipient_mobile = $rec['customer_mobile'];
// $recipient_email = "sanjeev.p@venbainfotech.com";
// $recipient_mobile = 6369084112;
$business_name = $rec['business_name'];
$subscription_name = $rec['title'];
$to_subscription = $rec['to_subscription'];
}
$records['template_name'] = '';
$records['recipient_name'] = $recipient_name;
$records['recipient_email'] = $recipient_email ? $recipient_email : "sanjeev.p@venbainfotech.com";
$records['subject'] = $business_name . " - Due Date Reminder";
$records['description'] = "
Hello " . $recipient_name . ",
This is a reminder that the following subscription is due soon:
Subscription Name:" . $subscription_name . "
Due Date: " . $to_subscription . "
Please make sure to complete this subscription on time.
Thank you.
"; $template = "Hello " . $recipient_name . ",\r\r\n\nThis is a reminder that the following subscription is due soon:\r\n- Subscription Name: " . $subscription_name . "\r\n Due Date: " . $to_subscription . "\r\n\nPlease make sure to complete this subscription on time.\n Thank you."; $params = (object) Null; $params->number = (int)'91' . $recipient_mobile; $params->type = "text"; $params->message = $template; $params->instance_id = $_ENV['WAAI_INSTANCE']; $params->access_token = $_ENV['WAAI_TOKEN']; $this->logger->error("Notification : Duedate notification Email Request data = " . json_encode($records)); $email_result = $notification->sendEmail($records); $this->logger->error("Notification : Duedate notification Email Response = " . json_encode($email_result)); $this->logger->error("Notification : Duedate notification Whatsapp Request data = " . json_encode($params)); $whatsapp_result = $notification->sendWhatsAppMessage(SEND_WAAI_URL, "POST", $params); $this->logger->error("Notification : Duedate notification Whatsapp Response = " . json_encode($whatsapp_result)); } public function template_creation() { $data['page_name'] = 'Template Details'; $model = new NotificationModel(); $data['template'] = $model->getTemplateDetails(); $this->render_page('template_creation', $data); // echo "templates";die; } ################################################################## # Template Creation Insertion/updation Process ReferWith : Sanjeev ################################################################## public function template_creation_form($id) { $data['group_details'] = $this->get_group_details(); $model = new NotificationModel(); if ($id === '0') { $this->logger->error("Template Creation: In Add Page"); $data['page_name'] = 'Add Template'; $data['template_id'] = (int)$id; $data['template_details'] = []; } elseif ($id !== '0') { $this->logger->error("Template Creation: In Edit Page ID =" . $id); $data['page_name'] = 'Edit Template'; $model->setTable('templates'); $where = ['template_id' => (int)$id]; $result = $model->where($where)->findAll(); $data['template_id'] = (int)$id; $data['template_details'] = !empty($result[0]) ? $result[0] : []; } // print_r($data['template_details']);die(); $this->render_page('template_creation_form', $data); } ############################################################################## # Template Creation Delection which means inactive Process ReferWith : Sanjeev ############################################################################## public function template_creation_delete($id) { try { helper('session'); $session_uid = get_logged_user_id(); $model = new NotificationModel(); $model->setTable('templates'); $where = ['template_id' => (int)$id]; $result = $model->where($where)->findAll(); if ($result) { $this->logger->error("Template: Going to Inactive ID = " . $id); $data = ['isactive' => 0, 'updated_by' => $session_uid, 'template_id' => (int)$id]; $statement = $model->saveDetails($data, 'template_id', 'templates'); // just updating Inactive status only. if ($statement['success']) { session()->setFlashdata('success', $statement['success'] ? 'Deleted successfully.' : ""); $this->logger->error($statement['log']); } else if ($statement['error']) { session()->setFlashdata('error', $statement['error']); $this->logger->error($statement['log']); } else { throw new \Exception("Template: Err Occur on data the Template Inactive"); } } } catch (\Exception $e) { $this->logger->error("Template: Err Occur = " . $e->getMessage() . " File = " . $e->getFile() . " Line = " . $e->getLine()); session()->setFlashdata('error', 'Message: ' . $e->getMessage()); } return redirect()->route('template_creation'); } public function get_group_details() { $model = new NotificationModel(); $model->setTable('customer_groups'); // $details = $model->where('isactive',1)->orderBy('group_id', 'ASC')->findAll(); $where = ['isactive' => 1, 'group_name != ' => 'EXPIRYDATE']; $details = $model->where($where)->orderBy('group_id', 'ASC')->findAll(); return $details; } public function get_template_details() { $model = new NotificationModel(); $model->setTable('templates'); $details = $model ->where(['templates.isactive' => 1]) ->whereNotIn('templates.template_name', array('EXPIRY NOTIFY TEMPLATE EMAIL', 'EXPIRY NOTIFY TEMPLATE WHATSAPP')) ->orderBy('templates.template_id', 'ASC')->findAll(); return $details; } public function template_creation_insert() { $this->logger->error("Template: Inserting/Updating Details"); try { ## Declarions helper('session'); $model = new NotificationModel(); $session_uid = get_logged_user_id(); $id = $this->request->getPost('template_id'); $subject = $this->request->getPost('subject') ? $this->request->getPost('subject') : NULL; $isactive = $id != "" ? $this->request->getPost('isactive') : 'on'; $templatemessage = ""; if ($this->request->getPost('mode') === "Email") { $templatemessage = $this->request->getPost('templatemessage'); } else if ($this->request->getPost('mode') === "Whatsapp") { $templatemessage = $this->request->getPost('whatsapptemplatemessage'); } $data = [ 'template_id' => $id, 'template_name' => $this->request->getPost('templatename'), 'subject' => $subject, 'message' => $templatemessage, 'mode' => $this->request->getPost('mode'), 'isactive' => (($isactive == 'on') ? 1 : 0), 'created_by' => $session_uid, 'updated_by' => $session_uid ]; $statement = $model->saveDetails($data, 'template_id', 'templates'); if ($statement['success']) { session()->setFlashdata('success', $statement['success']); $this->logger->error($statement['log']); } else if ($statement['error']) { session()->setFlashdata('error', $statement['error']); $this->logger->error($statement['log']); } else { throw new \Exception("Template: Err Occur"); } } catch (\Exception $e) { $this->logger->error("Template: Err Occur =" . $e->getMessage()); session()->setFlashdata('error', 'Message: ' . $e->getMessage()); } return redirect()->route('template_creation'); } public function campaign_creation() { $data['page_name'] = 'Campaign Details'; $model = new NotificationModel(); $data['campaign'] = $model->getCampaignDetails(); $this->render_page('campaign_creation', $data); // echo "templates";die; } public function campaign_creation_form($id) { $data['group_details'] = $this->get_group_details(); $data['template_details'] = $this->get_template_details(); $model = new NotificationModel(); if ($id === '0') { $this->logger->error("Campaign Creation: In Add Page"); $data['page_name'] = 'Add Campaign'; $data['campaign_details'] = []; } elseif ($id !== '0') { $this->logger->error("Campaign Creation: In Edit Page ID =" . $id); $data['page_name'] = 'Edit Campaign'; $model->setTable('notification_campaign'); $where = ['campaign_id' => (int)$id]; $result = $model->where($where)->findAll(); if (!empty($result)) { foreach ($result as $i => $item) { $result[$i]['group_id'] = unserialize($item['group_id']); } } $data['campaign_details'] = !empty($result[0]) ? $result[0] : []; } $this->render_page('campaign_creation_form', $data); } public function campaign_creation_delete($id) { try { helper('session'); $session_uid = get_logged_user_id(); $model = new NotificationModel(); $model->setTable('notification_campaign'); $where = ['campaign_id' => (int)$id]; $result = $model->where($where)->findAll(); if ($result) { $this->logger->error("Campaign: Going to Inactive ID = " . $id); $data = ['isactive' => 0, 'updated_by' => $session_uid, 'campaign_id' => (int)$id]; $statement = $model->saveDetails($data, 'campaign_id', 'notification_campaign'); // just updating Inactive status only. if ($statement['success']) { session()->setFlashdata('success', $statement['success'] ? 'Deleted successfully.' : ""); $this->logger->error($statement['log']); } else if ($statement['error']) { session()->setFlashdata('error', $statement['error']); $this->logger->error($statement['log']); } else { throw new \Exception("Campaign: Err Occur on data the Template Inactive"); } } } catch (\Exception $e) { $this->logger->error("Campaign: Err Occur = " . $e->getMessage() . " File = " . $e->getFile() . " Line = " . $e->getLine()); session()->setFlashdata('error', 'Message: ' . $e->getMessage()); } return redirect()->route('campaign_creation'); } public function campaign_creation_insert() { $this->logger->error("Campaign: Inserting/Updating Details"); try { ## Declarions helper('session'); $model = new NotificationModel(); $session_uid = get_logged_user_id(); $id = $this->request->getPost('campaign_id'); $request_data = $this->request->getPost(); $isactive = $id == "" ? 1 : (isset($request_data['isactive']) && $request_data['isactive'] == 'on' ? 1 : 0); $data = [ 'campaign_id' => $id, 'campaign_name' => $this->request->getPost('campaign_name'), 'template_id' => $this->request->getPost('template_id'), // 'scheduled_date' => $this->request->getPost('scheduled_date'), // 'scheduled_time' => $this->request->getPost('scheduled_time') != "" ? $this->request->getPost('scheduled_time') : NULL, 'mode' => $this->request->getPost('mode'), 'group_id' => serialize($this->request->getPost('group_id')), 'isactive' => $isactive, 'created_by' => $session_uid, 'updated_by' => $session_uid ]; if ($id != "") { // id has value means updation process. $notify_mod = new NotificationModel(); $notify_mod->setTable('notification_campaign'); $where = ['campaign_id' => (int)$id]; $isactive_check = $notify_mod->where($where)->select('isactive')->first(); if ((int)$isactive_check['isactive'] === 0 && $isactive === 0) { $statement['success'] = ''; $statement['error'] = 'Notification Campaign already In-Active. can`t able to update.'; $statement['log'] = "Notification Campaign: already inactive status.Can`t able to update, Notification Campaign Group ID = " . $id; } else { $statement = $model->saveDetails($data, 'campaign_id', 'notification_campaign'); } } else { // id has no value means insertion process. $statement = $model->saveDetails($data, 'campaign_id', 'notification_campaign'); } if ($statement['success']) { $tid = $data['template_id']; $cid = $data['campaign_id'] ? $data['campaign_id'] : $statement['insert_id']; $this->scheduledNotifications($tid, $cid, 1); session()->setFlashdata('success', $statement['success']); $this->logger->error($statement['log']); } else if ($statement['error']) { session()->setFlashdata('error', $statement['error']); $this->logger->error($statement['log']); } else { throw new \Exception("Campaign: Err Occur"); } } catch (\Exception $e) { $this->logger->error("Campaign: Err Occur =" . $e->getMessage()); session()->setFlashdata('error', 'Message: ' . $e->getMessage()); } return redirect()->route('campaign_creation'); } ################################################################ # Expiry Notification ReferWith : Hema ################################################################ public function getExpCustomerDetail($window_time = null, $to_time = null) { // dd($window_time); // $valid_dates = [0,1,7,15,30]; // if(!in_array($window_time,$valid_dates) ){ // return "Please enter a valid notification period. Accepted values are 0, 7, 15, or 30 days."; // } $NotificationModel = new NotificationModel(); $this->update_expired_members(); $response = ""; // $response = ""; if ($this->request->getmethod() == 'get') { return $response; } else { return $this->response->setBody($response); } } public function update_expired_members() { $model = new SubscriptionModel(); $currentDate = date('Y-m-d'); $model->where('to_subscription <', $currentDate) ->set(['status' => 0]) ->update(); log_message('error', 'inside the update function'); } # getExpCustomerDetail fns Closed ################################################################ # Auto Scheduled Notification ################################################################ ## notification campaign details public function processScheduledNotifications() { $this->scheduledNotifications(0, 0, 0); // parameter are template_id is zero , campaign_id is zero , dummy is zero } public function scheduledNotifications($tid, $cid, $dummyvariable) { $this->logger->error("Auto Scheduled Notification Started"); $model = new NotificationModel(); #step 1 get scheduled notification details $notification_campaign_result = $this->getScheduledNotificationDetails($tid, $cid); $this->logger->error("Auto Scheduled Campaign Details Count = " . count($notification_campaign_result)); if (!count($notification_campaign_result)) { $this->logger->error("No Auto Scheduled Notification in DB,exiting...!"); $this->logger->error("Auto Scheduled Notification Ends"); if ($dummyvariable == 0) { echo "No Scheduled Data Founded" . "Hi, Started."; return $this->response->setBody($response); } $emailTemplateName = $NotificationModel->getTempName('EXPIRY NOTIFY TEMPLATE EMAIL'); $this->logger->error("Customer expiring. till {$newDate} There are " . count($queryResult) . " persons"); $response .= "Customer expiring list. ( Date = " . date('d/m/Y', strtotime($newDate)) . " )
"; # Step 1: add the days to retrive the data// $providedDate = date('Y-m-d'); // if ($this->request->getmethod() == 'post') { // $window_time = $this->request->getGet('params'); // } // dd($window_time); if ($window_time != '') { if ($window_time >= 0) { $newDate = date('Y-m-d', strtotime("$providedDate + $window_time days")); } else { $newDate = date('Y-m-d', strtotime("$providedDate $window_time days")); } $ExpCustomerDetail = $NotificationModel->getExpDate(); // Retrieve the stored query // echo("Inside If"); // print_r(''.$ExpCustomerDetail);die(); } else { $dateData = $this->request->getGet('to_date'); $newDate = date('Y-m-d', strtotime($dateData)); $ExpCustomerDetail = $NotificationModel->getExpDate2(); } # Step 2 :Get the customer detail// if (empty($ExpCustomerDetail)) { $this->logger->error('No customer group found by the name of EXPIRYDATE'); return; } if ($window_time != '') { $modifiedQuery = str_replace('WINDOW_TIME', $window_time, $ExpCustomerDetail); //print_r($modifiedQuery);die; } else { $from_date2 = $this->request->getGet('from_date'); $to_date2 = $this->request->getGet('to_date'); $from_date = DateTime::createFromFormat('d/m/Y', $from_date2)->format('Y-m-d'); $to_date = DateTime::createFromFormat('d/m/Y', $to_date2)->format('Y-m-d'); // Add single quotes around the date values during the replacement $modifiedQuery = str_replace('FROM_DATE', "'$from_date'", $ExpCustomerDetail); $modifiedQuery = str_replace('TO_DATE', "'$to_date'", $modifiedQuery); } if (empty($modifiedQuery)) { $this->logger->error('There is no sub query'); return; } # Step 3: Replace the placeholder WINDOW_TIME with the user-provided value $db = \Config\Database::connect(); $queryResult = $db->query($modifiedQuery)->getResultArray(); $notification = new NotificationHelper(); if (empty($queryResult)) { $this->logger->error("There is no customer expiring on date:{$newDate}"); $response .= "There is no customer expiring. Date = " . date('d/m/Y', strtotime($newDate)) . "
There are " . count($queryResult) . " persons
"; if (!empty($queryResult)) { usort($queryResult, function ($a, $b) { return $a['to_subscription'] <=> $b['to_subscription']; //Asc order }); } foreach ($queryResult as $inx => $row) { $subscription_id = $row['sub_id']; $status = $row['status']; $fullName = trim($row['first_name'] . ' ' . $row['last_name']); $userMobileNumber = $row['mobile_no']; $email = $row['email']; $schemename = $row['title']; $expirydate = $row['to_subscription']; $customerId = $row['customer_id']; $membership_id = $row['membership_id']; $countdays = $row['countdays']; if (empty($fullName)) { $this->logger->error('No subscription name found for record #' . $inx); continue; } $response .= ($inx + 1) . ") #{$customerId} - Person Name = {$fullName} / {$membership_id} --- (Expiry on " . date('d/m/Y', strtotime($expirydate)) . ")
"; // Skip records with non-approved status if ($status !== 'Approved') { $response .= ($inx + 1) . ") Status = {$status}
"; $this->logger->error("Record #{$inx}: status is not Approved"); continue; } // Email Notification $emailTemplateName = $NotificationModel->getTempName('EXPIRY NOTIFY TEMPLATE EMAIL'); if (!empty($emailTemplateName)) { $existingEmailCheck = $NotificationModel->checkAlreadyExistingInHistory($email, $customerId, $subscription_id); if (empty($existingEmailCheck)) { $campaign_id = 1; # Insertion on History Email Means Campaign ID 1 Hardcoded $history_parents_data = ['campaign_id' => $campaign_id, 'status' => 0]; $history_parent_id = $NotificationModel->save_notification_history_parents($history_parents_data); $emailContent = $emailTemplateName[0]['message']; $emailContent = str_replace( ['{USER_NAME}', '{SCHEME_NAME}', '{EXPIRY_DATE}', '{RENEWAL_LINK}'], [ $fullName, $schemename, date('d-m-Y', strtotime($expirydate)), '' . getenv("SMS_SUB_URL") . $membership_id . '', ], $emailContent ); $emailData = [ 'template_name' => 'EXPIRY NOTIFY TEMPLATE EMAIL', 'recipient_email' => $email, 'subject' => 'Your Subscription Expiry Notification', 'description' => $emailContent, ]; $history_child_data = [ 'fkid' => $history_parent_id, 'customer_id' => $customerId, 'receiving_entity' => $email, 'receiving_status' => 0, 'subscription_id' => $subscription_id, 'message' => $emailContent ]; $history_child_id = $NotificationModel->save_notification_history_child($history_child_data); $emailResult = $notification->sendEmail($emailData); if (isset($emailResult['success']) && !empty($emailResult['success'])) { $history_msg = 'Email sent successfully'; $history_child_updatedata = ['receiving_status' => 1, 'result' => $history_msg]; $history_child_where = ['fkid' => $history_parent_id, 'id' => (int)$history_child_id]; $history_child_statement = $NotificationModel->update_notification_history_child($history_child_updatedata, $history_child_where); $this->logger->error($history_child_statement); $history_parent_statement = $NotificationModel->update_notification_history_parent_status(['status' => 1], $history_parent_id, $campaign_id); $this->logger->error($history_parent_statement); $response .= ($inx + 1) . ") " . $history_msg . "
"; } else { $history_msg = (strtolower(gettype($emailResult)) == "string" ? $emailResult : json_encode($emailResult)); $history_child_updatedata = ['receiving_status' => 0, 'result' => $history_msg]; $history_child_where = ['fkid' => $history_parent_id, 'id' => (int)$history_child_id]; $history_child_statement = $NotificationModel->update_notification_history_child($history_child_updatedata, $history_child_where); $this->logger->error($history_child_statement); $history_parent_statement = $NotificationModel->update_notification_history_parent_status(['status' => 1], $history_parent_id, $campaign_id); $this->logger->error($history_parent_statement); $response .= ($inx + 1) . ") Failed to send email
"; } } else { $check_existing = 0; $check_email_date = ""; if (!empty($existingEmailCheck)) { foreach ($existingEmailCheck as $i => $r) { $check_email_date = ($r['receiving_status'] == 1) ? $r['sent_time'] : ""; } } if ($check_email_date) { $response .= ($inx + 1) . ") Email already send on - " . date('d/m/Y h:i A', strtotime($check_email_date)) . "
"; $this->logger->error(($inx + 1) . ") Email already sent to {$email}"); $this->logger->error(($inx + 1) . ") Email already sent on {$check_email_date}"); } } } else { $response .= ($inx + 1) . ") No email template found
"; $this->logger->error(($inx + 1) . ") No email template found
"); } // WhatsApp Notification // $whatsappTemplateName = $NotificationModel->getTempName('EXPIRY NOTIFY TEMPLATE WHATSAPP'); // if (!empty($whatsappTemplateName)) { // $existingWhatsAppCheck = $NotificationModel->checkAlreadyExistingInHistory($userMobileNumber, $customerId, $subscription_id); // if (empty($existingWhatsAppCheck)) { // $campaign_id = 2; // $history_parents_data = ['campaign_id' => $campaign_id, 'status' => 0]; // $history_parent_id = $NotificationModel->save_notification_history_parents($history_parents_data); // $whatsappContent = $whatsappTemplateName[0]['message']; // $whatsappContent = str_replace( // ['{USER_NAME}', '{SCHEME_NAME}', '{EXPIRY_DATE}', '{RENEWAL_LINK}'], // [ // $fullName, // $schemename, // date('d-m-Y', strtotime($expirydate)), // base_url() . 'subscription_renewal/' . $customerId, // ], // $whatsappContent // ); // $params = (object)[ // 'number' => '91' . $userMobileNumber, // 'type' => 'text', // 'message' => $whatsappContent, // 'instance_id' => $_ENV['WAAI_INSTANCE'], // 'access_token' => $_ENV['WAAI_TOKEN'], // ]; // $whatsappResult = $notification->sendWhatsAppMessage(SEND_WAAI_URL, "POST", $params); // $history_child_data = [ // 'fkid' => $history_parent_id, // 'customer_id' => $customerId, // 'receiving_entity' => $userMobileNumber, // 'receiving_status' => 0, // 'subscription_id' => $subscription_id, // 'message' => strip_tags(ltrim($whatsappContent)) // ]; // $history_child_id = $NotificationModel->save_notification_history_child($history_child_data); // $receiving_status = $whatsappResult['receiving_status']; // $history_msg = strtolower(gettype($whatsappResult)) == "string" ? $whatsappResult : json_encode($whatsappResult['reponse']); // $history_child_updatedata = ['receiving_status' => $receiving_status, 'result' => $history_msg]; // $history_child_where = ['fkid' => $history_parent_id, 'id' => (int)$history_child_id]; // $history_child_statement = $NotificationModel->update_notification_history_child($history_child_updatedata, $history_child_where); // $this->logger->error($history_child_statement); // $history_parent_statement = $NotificationModel->update_notification_history_parent_status(['status' => 1], $history_parent_id, $campaign_id); // $this->logger->error($history_parent_statement); // if (strtolower(gettype($whatsappResult)) == "string") { // $response .= ($inx + 1) . ") " . $whatsappResult . "
"; // } else { // $result = json_encode($whatsappResult['reponse']); // $decodedResult = json_decode($result, true); // if ($decodedResult && isset($decodedResult['message']['key']['remoteJid'])) { // $remoteJid = $decodedResult['message']['key']['remoteJid']; // $this->logger->error("EXPIRAY NOTIFY TEMPLATE WHATSAPP Remote Jid = " . $remoteJid); // $response .= ($inx + 1) . ") Whatsapp sent successfully
"; // } else { // // echo "Failed to extract remoteJid"; // $this->logger->error("EXPIRAY NOTIFY TEMPLATE WHATSAPP Failed to extract remoteJid "); // $response .= ($inx + 1) . ") Failed to send Whatsapp
"; // } // } // } else { // $check_whatsapp_date = ""; // if (!empty($existingWhatsAppCheck)) { // foreach ($existingWhatsAppCheck as $i => $r) { // $check_whatsapp_date = ($r['receiving_status'] == 1) ? $r['sent_time'] : ""; // } // } // if ($check_whatsapp_date) { // $response .= ($inx + 1) . ") WhatsApp already send on - " . date('d/m/Y h:i A', strtotime($check_whatsapp_date)) . "
"; // $this->logger->error(($inx + 1) . ") WhatsApp already sent to {$userMobileNumber}"); // $this->logger->error(($inx + 1) . ") WhatsApp already sent on {$check_whatsapp_date}"); // } // } // } else { // $response .= ($inx + 1) . ") No WhatsApp template found
"; // } // SMS Notification $smsTemplateName = $NotificationModel->getTempName('EXPIRY NOTIFY TEMPLATE SMS'); $this->logger->error("SMS Template Name : " . json_encode($smsTemplateName)); if (!empty($smsTemplateName)) { $this->logger->error("Found SMS Template"); $existingSMSCheck = $NotificationModel->checkAlreadyExistingInHistory($userMobileNumber, $customerId, $subscription_id); $this->logger->error("Existing SMS Check : " . json_encode($existingSMSCheck)); if (empty($existingSMSCheck)) { try { $template_message = $smsTemplateName[0]['message']; $message = str_replace( ["{#USERNAME#}", "{#EXPIRY#}", "{#LINK#}"], [$fullName, date('d-m-Y', strtotime($expirydate)), getenv("SMS_SUB_URL") . $membership_id], $template_message ); $campaign_id = $NotificationModel->getCampaignID($smsTemplateName[0]['template_id']); $userMobileNumber = $userMobileNumber != null && $userMobileNumber != "" ?"91" . $userMobileNumber : ""; $sent_status = $this->smsHelper->sendSMS($message, $userMobileNumber, $campaign_id,$membership_id); $this->logger->error("Sent Status : ".json_encode($sent_status)); $history_msg = $sent_status; $response .= ($inx + 1) . ") " . $history_msg . "
"; } catch (Exception $e) { $this->logger->error("Error while sending SMS: " . $e->getMessage() . " in " . $e->getFile() . " on line " . $e->getLine()); } } else { $check_sms_date = ""; foreach ($existingSMSCheck as $i => $r) { $check_sms_date = ($r['receiving_status'] == 1) ? $r['sent_time'] : ""; } if ($check_sms_date) { $response .= ($inx + 1) . ") SMS already send on - " . date('d/m/Y h:i A', strtotime($check_sms_date)) . "
"; $this->logger->error(($inx + 1) . ") SMS already sent to {$userMobileNumber}"); $this->logger->error(($inx + 1) . ") SMS already sent on {$check_sms_date}"); } } } else { $response .= ($inx + 1) . ") No SMS template found
"; } # Loop Closed } $response .= "Process Completed