<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: GET");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Pragma: no-cache");
header("Expires: 0");
     include_once '../config.php';
    $database = new Database();
    $db = $database->getConnection();
    $stmt = $db->prepare("SELECT * FROM `ahqa_delivery_type` WHERE 1  ORDER BY id");
///$stmt->bindParam(1, $driver_user_id);
$isQueryOk = $stmt->execute();
 $zoneList=[];

$sqlQueryCheck = "SELECT * FROM ahqa_zone_pincode_checker WHERE status ='Active'";
$stmtExist = $db->prepare($sqlQueryCheck);
$stmtExist->execute();

$countEx = $stmtExist->rowCount();
if($countEx>0){
     $zoneList = $stmtExist->fetchAll(PDO::FETCH_ASSOC);
   
   
}
//$stmtExist->close(); // Close the prepared statement
$results=[];

 // Get the current date in PHP
// $today = new DateTime();
$today = new DateTime("now");
$billingAddressZone=(isset($_GET['zone']) && $_GET['zone']!='')? $_GET['zone']: 56;
// Create a new date object for deliveryStartDate1day, deliveryStartDate, and deliveryEndDate
$deliveryStartDate1day = clone $today;
$deliveryStartDate = clone $today;
$deliveryEndDate = clone $today;
$zoneIndex = -1; // Initialize $zoneIndex to -1
if (isset($zoneList)) {
    foreach ($zoneList as $index => $attr) {
        if (isset($attr) && isset($attr['pincode']) && $attr['pincode'] === $billingAddressZone) {
            $zoneIndex = $index;
            break;
        }
    }
}

$deliveryTypeDay = ($zoneIndex > -1) ? ($zoneList[$zoneIndex]['delivery_days'] ?? '0') : '0';
            // Add days to the dates
            $deliveryStartDate1day->modify('+1 day');  // Add 1 day for deliveryStartDate1day
            $deliveryStartDate->modify('+2 days');     // Add 2 days for deliveryStartDate
            $deliveryEndDate->modify('+3 days');       // Add 3 days for deliveryEndDate
            
            
