<?php
require 'dbconfig.php';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_POST['upload'])) {
        // Configurações do upload
        $uploadDir = 'uploads/';
        $filename = basename($_FILES['file']['name']);
        $targetFile = $uploadDir . $filename;
        $fileType = pathinfo($targetFile, PATHINFO_EXTENSION);

        // Verifica se o filename já existe no banco de dados
        $stmt = $pdo->prepare("SELECT COUNT(*) FROM assets WHERE filename = ?");
        $stmt->execute([$filename]);
        $fileExists = $stmt->fetchColumn();

        if ($fileExists) {
            echo "<p class='error'>Um arquivo com esse nome já existe. Por favor, renomeie o arquivo e tente novamente.</p>";
        } else {
            // Verifica se o upload foi feito corretamente
            if (move_uploaded_file($_FILES['file']['tmp_name'], $targetFile)) {
                // Define se é um vídeo ou não
                $is_video = in_array($fileType, ['mp4', 'avi', 'mov', 'wmv']) ? 1 : 0;

                // Insere as informações no banco de dados
                $stmt = $pdo->prepare("INSERT INTO assets (filename, is_video) VALUES (?, ?)");
                $stmt->execute([$filename, $is_video]);

                echo "<p class='success'>Arquivo carregado e salvo no banco de dados com sucesso!</p>";
            } else {
                echo "<p class='error'>Erro ao fazer upload do arquivo.</p>";
            }
        }
    }

    if (isset($_POST['create_schedule'])) {
        // Lógica para gravar a nova programação
        $data_inicial = $_POST['data_inicial'];
        $data_final = $_POST['data_final'];

        $stmt = $pdo->prepare("INSERT INTO schedule (data_inicial_programacao, data_final_programacao) VALUES (?, ?)");
        $stmt->execute([$data_inicial, $data_final]);

        echo "<p class='success'>Programação cadastrada com sucesso!</p>";
    }

    if (isset($_POST['associate_asset'])) {
        // Lógica para associar arquivos à programação
        $schedule_id = $_POST['schedule_id'];
        $asset_ids = $_POST['asset_ids'] ?? [];

        foreach ($asset_ids as $asset_id) {
            $stmt = $pdo->prepare("INSERT INTO schedule_assets (schedule_id, asset_id) VALUES (?, ?)");
            $stmt->execute([$schedule_id, $asset_id]);
        }

        echo "<p class='success'>Arquivos associados à programação com sucesso!</p>";
    }

    if (isset($_POST['generate_json'])) {
        // Lógica para gerar o JSON com base na programação selecionada
        $schedule_id = $_POST['schedule_id'];

        // Obtém os arquivos associados à programação selecionada
        $stmt = $pdo->prepare("
            SELECT a.filename, a.is_video, a.duration, a.selected, a.drag_selected, a.fullscreen 
            FROM assets a
            JOIN schedule_assets sa ON a.id = sa.asset_id
            WHERE sa.schedule_id = ?
        ");
        $stmt->execute([$schedule_id]);
        $assets = $stmt->fetchAll(PDO::FETCH_ASSOC);

        // Estrutura básica do JSON
        $json = [
            "version" => 42,
            "layout" => "1",
            "settings" => [
                "ticker" => [
                    "enable" => false,
                    "behavior" => "scroll",
                    "textSpeed" => 3,
                    "rss" => [
                        "enable" => false,
                        "link" => null,
                        "feedDelay" => 10
                    ]
                ],
                "ads" => [
                    "adPlaylist" => false,
                    "adCount" => 1,
                    "adInterval" => 60
                ],
                "audio" => [
                    "enable" => false,
                    "random" => false,
                    "volume" => 50
                ]
            ],
            "assets" => [],
            "templateName" => "custom_layout.html",
            "videoWindow" => null,
            "zoneVideoWindow" => [],
            "groupIds" => null
        ];

        // Adiciona os arquivos ao JSON
        foreach ($assets as $asset) {
            $json_asset = [
                "filename" => $asset['filename'],
                "duration" => $asset['duration'],
                "selected" => $asset['selected'],
                "option" => ["main" => false],
                "dragSelected" => $asset['drag_selected'],
                "fullscreen" => $asset['fullscreen']
            ];

            if ($asset['is_video']) {
                $json_asset["isVideo"] = true;
            }

            $json['assets'][] = $json_asset;
        }

        // Salva o JSON em um arquivo
        $json_filename = "schedule_$schedule_id.json";
        file_put_contents($json_filename, json_encode($json, JSON_PRETTY_PRINT));

        echo "<p class='success'>JSON gerado com sucesso! <a href='$json_filename' download>Baixar JSON</a></p>";
    }
}

// Obter os arquivos armazenados no banco de dados
$stmt = $pdo->query("SELECT id, filename, is_video FROM assets");
$assets = $stmt->fetchAll(PDO::FETCH_ASSOC);

