<?php
include 'sesion.php';
include 'concha.php';

if (!isset($conn) || !($conn instanceof mysqli)) {
    die('Error: no existe la conexión mysqli en concha.php');
}

if (!function_exists('h')) {
    function h($v)
    {
        return htmlspecialchars((string)$v, ENT_QUOTES, 'UTF-8');
    }
}

function redirigirConMensaje($texto, $ok, $ancla = '')
{
    $url = 'programacion.php?msg=' . urlencode($texto) . '&ok=' . (int)$ok;
    if ($ancla !== '') {
        $url .= '#' . $ancla;
    }
    header('Location: ' . $url);
    exit;
}

function limpiarUrlPrograma($url)
{
    $url = trim((string)$url);
    if ($url === '' || $url === '#') {
        return '';
    }
    if (!preg_match('~^https?://~i', $url)) {
        $url = 'https://' . $url;
    }
    return $url;
}

function diaNumero($valor)
{
    $v = trim((string)$valor);
    $map = array(
        '1' => 1, 'lun' => 1, 'lunes' => 1,
        '2' => 2, 'mar' => 2, 'martes' => 2,
        '3' => 3, 'mie' => 3, 'mié' => 3, 'miercoles' => 3, 'miércoles' => 3,
        '4' => 4, 'jue' => 4, 'jueves' => 4,
        '5' => 5, 'vie' => 5, 'viernes' => 5,
        '6' => 6, 'sab' => 6, 'sáb' => 6, 'sabado' => 6, 'sábado' => 6,
        '7' => 7, 'dom' => 7, 'domingo' => 7
    );

    $v2 = strtolower($v);
    return isset($map[$v2]) ? $map[$v2] : 0;
}

function diaTexto($n)
{
    $dias = array(
        1 => 'Lun',
        2 => 'Mar',
        3 => 'Mié',
        4 => 'Jue',
        5 => 'Vie',
        6 => 'Sáb',
        7 => 'Dom'
    );
    return isset($dias[(int)$n]) ? $dias[(int)$n] : '';
}

function expandirDias($valor)
{
    $valor = trim((string)$valor);

    if ($valor === 'lv') {
        return array(1, 2, 3, 4, 5);
    }
    if ($valor === 'sd') {
        return array(6, 7);
    }
    if ($valor === 'todos') {
        return array(1, 2, 3, 4, 5, 6, 7);
    }

    $n = diaNumero($valor);
    return $n > 0 ? array($n) : array();
}

function horaFormatoDB($hora, $min)
{
    return sprintf('%02d.%02d', (int)$hora, (int)$min);
}

function subirImagenPrograma($campo, $directorioDestino, &$errorSubida)
{
    $errorSubida = '';

    if (!isset($_FILES[$campo]) || !is_array($_FILES[$campo])) {
        return '';
    }

    if (!isset($_FILES[$campo]['error']) || $_FILES[$campo]['error'] === UPLOAD_ERR_NO_FILE) {
        return '';
    }

    if ($_FILES[$campo]['error'] !== UPLOAD_ERR_OK) {
        $errorSubida = 'No se pudo subir la imagen.';
        return '';
    }

    if (!is_dir($directorioDestino)) {
        @mkdir($directorioDestino, 0777, true);
    }

    $tmp  = $_FILES[$campo]['tmp_name'];
    $name = $_FILES[$campo]['name'];
    $size = (int)$_FILES[$campo]['size'];

    if ($size <= 0) {
        $errorSubida = 'La imagen está vacía.';
        return '';
    }

    if ($size > 5 * 1024 * 1024) {
        $errorSubida = 'La imagen supera los 5 MB.';
        return '';
    }

    $ext = strtolower(pathinfo($name, PATHINFO_EXTENSION));
    $permitidas = array('jpg', 'jpeg', 'png', 'webp', 'gif');

    if (!in_array($ext, $permitidas)) {
        $errorSubida = 'Formato no permitido. Usá jpg, jpeg, png, webp o gif.';
        return '';
    }

    $nuevoNombre = 'programa_' . date('Ymd_His') . '_' . mt_rand(1000, 9999) . '.' . $ext;
    $destino = rtrim($directorioDestino, '/\\') . DIRECTORY_SEPARATOR . $nuevoNombre;

    if (!@move_uploaded_file($tmp, $destino)) {
        $errorSubida = 'No se pudo mover la imagen al servidor.';
        return '';
    }

    return $nuevoNombre;
}

