<?php
// Función para validar fechas
function validateDate($date, $format = 'Y-m-d')
{
    $d = DateTime::createFromFormat($format, $date);
    return $d && $d->format($format) === $date;
}

// Función para sanitizar entradas
function sanitizeInput($data)
{
    return htmlspecialchars(trim($data), ENT_QUOTES, 'UTF-8');
}

// Función para verificar si un usuario es administrador
function isAdmin()
{
    global $db;
    $username = $_SESSION['username'];
    $query = $db->prepare("SELECT Tipo FROM usuarios WHERE sAMAccountName = ?");
    $query->execute([$username]);
    $user = $query->fetch(PDO::FETCH_ASSOC);
    return $user['Tipo'] === 'A';
}

// Función para obtener todos los objetos disponibles
function getAvailableObjects()
{
    global $db;
    $query = $db->query("SELECT Objeto FROM objetos WHERE (FechaBaja IS NULL OR FechaBaja >= CURDATE()) AND (FechaAlta <= CURDATE())");
    return $query->fetchAll(PDO::FETCH_COLUMN);
}

//función para formatear fechas en formato d/m/Y
function formatDate($date)
{
    if (empty($date) || $date == 'N/A') {
        return 'N/A'; // Si la fecha está vacía, muestra "N/A"
    }
    $formattedDate = DateTime::createFromFormat('Y-m-d', $date);
    return $formattedDate ? $formattedDate->format('d/m/Y') : 'N/A';
}

// Función para formatear fechas al formato de MySQL (YYYY-MM-DD)
function formatDateForDatabase($dateString)
{
    if (empty($dateString) || $dateString == 'N/A') {
        return null; // Si la fecha está vacía, devolver NULL
    }

    // Intentar convertir la fecha desde DD/MM/YYYY a YYYY-MM-DD
    $dateParts = explode('/', $dateString);
    if (count($dateParts) === 3) {
        list($day, $month, $year) = $dateParts;
        return "$year-$month-$day"; // Formato MySQL
    }

    // Si no se puede convertir, intentar usar strtotime
    $timestamp = strtotime($dateString);
    if ($timestamp) {
        return date('Y-m-d', $timestamp);
    }

    // Si todo falla, devolver NULL
    return null;
}
?>