/home3/bmscom/webinar.bmice.com/wp-content/plugins/webinar-ignition/inc/schedule_email_auto.php
<?php defined( 'ABSPATH' ) || exit;

use Carbon\Carbon;

if (!isset($campaignID))
{
   require_once('schedule_notifications.php');
}
else
{
   // Get ALL Leads
   global $wpdb;
   $table_db_name = $wpdb->prefix . "webinarignition_leads_evergreen";
   $query = "SELECT * FROM $table_db_name WHERE app_id = '$campaignID'";
   $results = $wpdb->get_results($query, OBJECT);
   $timezone_string_option = get_option( 'timezone_string' );

    if(!empty($results)){
        foreach ($results as $result) {
           // LOOP START ##################
           // GET DATE -------------------
           // Get Date
           // Set Timezone:
            
           $tzstring  = empty( $result->lead_timezone ) ? $timezone_string_option : $result->lead_timezone;
           date_default_timezone_set($tzstring);

           $date_and_time = date('Y-m-d H:i');
           $date_only = date('Y-m-d');
           $time_only = date('H:i');
           $time_only_e = explode(":", $time_only);

           $time = strtotime($time_only);
           $startTime = date("H:i", strtotime('-30 minutes', $time));
           $endTime = date("H:i", strtotime('+30 minutes', $time));

           $time_buffer = $time_only_e[1] - 10;
           $time_buffer2 = $time_only_e[1] + 10;
           $date_and_time_buffer_negative = $date_only . " " . $startTime;
           $date_and_time_buffer_plus = $date_only . " " . $endTime;

           // Check If Lead is Complete - Ignore
           if ( in_array($result->lead_status, ['complete', 'attending', 'watched']) ) {
                          // IGNORE - done sequence
            } else {
               // ####################################
               //
               // Check 1 Day After
               //
               // ####################################
               if ($result->date_1_day_after_check != "sent" && ($time - strtotime($result->date_1_day_after) >= 0)) {
                   // Send Out Email
                   // echo "<br><br><b>EMAIL :: 1 DAY AFTER :: ". $result->email ."</b>";
                   WebinarIgnition_Logs::add(webinarignition_prettifyNotificationTitle(5) . " ({$result->date_1_day_after}) ".__( "triggered for", 'webinarignition')." {$result->name} ({$result->email}) - ".__( "chosen starting date:", 'webinarignition')." {$result->date_picked_and_live}", $campaignID, WebinarIgnition_Logs::AUTO_EMAIL);
                   webinarignition_cron_email($campaignID, $result->ID, 5, $result->name, $result->email, $result->date_picked_and_live, $result->lead_timezone);
                   // Update In DB
                   $wpdb->update($table_db_name, array(
                       'date_1_day_after_check' => 'sent',
                       'date_after_live_check' => 'sent',
                       'date_picked_and_live_check' => 'sent',
                       'date_1_day_before_check' => 'sent',
                       'date_1_hour_before_check' => 'sent',
                       'lead_status' => 'complete'
                   ), array('id' => $result->ID));

                   continue;
               }

               // ####################################
               //
               // Check After Live Is Over
               //
               // ####################################
               if ($result->date_after_live_check != "sent" && ($time - strtotime($result->date_after_live) >= 0)) {
                   // Send Out Email
                   // echo "<br><br><b>EMAIL :: 1 HOUR AFTER :: ". $result->email ."</b>";
                   WebinarIgnition_Logs::add(webinarignition_prettifyNotificationTitle(4) . " ({$result->date_after_live}) ".__( "triggered for", 'webinarignition')." {$result->name} ({$result->email}) - ".__( "chosen starting date:", 'webinarignition')." {$result->date_picked_and_live}", $campaignID, WebinarIgnition_Logs::AUTO_EMAIL);
                   webinarignition_cron_email($campaignID, $result->ID, 4, $result->name, $result->email, $result->date_picked_and_live, $result->lead_timezone);
                   // Update In DB
                   $wpdb->update($table_db_name, array(
                       'date_after_live_check' => 'sent',
                       'date_picked_and_live_check' => 'sent',
                       'date_1_day_before_check' => 'sent',
                       'date_1_hour_before_check' => 'sent'
                   ), array('id' => $result->ID));
                   continue;
               }

               // ####################################
               //
               // Check LIVE Webinar
               //
               // ####################################
               if ($result->date_picked_and_live_check != "sent" && ($time - strtotime($result->date_picked_and_live) >= 0)) {
                   // Send Out Email
                   // echo "<br><br><b>EMAIL :: EVENT LIVE :: ". $result->email ."</b>";
                   WebinarIgnition_Logs::add(webinarignition_prettifyNotificationTitle(3) . " ({$result->date_picked_and_live}) ".__( "triggered for", 'webinarignition')." {$result->name} ({$result->email}) - ".__( "chosen starting date:", 'webinarignition')." {$result->date_picked_and_live}", $campaignID, WebinarIgnition_Logs::AUTO_EMAIL);
                   webinarignition_cron_email($campaignID, $result->ID, 3, $result->name, $result->email, $result->date_picked_and_live, $result->lead_timezone);
                   // Update In DB
                   $wpdb->update($table_db_name, array(
                       'date_picked_and_live_check' => 'sent',
                       'date_1_day_before_check' => 'sent',
                       'date_1_hour_before_check' => 'sent'
                   ), array('id' => $result->ID));

                   continue;
               }

               // ####################################
               //
               // Check 1 Hour Before
               //
               // ####################################

               if ($result->date_1_hour_before_check != "sent" && ($time - strtotime($result->date_1_hour_before) >= 0)) {
                   // Send Out Email
                   // echo "<br><br><b>EMAIL :: 1 HOUR BEFORE :: ". $result->email ."</b>";
                   WebinarIgnition_Logs::add(webinarignition_prettifyNotificationTitle(2) . " ({$result->date_1_hour_before}) ".__( "triggered for", 'webinarignition')." {$result->name} ({$result->email}) - ".__( "chosen starting date:", 'webinarignition')." {$result->date_picked_and_live}", $campaignID, WebinarIgnition_Logs::AUTO_EMAIL);

                   webinarignition_cron_email($campaignID, $result->ID, 2, $result->name, $result->email, $result->date_picked_and_live, $result->lead_timezone);

                   if( !empty($result->phone) ) {
                       WebinarIgnition_Logs::add("TXT notification ({$result->date_1_hour_before}) ".__( "triggered for", 'webinarignition')." {$result->name} ({$result->phone}) - ".__( "chosen starting date:", 'webinarignition')." {$result->date_picked_and_live}", $campaignID, WebinarIgnition_Logs::AUTO_SMS);
                       webinarignition_send_txt_auto($campaignID, $result->phone, $result->ID);
                   }

                   // Update In DB
                   $wpdb->update($table_db_name, array(
                       'date_1_hour_before_check' => 'sent',
                       'date_1_day_before_check' => 'sent'
                   ), array('id' => $result->ID));

                   continue;
               }

               // start if loop
               // ####################################
               //
               // Check 1 Day Before
               //
               // ####################################

               if ($result->date_1_day_before_check != "sent" && ($time - strtotime($result->date_1_day_before) >= 0)) {
                   
                   $date_picked                 = Carbon::createFromFormat('Y-m-d H:i', $result->date_picked_and_live, $result->lead_timezone );
                   $date_picked_formatted       = $date_picked->format('m-d-Y');
                   
                   $today                       = new Carbon( 'today', $result->lead_timezone );
                   $today_formatted             = $today->format('m-d-Y');

                   if( $today_formatted !=  $date_picked_formatted ){// don't send tomorrow-reminders on the day.
                        WebinarIgnition_Logs::add(webinarignition_prettifyNotificationTitle(1) . " ({$result->date_1_day_before}) ".__( "triggered for", 'webinarignition')." {$result->name} ({$result->email}) - ".__( "chosen starting date:", 'webinarignition')." {$result->date_picked_and_live}", $campaignID, WebinarIgnition_Logs::AUTO_EMAIL);
                        webinarignition_cron_email($campaignID, $result->ID, 1, $result->name, $result->email, $result->date_picked_and_live, $result->lead_timezone);
                        // Update In DB
                        $wpdb->update($table_db_name, array(
                            'date_1_day_before_check' => 'sent'
                        ), array('id' => $result->ID));
                   }

                   continue;
               }
               // end if loop
           }
       }
    }

}