function resolverUrlImagenPrograma($imagen, $dom, $carpetaFisica)
{
    $imagen = trim((string)$imagen);
    if ($imagen === '') {
        return '';
    }

    $baseUrl = rtrim((string)$dom, '/') . '/upload_pic/';
    $baseDir = rtrim($carpetaFisica, '/\\') . DIRECTORY_SEPARATOR;

    $candidatos = array();

    if (strpos($imagen, '.') !== false) {
        $candidatos[] = $imagen;
    } else {
        $candidatos[] = 'resize_' . $imagen . '.jpg';
        $candidatos[] = $imagen;
        $candidatos[] = $imagen . '.jpg';
        $candidatos[] = $imagen . '.jpeg';
        $candidatos[] = $imagen . '.png';
        $candidatos[] = $imagen . '.webp';
        $candidatos[] = $imagen . '.gif';
    }

    foreach ($candidatos as $archivo) {
        if (file_exists($baseDir . $archivo)) {
            return $baseUrl . $archivo;
        }
    }

    return $baseUrl . $imagen;
}

$dirUploadPic = dirname(__DIR__) . '/upload_pic';

if (isset($_GET['accion']) && $_GET['accion'] === 'borrar_programa' && isset($_GET['id'])) {
    $idPrograma = (int)$_GET['id'];

    $stmtUso = $conn->prepare("SELECT COUNT(*) AS total FROM programacion WHERE programa = ?");
    $stmtUso->bind_param('i', $idPrograma);
    $stmtUso->execute();
    $resUso = $stmtUso->get_result();
    $filaUso = $resUso->fetch_assoc();
    $stmtUso->close();

    if ((int)$filaUso['total'] > 0) {
        redirigirConMensaje('No se puede borrar el programa porque tiene horarios cargados.', 0, 'lista-programas');
    }

    $stmt = $conn->prepare("DELETE FROM programas WHERE ID = ? LIMIT 1");
    $stmt->bind_param('i', $idPrograma);
    $stmt->execute();
    $stmt->close();

    redirigirConMensaje('Programa borrado correctamente.', 1, 'lista-programas');
}

