import { getEvent, getMyAccount, unhideElementById } from './generalUseHelpers.js';

const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const eventId = urlParams.get('event');

async function modifyEvent()
{
    // Pobieranie danych z formularza
    const title = (document.getElementById('title') as HTMLInputElement).value;
    const location = (document.getElementById('location') as HTMLInputElement).value;
    const description = (document.getElementById('description') as HTMLTextAreaElement).value;
    const eventDateRaw = (document.getElementById('eventDate') as HTMLInputElement).value;

    // Walidacja prostych pól
    if (!title || !location || !eventDateRaw)
    {
        alert("Please fill out all of the required fields!");
        return;
    }

    const eventDate = new Date(eventDateRaw).toISOString();

    const payload = {
        title,
        location,
        description,
        eventDate,
    };

    try
    {
        const response = await fetch('/api/events/' + eventId, {
        method: 'PUT',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify(payload)
        });

        if (!response.ok)
        {
            const errorText = await response.text();
            throw new Error(errorText);
        }

        alert("Wydarzenie zmodyfikowane!");
        window.location.href = "/"; // Przekierowanie do strony głównej
    } catch (error) {
       console.error("Błąd podczas modyfikowania:", error);
       alert("Nie udało się zmodyfikować wydarzenia: " + error);
    }
}

document.addEventListener("DOMContentLoaded", async () => {
    var container = document.getElementById("mainContainer");
    const saveBtn = document.getElementById("saveBtn");

    try {
        var user = await getMyAccount();
        if (user) {
            if (user.isOrganisation) {
                unhideElementById(document, "mainContainer");
            }
            unhideElementById(document, "logout-btn");
        }
    } catch {
        unhideElementById(document, "joinnow-btn");
        unhideElementById(document, "signin-btn");
    }

    if (saveBtn)
    {
        saveBtn.addEventListener("click", (e) => {
            e.preventDefault();
            modifyEvent();
        });
    }
    if (eventId !== null && container !== null) {

        try {
            const titleInput       = document.getElementById(      'title') as HTMLInputElement;
            const locationInput    = document.getElementById(   'location') as HTMLInputElement;
            const descriptionInput = document.getElementById('description') as HTMLInputElement;
            const dateInput        = document.getElementById(  'eventDate') as HTMLInputElement;
            var ev = await getEvent(eventId);

            if (ev === null) {
                container.innerHTML = "<p class='text-muted'>Brak wydarzeń do wyświetlenia.</p>";
                return;
            } else {
                      titleInput.value = ev.title                  || '';
                   locationInput.value = ev.location               || '';
                descriptionInput.value = ev.description            || '';
                       dateInput.value = ev.eventDate.slice(0, 16) || '';
            }

        } catch (err) {
            console.log(err);
            container.innerHTML = `<p class="text-danger">` + err + `</p>`;
        }
        
    }
});