{% extends 'layout.twig' %}

{% block body %}
    {% include 'nav.twig' %}
    <h1>{{ title }}</h1>

    {% if schedules|length > 0 %}
        <iframe id="scheduleViewer" style="width: 100vw; height: 70vh"
            src="fileserver.php?folder={{ folder }}&file={{ schedules[0].file_name }}#toolbar=1&scrollbar=1&view=FitH&statusbar=0&messages=0&navpanes=0">
        </iframe>



    {% else %}
        <div class="text-center p-5 border rounded bg-light">No schedule available</div>
    {% endif %}

    <div class="container">
        <div class="row justify-content-center">
            <div class="col-md-auto">
                {% if schedules|length > 0 %}
                    <select id="scheduleSelector" class="form-select mb-3" onchange="change_part(this)">
                        {% for schedule in schedules %}
                            <option value="{{ schedule.file_name }}">{{ schedule.custom_name }} ({{ schedule.schedule_date }})</option>
                        {% endfor %}
                    </select>
                {% endif %}

                {% if schedules|length > 0 %}
                    <a id="downloadLink" href="fileserver.php?download&download_name={{schedules[0].custom_name}}_{{schedules[0].schedule_date}}&folder={{ folder }}&file={{ schedules[0].file_name }}" class="btn btn-primary mb-3" download>Download</a>
                {% endif %}

                {% if canedit %}
                    {% if schedules|length > 0 %}
                        <button class="btn btn-danger mb-3" onclick="deleteSchedule('{{ schedules[0].file_name }}')">Delete</button>
                    {% endif %}
                    <h5 class="mt-4">Upload New Schedule</h5>
                    <form id="uploadForm" class="p-3 border rounded shadow-sm bg-light" method="post" enctype="multipart/form-data">
                        <div class="mb-3">
                            <label for="custom_name" class="form-label">Custom Name:</label>
                            <input class="form-control" required name="custom_name" id="custom_name">
                        </div>
                        <div class="mb-3">
                            <label for="date" class="form-label">Date:</label>
                            <input type="date" class="form-control" required name="date" id="date">
                        </div>
                        <div class="mb-3">
                            <label for="expiry_date" class="form-label">Expiry Date:</label>
                            <input type="date" class="form-control" required name="expiry_date" id="expiry_date">
                        </div>
                        <div class="mb-3">
                            <label for="file" class="form-label">Upload File:</label>
                            <input name="file" type="file" class="form-control" id="file" required>
                        </div>
                        <input type="hidden" name="file_name" id="file_name">
                        <button type="button" class="btn btn-success w-100" onclick="uploadSchedule()">Upload</button>
                    </form>
                {% endif %}
            </div>
        </div>
    </div>
{% endblock %}
{% block script %}
    <script>
        document.addEventListener("DOMContentLoaded", function() {
            let iframe = document.getElementById("scheduleViewer");

            if (iframe) {
                iframe.onload = function () {
                    let iframeWindow = iframe.contentWindow || iframe;

                    try {
                        // Override print behavior inside the iframe
                        iframeWindow.print = function() {
                            console.log("Auto-print attempt blocked.");
                        };
                    } catch (err) {
                        console.warn("Could not override print function:", err);
                    }
                };
            }

            // Detect if any print dialog appears and block it
            window.addEventListener("beforeprint", function(event) {
                event.preventDefault();
                console.log("Blocked auto-print.");
            });
        });

        function getNextSaturday() {
            let today = new Date();
            let day = today.getDay();
            let nextSaturday = new Date();
            nextSaturday.setDate(today.getDate() + ((6 - day + 7) % 7 || 7));
            return nextSaturday.toISOString().split('T')[0];
        }

        function getNextMonday() {
            let nextSaturday = new Date(getNextSaturday());
            let nextMonday = new Date(nextSaturday);
            nextMonday.setDate(nextSaturday.getDate() + 2);
            return nextMonday.toISOString().split('T')[0];
        }

        document.addEventListener("DOMContentLoaded", function() {
            let dateField = document.getElementById("date");
            let expiryField = document.getElementById("expiry_date");
            let today = new Date().toISOString().split('T')[0];

            dateField.min = today;
            expiryField.min = today;

            dateField.value = getNextSaturday();
            expiryField.value = getNextMonday();

            dateField.addEventListener("change", function() {
                expiryField.min = this.value;
                if (expiryField.value <= this.value) {
                    let expiryDate = new Date(this.value);
                    expiryDate.setDate(expiryDate.getDate() + 2);
                    expiryField.value = expiryDate.toISOString().split('T')[0];
                }
            });
        });

        function change_part(which) {
            let newFile = which.value;
            document.getElementById("scheduleViewer").src = "fileserver.php?folder={{ folder }}&file=" + newFile;
            document.getElementById("downloadLink").href = "fileserver.php?download&download_name=" + encodeURIComponent(which.options[which.selectedIndex].text) + "&folder={{ folder }}&file=" + newFile;
        }

        function deleteSchedule(fileName) {
            if (!confirm('Are you sure you want to delete this schedule?')) return;
            fetch('api.php?method=delete_schedule', {
                method: 'POST',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                body: 'file_name=' + encodeURIComponent(fileName)
            })
            .then(response => response.json())
            .then(data => {
                alert(data.message);
                location.reload();
            })
            .catch(error => alert('Deletion failed: ' + error));
        }

        function uploadSchedule() {
            let formData = new FormData(document.getElementById('uploadForm'));
            let fileInput = document.getElementById('file');
            if (fileInput.files.length > 0) {
                formData.set('file_name', fileInput.files[0].name);
            }

            fetch('api.php?method=upload_schedule', {
                method: 'POST',
                body: formData
            })
            .then(response => response.json())
            .then(data => {
                alert(data.message);
                location.reload();
            })
            .catch(error => alert('Upload failed: ' + error));
        }
    </script>
{% endblock %}
