Files
hermes/WebApp/ts/eventModify.ts

102 lines
3.4 KiB
TypeScript

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>`;
}
}
});