$results['express']=true;
if ($isQueryOk) {

  while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            
            // Format the date to display
            $options = ['l', 'F', 'j', 'Y']; // Full day name, Full month name, Day of the month, Year
            // Format the dates to display in the desired format
            $deliveryStartDateFormatted1day = $deliveryStartDate1day->format('D, M jS');
            $deliveryStartDateFormatted1daySave = $deliveryStartDate1day->format('Y/m/d');
            $deliveryStartDateFormatted = $deliveryStartDate->format('D, M jS');
             $deliveryStartDateFormattedSave = $deliveryStartDate->format('Y/m/d');
            $deliveryEndDateFormatted = $deliveryEndDate->format('D, M jS');
            $deliveryEndDateFormattedSave = $deliveryEndDate->format('Y/m/d');
            
             switch ($row['delivery_id']) {
                     case '654':
                    case '858': // Express
                        $results['display'][$row['delivery_id']] = $row['delivery_start'];
                        $results['saveformat'][$row['delivery_id']] = $row['delivery_start'];
                        
                        break;
                    case '859': // for Virtual Items
                            $results['display'][$row['delivery_id']] ='Instant';
                            $results['saveformat'][$row['delivery_id']] = $today->format('Y/m/d');
                         break;
                    case '664': // Vendor Pickup
                    case '5': //Supplier
                     // Check if the current day is Friday
                        // $deliveryStartDate->modify('+1 day');
                        $deliveryStartDate = clone $today;
                        $deliveryStartDate->modify('+6 days');
                        if ($deliveryStartDate->format('N') == 5) {
                            // If it's Friday, add two days
                            $deliveryStartDate->modify('+2 days');
                        }
                        $deliveryEndDate = clone $today;
                         // Check if the current day is Saturday
                         $deliveryEndDate->modify('+8 days');
                        if ($deliveryEndDate->format('N') == 6) {
                            // If it's Friday, add two days
                            $deliveryEndDate->modify('+3 days');
                        }
                        $deliveryEndDateFormatted = $deliveryEndDate->format('D, M d');
                        $deliveryStartDateFormatted = $deliveryStartDate->format('D, M d');
                        $deliveryStartDateFormattedSave = $deliveryStartDate->format('Y/m/d');
                        $deliveryEndDateFormattedSave = $deliveryEndDate->format('Y/m/d');
                        $results['display'][$row['delivery_id']]= $deliveryStartDateFormatted.'-' . $deliveryEndDateFormatted;
                        $results['saveformat'][$row['delivery_id']] = $deliveryStartDateFormattedSave . '-' . $deliveryEndDateFormattedSave;
                        break;
                    break;
                    case '691': // for Abaya
                        $results['display'][$row['delivery_id']] = $deliveryStartDateFormatted.'-' . $deliveryEndDateFormatted;
                        $results['saveformat'][$row['delivery_id']] =  $deliveryStartDateFormattedSave . '-' . $deliveryEndDateFormattedSave;
                         break;
                    case '690': // for cakes
                       // Create a new DateTime object for next Sunday
                        $nextSunday = clone $today;
                        $nextSunday->modify('+1 days');
                        $results['display'][$row['delivery_id']] = $row['delivery_start'];
                        $results['saveformat'][$row['delivery_id']] =$nextSunday->format('Y/m/d');
                            break;
                    case '6': // Warehouse
                        // $results['display'][$row['delivery_id']] = $deliveryStartDateFormatted1day.'-'. $deliveryStartDateFormatted;
                        // $results['saveformat'][$row['delivery_id']] =$deliveryStartDateFormatted1daySave.'-'. $deliveryStartDateFormattedSave;

                         $nextSundayWare = clone $today;
                        //if ($nextSundayWare->format('N') == 5) {
                            // If it's Friday, add two days
                            $nextSundayWare->modify('+6 days');
                        //}
                         // Check if the current day is Saturday
                        //  $deliveryEndDate->modify('+1 days');
                         $nextSundayWareEnd = clone $today;
                       // if ($nextSundayWareEnd->format('N') == 6) {
                            // If it's Friday, add two days
                            $nextSundayWareEnd->modify('+8 days');
                       // }
                        $deliveryEndDateFormatted = $nextSundayWareEnd->format('D, M d');
                        $deliveryStartDateFormatted = $nextSundayWare->format('D, M d');
                        $deliveryStartDateFormattedSave = $nextSundayWare->format('Y/m/d');
                        $deliveryEndDateFormattedSave = $nextSundayWareEnd->format('Y/m/d');
                        $results['display'][$row['delivery_id']]= $deliveryStartDateFormatted.'-' . $deliveryEndDateFormatted;
                        $results['saveformat'][$row['delivery_id']] = $deliveryStartDateFormattedSave . '-' . $deliveryEndDateFormattedSave;
                         break;
                    default: // Normal & Local  
                        
                        // Create a new DateTime object for next Sunday
                        $nextSunday = clone $today;
                        $nextSunday->modify('+1 days');
                        // Get the current day of the week (0 = Sunday, 1 = Monday, ..., 6 = Saturday)
                        $currentDayOfWeek = $today->format('w');
                        $results['display'][$row['delivery_id']] =  $nextSunday->format('l, F j, Y');
                        $results['saveformat'][$row['delivery_id']] = $nextSunday->format('Y/m/d'); 
                        //$results['express']=$deliveryTypeDay;
                        
                        if($deliveryTypeDay!=''){
                            // Calculate how many days until the next Sunday
                        
                            $results['express']=$daysUntilNextSunday;
                            switch ($deliveryTypeDay) {
                                case 'Sunday':
                                   $results['express']=false;
                                    $daysUntilNextSunday =(6 - $currentDayOfWeek) % 7;
                                    break;
                                case 'Monday':
                                     $daysUntilNextSunday = (7 - $currentDayOfWeek) % 7;
                                    $results['express']=false;
                                    break;
                                case 'Tuesday':
                                    // Calculate the number of days remaining until Tuesday
                                    $daysUntilNextSunday = (8 - $currentDayOfWeek) % 7;
                                    $results['express']=false;
                                    break;
                                case 'Wednesday':
                                    $results['express']=false;
                                    $daysUntilNextSunday = (9 - $currentDayOfWeek) % 7;
                                    break;
                                case 'Thursday':
                                    $results['express']=false;
                                    $daysUntilNextSunday = (10 - $currentDayOfWeek) % 7;
                                    break;
                                case 'Friday':
                                    $results['express']=false;
                                    $daysUntilNextSunday = (11 - $currentDayOfWeek) % 7;
                                    break;
                                case 'Saturday':
                                    $results['express']=false;
                                    $daysUntilNextSunday = (12 - $currentDayOfWeek) % 7;
                                    break;
                            }
                            
                            // Create a new DateTime object for next Sunday
                            $nextSunday->modify('+' . $daysUntilNextSunday . ' days');
                            
                            // Format the next Sunday date
                            $results['display'][$row['delivery_id']] =$nextSunday->format('l, F j, Y');
                            $results['saveformat'][$row['delivery_id']] = $nextSunday->format('Y/m/d'); //$row['delivery_start'];
                        }
                        
                        
                         break;
             }
            
            // Now, $divideItems contains the formatted dates and the 'normalDelivery' for the next Sunday or Monday.


 
    //$results['items'][]  =json_decode($result, true);
 }
 $db->close; // Close the prepared statement
 $db=null;
 $results['express']=($results['express']===false)? false:true;
 if($billingAddressZone>98){
     $results['express']=false;
 }
 $results['message']=($results['express']==false)? 'Express Delivery is not avaialble for the zone-'.$billingAddressZone.' .': 'NA';
} else {
  trigger_error('Error executing statement.', E_USER_ERROR);
}
 echo json_encode($results);