<?php
function getDateStatus($date, $week)
{
    
$now = new DateTime();                    // Current date
    
$startDate = new DateTime($date);        // Start date
    
$endDate = (clone $startDate)->modify("+$week week"); // End date is start + week
    
$windowStart = (clone $endDate)->modify("-1 week"); // 1 week before start

    
$isActive = $now >= $windowStart && $now <= $endDate;
    
$isPassed = $now > $endDate;

    if (
$isActive || $isPassed) {
        return 
"deactivated";  // Cannot be deleted or modified
    
} else {
        return 
"active"; // Can be deleted or modified
    
}
}

function 
createPlan($pdo, $fromDate, $week, $isActive)
{
    
$stmt = $pdo->prepare("INSERT INTO Plan (fromDate, week, is_active) " .
        
"VALUES (?,?)");
    return 
$stmt->execute([$fromDate, $week, $isActive]);
}

function 
getPlan($pdo, $id)
{
    
$stmt = $pdo->prepare("SELECT * FROM Plan where pk_plan = ?");
    
$stmt->execute([$id]);
    
$plan = $stmt->fetch(PDO::FETCH_ASSOC);

    return 
$plan ?: null;
}

function 
getAllActivePlan($pdo): array
{
    
$stmt = $pdo->query("SELECT * FROM Plan where is_active = 1");
    return 
$stmt->fetchAll(PDO::FETCH_ASSOC);
}

function 
updatePlan($pdo, $id, $fromDate, $week, $isActive): bool
{
    
$stmt = $pdo->prepare("UPDATE Plan SET fromDate=?, week=?, is_active=? WHERE pk_plan = ?");
    return 
$stmt->execute([$fromDate, $week, $isActive, $id]);
}

function 
setActivePlan($pdo, $id)
{
    
$stmt = $pdo->prepare("UPDATE Plan SET is_active=1 WHERE pk_plan = ?");
    return 
$stmt->execute([$id]);
}

function 
deletePlan($pdo, $id)
{
    
$stmt = $pdo->prepare("DELETE FROM Plan WHERE pk_plan = ? AND is_active = 1");
    return 
$stmt->execute([$id]);
}
?>