<!DOCTYPE html>
<html lang="hr">
<head>
    <meta charset="UTF-8">
    <title>Generiranje Izvještaja</title>
    <style>
        /* Stilska pravila za loading modal i alerte */
        #loadingModal, #errorAlert, #successAlert {
            display: none;
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            padding: 20px;
            border-radius: 8px;
            color: white;
            text-align: center;
        }
        #loadingModal { background-color: rgba(0, 0, 0, 0.7); }
        #errorAlert { background-color: red; }
        #successAlert { background-color: green; }
    </style>
</head>
<body>
    <!-- Mjesečni izbor -->
    <div id="months">
        <?php
        $months = [
            1 => "Siječanj", 2 => "Veljača", 3 => "Ožujak", 4 => "Travanj",
            5 => "Svibanj", 6 => "Lipanj", 7 => "Srpanj", 8 => "Kolovoz",
            9 => "Rujan", 10 => "Listopad", 11 => "Studeni", 12 => "Prosinac"
        ];
        foreach ($months as $number => $name) {
            echo "<button onclick='startProcess($number)'>$name</button>";
        }
        ?>
    </div>

    <!-- Loading modal -->
    <div id="loadingModal">Obrađujem... Molimo pričekajte.</div>

    <!-- Uspješno završena poruka -->
    <div id="successAlert">Izvještaji su uspješno generirani i poslani!</div>

    <!-- Error Alert za lošu internet vezu -->
    <div id="errorAlert">Internet veza nije dostupna. Provjerite vezu i pokušajte ponovno.</div>

    <script>
        async function startProcess(month) {
            document.getElementById('loadingModal').style.display = 'block';
            try {
                await checkInternet();
                await checkLicense();
                await generateReport(month);
                await sendEmails();
                showSuccessAlert();
            } catch (error) {
                showErrorAlert(error);
            } finally {
                hideLoading();
            }
        }

        function checkInternet() {
            return fetch('kontrola_interneta.php')
                .then(response => response.ok ? response.text() : Promise.reject('Nema internet veze'))
                .then(responseText => {
                    if (!responseText.includes('Internet veza je ispravna')) {
                        throw 'Internet veza nije dostupna';
                    }
                });
        }

        function checkLicense() {
            return fetch('provjera_licence.php')
                .then(response => response.ok ? response.text() : Promise.reject('Licenca nije važeća'))
                .then(responseText => {
                    if (!responseText.includes('Licenca je važeća')) {
                        throw 'Licenca nije važeća';
                    }
                });
        }

        function generateReport(month) {
            // Parametri za datume
            const startDate = `01-${month < 10 ? '0' + month : month}-2024`;
            const endDate = `31-${month < 10 ? '0' + month : month}-2024`;

            // PHP će se pobrinuti za prijavu, generiranje izvještaja, te pripremu za slanje e-mailova
            return fetch('generate_report.php', {
                method: 'POST',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                body: `month=${month}&startDate=${startDate}&endDate=${endDate}`
            })
            .then(response => response.text())
            .then(responseText => {
                if (!responseText.includes('Izvještaj je kreiran')) {
                    throw 'Greška prilikom generiranja izvještaja';
                }
            });
        }

        function sendEmails() {
            return fetch('send_emails.php')
                .then(response => response.text())
                .then(responseText => {
                    if (!responseText.includes('E-mail poslan za Vlasnik') || !responseText.includes('E-mail poslan za Knjigovodstvo')) {
                        throw 'Greška prilikom slanja e-maila';
                    }
                });
        }

        function hideLoading() {
            document.getElementById('loadingModal').style.display = 'none';
        }

        function showSuccessAlert() {
            document.getElementById('successAlert').style.display = 'block';
            setTimeout(() => { document.getElementById('successAlert').style.display = 'none'; }, 5000);
        }

        function showErrorAlert(error) {
            document.getElementById('errorAlert').textContent = error;
            document.getElementById('errorAlert').style.display = 'block';
            setTimeout(() => { document.getElementById('errorAlert').style.display = 'none'; }, 5000);
        }
    </script>
</body>
</html>