if (isset($_GET['accion']) && $_GET['accion'] === 'borrar_horario') {
    if (isset($_GET['id']) && $_GET['id'] !== '') {
        $idHorario = (int)$_GET['id'];
        $stmt = $conn->prepare("DELETE FROM programacion WHERE ID = ? LIMIT 1");
        $stmt->bind_param('i', $idHorario);
        $stmt->execute();
        $stmt->close();
        redirigirConMensaje('Horario eliminado correctamente.', 1, 'grilla-semanal');
    } else {
        $dia = isset($_GET['dia']) ? trim($_GET['dia']) : '';
        $ini = isset($_GET['ini']) ? trim($_GET['ini']) : '';
        $fin = isset($_GET['fin']) ? trim($_GET['fin']) : '';
        $programa = isset($_GET['programa']) ? (int)$_GET['programa'] : 0;

        $stmt = $conn->prepare("DELETE FROM programacion WHERE dia = ? AND ini = ? AND fin = ? AND programa = ? LIMIT 1");
        $stmt->bind_param('sssi', $dia, $ini, $fin, $programa);
        $stmt->execute();
        $stmt->close();

        redirigirConMensaje('Horario eliminado correctamente.', 1, 'grilla-semanal');
    }
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $accion = isset($_POST['accion']) ? $_POST['accion'] : '';

    if ($accion === 'agregar_programa') {
        $nombre = isset($_POST['nombre_programa']) ? trim($_POST['nombre_programa']) : '';
        $url    = isset($_POST['url_programa']) ? limpiarUrlPrograma($_POST['url_programa']) : '';

        if ($nombre === '') {
            redirigirConMensaje('El nombre del programa no puede quedar vacío.', 0, 'bloque-programas');
        }

        $errorSubida = '';
        $imagen = subirImagenPrograma('foto_programa', $dirUploadPic, $errorSubida);

        if ($errorSubida !== '') {
            redirigirConMensaje($errorSubida, 0, 'bloque-programas');
        }

        $stmt = $conn->prepare("INSERT INTO programas (nombre, imagen, url) VALUES (?, ?, ?)");
        $stmt->bind_param('sss', $nombre, $imagen, $url);
        $stmt->execute();
        $stmt->close();

        redirigirConMensaje('Programa agregado correctamente.', 1, 'lista-programas');
    }

    if ($accion === 'guardar_programa') {
        $id     = isset($_POST['programa_id']) ? (int)$_POST['programa_id'] : 0;
        $nombre = isset($_POST['nombre_programa']) ? trim($_POST['nombre_programa']) : '';
        $url    = isset($_POST['url_programa']) ? limpiarUrlPrograma($_POST['url_programa']) : '';

        if ($id <= 0 || $nombre === '') {
            redirigirConMensaje('Datos incompletos para guardar el programa.', 0, 'lista-programas');
        }

        $stmtActual = $conn->prepare("SELECT imagen FROM programas WHERE ID = ? LIMIT 1");
        $stmtActual->bind_param('i', $id);
        $stmtActual->execute();
        $resActual = $stmtActual->get_result();
        $progActual = $resActual->fetch_assoc();
        $stmtActual->close();

        $imagen = isset($progActual['imagen']) ? $progActual['imagen'] : '';

        $errorSubida = '';
        $nuevaImagen = subirImagenPrograma('foto_programa', $dirUploadPic, $errorSubida);

        if ($errorSubida !== '') {
            redirigirConMensaje($errorSubida, 0, 'lista-programas');
        }

        if ($nuevaImagen !== '') {
            $imagen = $nuevaImagen;
        }

        $stmt = $conn->prepare("UPDATE programas SET nombre = ?, imagen = ?, url = ? WHERE ID = ? LIMIT 1");
        $stmt->bind_param('sssi', $nombre, $imagen, $url, $id);
        $stmt->execute();
        $stmt->close();

        redirigirConMensaje('Programa actualizado correctamente.', 1, 'lista-programas');
    }

    if ($accion === 'agregar_horario') {
        $programaId = isset($_POST['programa_id']) ? (int)$_POST['programa_id'] : 0;
        $dias       = isset($_POST['dias']) ? expandirDias($_POST['dias']) : array();

        $desdeHora  = isset($_POST['desde_hora']) ? (int)$_POST['desde_hora'] : 0;
        $desdeMin   = isset($_POST['desde_min']) ? (int)$_POST['desde_min'] : 0;
        $hastaHora  = isset($_POST['hasta_hora']) ? (int)$_POST['hasta_hora'] : 0;
        $hastaMin   = isset($_POST['hasta_min']) ? (int)$_POST['hasta_min'] : 0;

        if ($programaId <= 0) {
            redirigirConMensaje('Seleccioná un programa.', 0, 'form-horario');
        }

        if (empty($dias)) {
            redirigirConMensaje('Seleccioná al menos un día.', 0, 'form-horario');
        }

        $ini = horaFormatoDB($desdeHora, $desdeMin);
        $fin = horaFormatoDB($hastaHora, $hastaMin);

        if ($ini === $fin) {
            redirigirConMensaje('La hora de inicio y fin no pueden ser iguales.', 0, 'form-horario');
        }

        $stmt = $conn->prepare("INSERT INTO programacion (dia, ini, fin, programa) VALUES (?, ?, ?, ?)");

        foreach ($dias as $dia) {
            $diaDB = (string)$dia;
            $stmt->bind_param('sssi', $diaDB, $ini, $fin, $programaId);
            $stmt->execute();
        }

        $stmt->close();

        redirigirConMensaje('Horario cargado correctamente.', 1, 'grilla-semanal');
    }
}

$mensaje = isset($_GET['msg']) ? $_GET['msg'] : '';
$ok      = isset($_GET['ok']) ? (int)$_GET['ok'] : 1;

$programas = array();
$sqlProgramas = "SELECT ID, nombre, imagen, url FROM programas ORDER BY nombre ASC";
$resProgramas = $conn->query($sqlProgramas);

