From 5d362e2a39f33ed4a8638d03d5968a1a33032495 Mon Sep 17 00:00:00 2001 From: AleksDw Date: Sun, 1 Jun 2025 15:06:13 +0200 Subject: [PATCH] Apply to Event --- WebApp/ts/applyToEvent.ts | 44 ++++++++++++++++++++++++++++ WebApp/wwwroot/js/applyToEvent.js | 48 +++++++++++++++++++++++++++++++ WebApp/wwwroot/view.html | 1 + 3 files changed, 93 insertions(+) create mode 100644 WebApp/ts/applyToEvent.ts create mode 100644 WebApp/wwwroot/js/applyToEvent.js diff --git a/WebApp/ts/applyToEvent.ts b/WebApp/ts/applyToEvent.ts new file mode 100644 index 0000000..59310f8 --- /dev/null +++ b/WebApp/ts/applyToEvent.ts @@ -0,0 +1,44 @@ +document.addEventListener("DOMContentLoaded", () => { + const applyBtn = document.getElementById("applyBtn") as HTMLButtonElement | null; + + if (!applyBtn) return; + + const eventId = getEventIdFromURL(); + + if (!eventId) { + console.error("Event ID not found."); + return; + } + + applyBtn.addEventListener("click", async () => { + try { + const response = await fetch(`/api/events/join/${eventId}`, { + method: "POST", + headers: { + "Content-Type": "application/json" + }, + }); + + const result: { + success: boolean; + error_msg?: string; + } = await response.json(); + + if (result.success) { + applyBtn.disabled = true; + applyBtn.textContent = "Applied Succesfully"; + } else { + alert(`Error: ${result.error_msg ?? "Unknown error occurred."}`); + } + } catch (error) { + console.error("Failed to apply:", error); + alert("Failed to apply due to a network or server error."); + } + }); + + function getEventIdFromURL(): number | null { + const params = new URLSearchParams(window.location.search); + const idParam = params.get("event"); + return idParam ? parseInt(idParam, 10) : null; + } +}); diff --git a/WebApp/wwwroot/js/applyToEvent.js b/WebApp/wwwroot/js/applyToEvent.js new file mode 100644 index 0000000..2b160c3 --- /dev/null +++ b/WebApp/wwwroot/js/applyToEvent.js @@ -0,0 +1,48 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +document.addEventListener("DOMContentLoaded", () => { + const applyBtn = document.getElementById("applyBtn"); + if (!applyBtn) + return; + const eventId = getEventIdFromURL(); + if (!eventId) { + console.error("Event ID not found."); + return; + } + applyBtn.addEventListener("click", () => __awaiter(void 0, void 0, void 0, function* () { + var _a; + try { + const response = yield fetch(`/api/events/join/${eventId}`, { + method: "POST", + headers: { + "Content-Type": "application/json" + }, + }); + const result = yield response.json(); + if (result.success) { + applyBtn.disabled = true; + applyBtn.textContent = "Applied Succesfully"; + } + else { + alert(`Error: ${(_a = result.error_msg) !== null && _a !== void 0 ? _a : "Unknown error occurred."}`); + } + } + catch (error) { + console.error("Failed to apply:", error); + alert("Failed to apply due to a network or server error."); + } + })); + function getEventIdFromURL() { + const params = new URLSearchParams(window.location.search); + const idParam = params.get("event"); + return idParam ? parseInt(idParam, 10) : null; + } +}); diff --git a/WebApp/wwwroot/view.html b/WebApp/wwwroot/view.html index 9fb655e..4c1ede3 100644 --- a/WebApp/wwwroot/view.html +++ b/WebApp/wwwroot/view.html @@ -72,6 +72,7 @@ +