From 7b1cd9eb1f5409ac2da7c6bf7845e899db26a72f Mon Sep 17 00:00:00 2001 From: Emily Culp Date: Mon, 1 Dec 2025 05:57:47 -0500 Subject: [PATCH 1/3] New Participants added to Event Participant table --- src/store/store.js | 100 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 96 insertions(+), 4 deletions(-) diff --git a/src/store/store.js b/src/store/store.js index 58c8e35..ba8c00f 100755 --- a/src/store/store.js +++ b/src/store/store.js @@ -30,12 +30,21 @@ export default createStore({ }, }, actions: { - async registerUser({ commit }, formData) { + async registerUser({ commit, state, dispatch }, formData) { + const eventResult = await dispatch('getActiveEvent'); + + const eventId = eventResult.event?.id; + + if(!eventId){ + console.error("Critical: Could not determine active event ID for registration."); + return { success: false, message: 'Registration failed: No active event found.' }; + } try { - const response = await fetch('http://localhost:3000/user/register', { + const finalFormData = { ...formData, eventId: eventId }; + const response = await fetch(`${state.apiBaseUrl}/user/register`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify(formData) + body: JSON.stringify(finalFormData) }); const data = await response.json(); @@ -51,7 +60,21 @@ export default createStore({ return { success: false, message: 'An error occurred during registration. Please try again.' }; } }, - async loginUser({ commit }, { email, password }) { + async createParticipantEntry({ state }, { userId, eventId }) { + // This assumes you have a new backend endpoint: POST /participant/create + const response = await fetch(`${state.apiBaseUrl}/participant/create`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ userId, eventId }) + }); + + // Handle response and errors here (e.g., logging) + if (!response.ok) { + console.error("Failed to create EventParticipant entry."); + } + return response.ok; + }, + async loginUser({ commit, state, dispatch }, { email, password }) { try { const response = await axios.post('http://localhost:3000/user/login', { email, password }); const data = response.data; @@ -85,6 +108,75 @@ export default createStore({ } }, + async getAllActivities({ commit,state }, eventId) { + try{ + if (!eventId) return; + const response = await axios.get(`${state.apiBaseUrl}/event/activity/${eventId}`); + + // Convert dates from UTC to local time (i.e., EST) and to a user-friendly format + const activities = response.data.activities.map(activity => { + activity.activityDate = (new Date(activity.activityDate)).toLocaleString("en-US", { + year: "numeric", + month: "2-digit", + day: "2-digit", + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + hour12: true, + timeZone: "America/New_York" + }); + + return activity; + }); + + commit("setActivities", activities); + return { success: true, message: response.data.message }; + } catch (error) { + return { success: false, message: error.response?.data?.message || "Error fetching activity" }; + } + }, + + async getActiveEvent({ commit, state }) { + try { + const response = await axios.get(`http://localhost:3000/event/active`); + + // Convert dates from UTC to local time (i.e., EST) and to a user-friendly format + const event = response.data.event + event.startDate = new Date(formatDateToEST(event.startDate)); + event.endDate = new Date (formatDateToEST(event.endDate)); + + commit("setEvent", event); + return {success: true, message: response.data.message, event: event}; + } catch (error) { + return {success: false, message: error.response?.data?.message || "Error fetching active event"}; + } + }, + + async fetchUserTeamStatus({ commit, state, getters }){ + if(!getters.isLoggedIn || !getters.getUser){ + commit('setUserTeamId', null); + return; + } + + const userId = getters.getUser.id; + const eventId = 1; //getters.getEvent.id || + + try{ + const response = await axios.get(`http://localhost:3000/teams/${userId}/team`, { + params: { eventId } + }); + + const teamId = response.data.teamId || null; + + commit('setUserTeamId', teamId); + return { success: true } + }catch(err){ + console.error("Error fetching user team status: ", err); + commit('setUserTeamId', null) + return { success: false, message: "Failed to fetch team status" }; + } + }, + logout({ commit }) { commit("clearUser"); document.cookie = `token=; path=/;`; From da0217187cfb7a2137a11a4285492e82e62ea643 Mon Sep 17 00:00:00 2001 From: "Ren D." <116903434+onnaii@users.noreply.github.com> Date: Mon, 1 Dec 2025 23:42:10 -0500 Subject: [PATCH 2/3] made the event dynamic on the landing page --- src/store/store.js | 3 +- src/views/LandingPage.vue | 458 ++++++++++++++++++-------------------- 2 files changed, 218 insertions(+), 243 deletions(-) diff --git a/src/store/store.js b/src/store/store.js index 3d58c30..a349db2 100755 --- a/src/store/store.js +++ b/src/store/store.js @@ -149,8 +149,7 @@ export default createStore({ async getActiveEvent({ commit, state }) { try { - const response = await axios.get(`http://localhost:3000/event/active`); - + const response = await axios.get(`${state.apiBaseUrl}/event/active`); // Convert dates from UTC to local time (i.e., EST) and to a user-friendly format const event = response.data.event event.startDate = new Date(formatDateToEST(event.startDate)); diff --git a/src/views/LandingPage.vue b/src/views/LandingPage.vue index 71d3c00..4bf58b6 100644 --- a/src/views/LandingPage.vue +++ b/src/views/LandingPage.vue @@ -1,26 +1,24 @@