if ($resProgramas) {
    while ($row = $resProgramas->fetch_assoc()) {
        $row['imagen_url'] = resolverUrlImagenPrograma($row['imagen'], $dom, $dirUploadPic);
        $programas[] = $row;
    }
    $resProgramas->free();
}

$horariosPorDia = array(
    1 => array(),
    2 => array(),
    3 => array(),
    4 => array(),
    5 => array(),
    6 => array(),
    7 => array()
);

$sqlHorarios = "
    SELECT programacion.*, 
           programas.nombre AS programa_nombre,
           programas.imagen AS programa_imagen,
           programas.url AS programa_url
    FROM programacion
    LEFT JOIN programas ON programacion.programa = programas.ID
    ORDER BY CAST(programacion.dia AS UNSIGNED) ASC, programacion.ini ASC
";
$resHorarios = $conn->query($sqlHorarios);

if ($resHorarios) {
    while ($row = $resHorarios->fetch_assoc()) {
        $nDia = diaNumero($row['dia']);
        if ($nDia > 0) {
            $row['imagen_url'] = resolverUrlImagenPrograma($row['programa_imagen'], $dom, $dirUploadPic);
            $horariosPorDia[$nDia][] = $row;
        }
    }
    $resHorarios->free();
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="utf-8">
    <meta name="description" content="Panel de Administración">
    <meta name="author" content="<?php echo h($nombresitio); ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title><?php echo h($nombresitio); ?> - Panel de Administración</title>

    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">

    <style type="text/css">
        *{
            box-sizing:border-box;
        }
        body{
            background:#eceff3 url(../fondeux.jpg) repeat;
            color:#1c2430;
        }
        .page-wrap{
            width:100%;
            max-width:1600px;
            margin:0 auto;
            padding:0 15px 30px 15px;
        }
        .panel-surface{
            background:#ffffff;
            border:1px solid #dde3ea;
            box-shadow:0 8px 30px rgba(0,0,0,.06);
        }
        .top-title{
            background:#0066ff;
            color:#fff;
            padding:18px 22px;
            font-size:28px;
            font-weight:700;
            letter-spacing:.3px;
        }
        .section-pad{
            padding:22px;
        }
        .card-ui{
            border:1px solid #e4e8ee;
            background:#fff;
            box-shadow:0 4px 18px rgba(0,0,0,.04);
            border-radius:12px;
        }
        .card-ui .card-head{
            padding:14px 16px;
            border-bottom:1px solid #edf1f5;
            font-size:18px;
            font-weight:700;
        }
        .card-ui .card-body-ui{
            padding:16px;
        }
        .mini-label{
            font-size:12px;
            font-weight:700;
            color:#677489;
            text-transform:uppercase;
            letter-spacing:.4px;
            margin-bottom:6px;
        }
        .btn-primary{
            background:#0066ff;
            border-color:#0066ff;
        }
        .btn-primary:hover{
            background:#0057d8;
            border-color:#0057d8;
        }
        .semana-grid{
            display:grid;
            grid-template-columns:repeat(7, minmax(220px, 1fr));
            gap:16px;
            overflow-x:auto;
            padding-bottom:8px;
        }
        .dia-columna{
            min-width:220px;
            background:#f8fafc;
            border:1px solid #e4e8ee;
            border-radius:14px;
            overflow:hidden;
        }
        .dia-head{
            background:#1f2937;
            color:#fff;
            padding:12px 14px;
            font-size:18px;
            font-weight:700;
            display:flex;
            justify-content:space-between;
            align-items:center;
        }
        .dia-body{
            padding:12px;
        }
        .badge-cantidad{
            background:#ffffff;
            color:#1f2937;
            border-radius:999px;
            min-width:28px;
            text-align:center;
            padding:3px 8px;
            font-size:12px;
            font-weight:700;
        }
        .horario-card{
            background:#ffffff;
            border:1px solid #e4e8ee;
            border-radius:12px;
            padding:10px;
            margin-bottom:10px;
            box-shadow:0 3px 12px rgba(0,0,0,.04);
        }
        .horario-card:last-child{
            margin-bottom:0;
        }
        .horario-top{
            display:flex;
            justify-content:space-between;
            align-items:flex-start;
            gap:10px;
        }
        .hora-chip{
            display:inline-block;
            background:#eaf2ff;
            color:#0052cc;
            font-size:12px;
            font-weight:700;
            border-radius:999px;
            padding:4px 9px;
            margin-bottom:8px;
        }
        .programa-nombre{
            font-size:15px;
            font-weight:700;
            line-height:1.25;
            margin-bottom:0;
        }
        .thumb-mini{
            width:100%;
            height:90px;
            object-fit:cover;
            border-radius:10px;
            border:1px solid #e2e8f0;
            margin-top:10px;
        }
        .sin-foto{
            width:100%;
            height:90px;
            background:#eef2f6;
            border:1px dashed #cad3df;
            border-radius:10px;
            display:flex;
            align-items:center;
            justify-content:center;
            color:#7b8794;
            font-size:12px;
            margin-top:10px;
        }
        .empty-day{
            text-align:center;
            color:#8090a4;
            font-size:14px;
            padding:20px 10px;
        }
        .programas-grid{
            display:grid;
            grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));
            gap:18px;
        }
        .programa-card{
            border:1px solid #e4e8ee;
            border-radius:14px;
            overflow:hidden;
            background:#fff;
            box-shadow:0 4px 18px rgba(0,0,0,.05);
        }
        .programa-card .imagen-wrap{
            height:180px;
            background:#f2f5f8;
            display:flex;
            align-items:center;
            justify-content:center;
            overflow:hidden;
        }
        .programa-card .imagen-wrap img{
            width:100%;
            height:100%;
            object-fit:cover;
        }
        .programa-card .imagen-vacia{
            color:#7e8a98;
            font-size:13px;
        }
        .programa-card .contenido{
            padding:16px;
        }
        .section-title{
            font-size:24px;
            font-weight:700;
            margin-bottom:0;
        }
        .subtle{
            color:#6b7a90;
            font-size:14px;
        }
        .form-control, .custom-select{
            border-radius:10px;
            min-height:42px;
        }
        .btn{
            border-radius:10px;
        }
        .alert{
            border-radius:12px;
        }
        .menu-wrap{
            background:#f1f2ed;
            border:1px solid #d9ded4;
            margin-top:15px;
        }
        @media (max-width: 991px){
            .top-title{
                font-size:24px;
            }
        }
    </style>