// Obter as programações disponíveis
$stmt = $pdo->query("SELECT id, data_inicial_programacao, data_final_programacao FROM schedule");
$schedules = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Cadastro de Programação</title>
    <!-- Incluindo CSS e JS do Flatpickr -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">
    <style>
        body {
            font-family: Arial, sans-serif;
            background-image: url('imagem/marketing_background.jpeg');
            background-size: cover;
            background-position: center;
            margin: 0;
            padding: 0;
            color: #333;
        }
        .container {
            width: 80%;
            max-width: 800px;
            margin: 50px auto;
            background: rgba(255, 255, 255, 0.9);
            padding: 20px;
            border-radius: 10px;
            box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);
        }
        h1 {
            text-align: center;
            margin-bottom: 20px;
            color: #007BFF;
        }
        h2 {
            margin-top: 30px;
            color: #007BFF;
        }
        form {
            margin-bottom: 20px;
        }
        label {
            font-weight: bold;
            font-size: 16px;
            display: block;
            margin-bottom: 10px;
            text-align: center;
        }
        .date-container {
            display: flex;
            justify-content: space-between;
        }
        .date-container > div {
            width: 48%;
        }
        .flatpickr-calendar {
            width: 100%;
            margin: 10px 0;
        }
        .select-programacao {
            display: block;
            width: 100%;
            padding: 12px;
            margin: 10px 0;
            border-radius: 8px;
            border: 2px solid #ccc;
            background-color: #f9f9f9;
            font-size: 18px;
            color: #333;
            text-align: center;
            transition: border-color 0.3s, box-shadow 0.3s;
        }
        .select-programacao:focus {
            border-color: #007BFF;
            box-shadow: 0 0 10px rgba(0, 123, 255, 0.5);
            outline: none;
        }
        .asset-container {
            display: flex;
            flex-wrap: wrap;
            justify-content: space-between;
        }
        .asset-item {
            width: 23%;
            margin-bottom: 10px;
            text-align: center;
            cursor: pointer;
        }
        .asset-item img, .asset-item video {
            max-width: 100%;
            max-height: 100px;
            border-radius: 5px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
        }
        .asset-item input[type="checkbox"] {
            margin-top: 10px;
        }
        button {
            padding: 10px 20px;
            background-color: #007BFF;
            color: white;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            font-size: 16px;
            transition: background-color 0.3s;
        }
        button:hover {
            background-color: #0056b3;
        }
        .success {
            color: green;
            font-weight: bold;
            text-align: center;
        }
        .error {
            color: red;
            font-weight: bold;
            text-align: center;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>Cadastro de Programação de Vídeos e Fotos</h1>

        <!-- Formulário de Cadastro de Programação -->
        <h2>1. Cadastrar Programação</h2>
        <form action="index.php" method="post">
            <div class="date-container">
                <div>
                    <label for="data_inicial">Data Inicial:</label>
                    <input type="text" id="data_inicial" name="data_inicial" required>
                </div>
                <div>
                    <label for="data_final">Data Final:</label>
                    <input type="text" id="data_final" name="data_final" required>
                </div>
            </div>
            <button type="submit" name="create_schedule">Cadastrar Programação</button>
        </form>

        <!-- Formulário de Upload de Arquivos -->
        <h2>2. Carregar Vídeos/Fotos</h2>
        <form action="index.php" method="post" enctype="multipart/form-data">
            <label for="file">Selecione um vídeo ou foto:</label>
            <input type="file" name="file" id="file" required>
            <button type="submit" name="upload">Gravar no Banco de Dados</button>
        </form>

        <!-- Formulário de Associação de Assets à Programação -->
        <h2>3. Associar Vídeos/Fotos à Programação</h2>
        <form action="index.php" method="post">
            <label for="schedule_id">Programação:</label>
            <select class="select-programacao" name="schedule_id" id="schedule_id" required>
                <?php foreach ($schedules as $schedule): ?>
                    <option value="<?= $schedule['id'] ?>">
                        De <?= $schedule['data_inicial_programacao'] ?> até <?= $schedule['data_final_programacao'] ?>
                    </option>
                <?php endforeach; ?>
            </select>

            <div class="asset-container">
                <?php foreach ($assets as $asset): ?>
                    <div class="asset-item">
                        <?php if ($asset['is_video']): ?>
                            <video src="uploads/<?= $asset['filename'] ?>" controls></video>
                        <?php else: ?>
                            <img src="uploads/<?= $asset['filename'] ?>" alt="<?= $asset['filename'] ?>">
                        <?php endif; ?>
                        <input type="checkbox" name="asset_ids[]" value="<?= $asset['id'] ?>">
                    </div>
                <?php endforeach; ?>
            </div>

            <button type="submit" name="associate_asset">Associar Selecionados</button>
        </form>

        <!-- Botão para gerar JSON -->
        <h2>4. Gerar JSON</h2>
        <form action="index.php" method="post">
            <input type="hidden" name="schedule_id" value="<?= isset($schedule_id) ? $schedule_id : '' ?>">
            <button type="submit" name="generate_json">Gerar JSON</button>
        </form>
    </div>

    <!-- Incluindo JS do Flatpickr -->
    <script src="https://cdn.jsdelivr.net/npm/flatpickr"></script>
    <script>
        // Configuração dos calendários
        flatpickr("#data_inicial", {
            inline: true,
            dateFormat: "Y-m-d"
        });
        flatpickr("#data_final", {
            inline: true,
            dateFormat: "Y-m-d"
        });
    </script>
</body>
</html>
