<?php

namespace NewsletterBridge\Services\Query;

use NewsletterBridge\Config\SiteConfig;

/**
 * Responsabilità: Costruzione range di date per query
 * Single Responsibility: Solo logica di date
 */
class DateRangeBuilder {
    
    /**
     * Costruisce il range di date per le query
     */
    public function buildDateRange(): array {
        $lastNewsletterDate = SiteConfig::getLastNewsletterDate();
        $today = date('Y-m-d');
        
        // Se non c'è data ultimo invio, usa ieri alle 00:00:00
        if (empty($lastNewsletterDate)) {
            $start_date = date('Y-m-d 00:00:00', strtotime('-1 day'));
        } else {
            // Se c'è data ultimo invio, estrai solo la data (senza ora)
            $last_date_only = date('Y-m-d', strtotime($lastNewsletterDate));
            
            // Se l'ultimo invio è stato oggi, usa ieri come inizio per includere tutti i post
            // pubblicati da ieri a oggi
            if ($last_date_only === $today) {
                $start_date = date('Y-m-d 00:00:00', strtotime('-1 day'));
            } else {
                // Altrimenti usa la data dell'ultimo invio come inizio
                $start_date = $last_date_only . ' 00:00:00';
            }
        }
        
        // Data di fine: fine del giorno corrente (23:59:59)
        $end_date = date('Y-m-d 23:59:59');
        
        return [
            'after' => $start_date,
            'before' => $end_date,
            'inclusive' => true
        ];
    }
}