</head>
<body>

<div class="page-wrap">

    <div class="menu-wrap">
        <?php
        if (isset($estiloweb) && (int)$estiloweb === 9) {
            include 'menu_estilo9.php';
        } else {
            include 'menu.php';
        }
        ?>
    </div>

    <div class="panel-surface mt-3">
        <div class="top-title">Programación</div>

        <div class="section-pad">

            <?php if ($mensaje !== '') { ?>
                <div class="alert <?php echo $ok ? 'alert-success' : 'alert-danger'; ?>">
                    <?php echo h($mensaje); ?>
                </div>
            <?php } ?>

            <div class="row">
                <div class="col-lg-8 mb-4">
                    <div class="card-ui" id="form-horario">
                        <div class="card-head">Cargar horario</div>
                        <div class="card-body-ui">
                            <form method="post" action="programacion.php">
                                <input type="hidden" name="accion" value="agregar_horario">

                                <div class="form-row">
                                    <div class="form-group col-md-6">
                                        <div class="mini-label">Programa</div>
                                        <select class="custom-select" name="programa_id" required>
                                            <option value="">Seleccionar programa</option>
                                            <?php foreach ($programas as $p) { ?>
                                                <option value="<?php echo (int)$p['ID']; ?>"><?php echo h($p['nombre']); ?></option>
                                            <?php } ?>
                                        </select>
                                    </div>

                                    <div class="form-group col-md-6">
                                        <div class="mini-label">Día</div>
                                        <select class="custom-select" name="dias" required>
                                            <option value="1">Lunes</option>
                                            <option value="2">Martes</option>
                                            <option value="3">Miércoles</option>
                                            <option value="4">Jueves</option>
                                            <option value="5">Viernes</option>
                                            <option value="6">Sábado</option>
                                            <option value="7">Domingo</option>
                                            <option value="lv">Lunes a Viernes</option>
                                            <option value="sd">Sábado y Domingo</option>
                                            <option value="todos">Todos los días</option>
                                        </select>
                                    </div>
                                </div>

                                <div class="form-row">
                                    <div class="form-group col-md-3 col-6">
                                        <div class="mini-label">Desde hora</div>
                                        <select class="custom-select" name="desde_hora">
                                            <?php for ($i = 0; $i <= 23; $i++) { ?>
                                                <option value="<?php echo $i; ?>"><?php echo sprintf('%02d', $i); ?></option>
                                            <?php } ?>
                                        </select>
                                    </div>

                                    <div class="form-group col-md-3 col-6">
                                        <div class="mini-label">Desde min</div>
                                        <select class="custom-select" name="desde_min">
                                            <option value="0">00</option>
                                            <option value="5">05</option>
                                            <option value="10">10</option>
                                            <option value="15">15</option>
                                            <option value="20">20</option>
                                            <option value="25">25</option>
                                            <option value="30">30</option>
                                            <option value="35">35</option>
                                            <option value="40">40</option>
                                            <option value="45">45</option>
                                            <option value="50">50</option>
                                            <option value="55">55</option>
                                        </select>
                                    </div>

                                    <div class="form-group col-md-3 col-6">
                                        <div class="mini-label">Hasta hora</div>
                                        <select class="custom-select" name="hasta_hora">
                                            <?php for ($i = 0; $i <= 23; $i++) { ?>
                                                <option value="<?php echo $i; ?>"><?php echo sprintf('%02d', $i); ?></option>
                                            <?php } ?>
                                        </select>
                                    </div>

                                    <div class="form-group col-md-3 col-6">
                                        <div class="mini-label">Hasta min</div>
                                        <select class="custom-select" name="hasta_min">
                                            <option value="0">00</option>
                                            <option value="5">05</option>
                                            <option value="10">10</option>
                                            <option value="15">15</option>
                                            <option value="20">20</option>
                                            <option value="25">25</option>
                                            <option value="30">30</option>
                                            <option value="35">35</option>
                                            <option value="40">40</option>
                                            <option value="45">45</option>
                                            <option value="50">50</option>
                                            <option value="55">55</option>
                                        </select>
                                    </div>
                                </div>

                                <div class="d-flex flex-wrap align-items-center justify-content-between">
                                    <div class="subtle mb-2 mb-md-0">
                                        La grilla se carga abajo en formato compacto tipo cards.
                                    </div>
                                    <button type="submit" class="btn btn-primary px-4">Guardar horario</button>
                                </div>
                            </form>
                        </div>
                    </div>
                </div>

                <div class="col-lg-4 mb-4" id="bloque-programas">
                    <div class="card-ui">
                        <div class="card-head">Agregar programa</div>
                        <div class="card-body-ui">
                            <form method="post" action="programacion.php" enctype="multipart/form-data">
                                <input type="hidden" name="accion" value="agregar_programa">

                                <div class="form-group">
                                    <div class="mini-label">Nombre del programa</div>
                                    <input type="text" class="form-control" name="nombre_programa" required>
                                </div>

                                <div class="form-group">
                                    <div class="mini-label">URL</div>
                                    <input type="text" class="form-control" name="url_programa" placeholder="https://...">
                                </div>

                                <div class="form-group">
                                    <div class="mini-label">Foto</div>
                                    <input type="file" class="form-control" name="foto_programa" accept=".jpg,.jpeg,.png,.webp,.gif">
                                </div>

                                <button type="submit" class="btn btn-primary btn-block">Agregar programa</button>
                            </form>
                        </div>
                    </div>
                </div>
            </div>

            <div class="d-flex flex-wrap align-items-center justify-content-between mb-3" id="grilla-semanal">
                <h3 class="section-title">Grilla semanal</h3>
                <a href="#lista-programas" class="btn btn-outline-primary">Ir a programas cargados</a>
            </div>

            <div class="semana-grid">
                <?php for ($dia = 1; $dia <= 7; $dia++) { ?>
                    <div class="dia-columna">
                        <div class="dia-head">
                            <span><?php echo diaTexto($dia); ?></span>
                            <span class="badge-cantidad"><?php echo count($horariosPorDia[$dia]); ?></span>
                        </div>

                        <div class="dia-body">
                            <?php if (empty($horariosPorDia[$dia])) { ?>
                                <div class="empty-day">Sin programas cargados</div>
                            <?php } else { ?>
                                <?php foreach ($horariosPorDia[$dia] as $item) { ?>
                                    <div class="horario-card">
                                        <div class="hora-chip">
                                            de <?php echo h($item['ini']); ?> a <?php echo h($item['fin']); ?>
                                        </div>

                                        <div class="horario-top">
                                            <div style="flex:1;">
                                                <p class="programa-nombre"><?php echo h($item['programa_nombre']); ?></p>
                                            </div>

                                            <?php
                                            $linkBorrar = 'programacion.php?accion=borrar_horario';
                                            if (isset($item['ID']) && $item['ID'] !== '') {
                                                $linkBorrar .= '&id=' . urlencode($item['ID']);
                                            } else {
                                                $linkBorrar .= '&dia=' . urlencode($item['dia']) .
                                                               '&ini=' . urlencode($item['ini']) .
                                                               '&fin=' . urlencode($item['fin']) .
                                                               '&programa=' . urlencode($item['programa']);
                                            }
                                            ?>
                                            <a href="<?php echo $linkBorrar; ?>" class="btn btn-sm btn-outline-danger" onclick="return confirm('¿Eliminar este horario?');">Borrar</a>
                                        </div>

                                        <?php if ($item['imagen_url'] !== '') { ?>
                                            <img src="<?php echo h($item['imagen_url']); ?>" alt="<?php echo h($item['programa_nombre']); ?>" class="thumb-mini">
                                        <?php } else { ?>
                                            <div class="sin-foto">Sin foto</div>
                                        <?php } ?>
                                    </div>
                                <?php } ?>
                            <?php } ?>
                        </div>
                    </div>
                <?php } ?>
            </div>

            <div class="d-flex flex-wrap align-items-center justify-content-between mt-5 mb-3" id="lista-programas">
                <h3 class="section-title">Programas cargados</h3>
                <div class="subtle"><?php echo count($programas); ?> programas</div>
            </div>

            <div class="programas-grid">
                <?php if (empty($programas)) { ?>
                    <div class="alert alert-secondary mb-0">Todavía no hay programas cargados.</div>
                <?php } ?>

                <?php foreach ($programas as $p) { ?>
                    <div class="programa-card">
                        <div class="imagen-wrap">
                            <?php if ($p['imagen_url'] !== '') { ?>
                                <img src="<?php echo h($p['imagen_url']); ?>" alt="<?php echo h($p['nombre']); ?>">
                            <?php } else { ?>
                                <div class="imagen-vacia">Sin foto</div>
                            <?php } ?>
                        </div>

                        <div class="contenido">
                            <form method="post" action="programacion.php#lista-programas" enctype="multipart/form-data">
                                <input type="hidden" name="accion" value="guardar_programa">
                                <input type="hidden" name="programa_id" value="<?php echo (int)$p['ID']; ?>">

                                <div class="form-group">
                                    <div class="mini-label">Nombre</div>
                                    <input type="text" class="form-control" name="nombre_programa" value="<?php echo h($p['nombre']); ?>" required>
                                </div>

                                <div class="form-group">
                                    <div class="mini-label">URL</div>
                                    <input type="text" class="form-control" name="url_programa" value="<?php echo h($p['url']); ?>" placeholder="https://...">
                                </div>

                                <div class="form-group">
                                    <div class="mini-label">Cambiar foto</div>
                                    <input type="file" class="form-control" name="foto_programa" accept=".jpg,.jpeg,.png,.webp,.gif">
                                </div>

                                <div class="d-flex justify-content-between">
                                    <button type="submit" class="btn btn-primary">Guardar cambios</button>
                                    <a href="programacion.php?accion=borrar_programa&id=<?php echo (int)$p['ID']; ?>#lista-programas" class="btn btn-outline-danger" onclick="return confirm('¿Seguro que querés borrar este programa?');">Borrar</a>
                                </div>
                            </form>
                        </div>
                    </div>
                <?php } ?>
            </div>

        </div>
    </div>

</div>

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</body>
</html>