Integrated attendance system
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { Request, Response } from "express";
|
||||
import { getEventAttendance, getEventDetails, getShortEventsInRange } from "../services/calendarService";
|
||||
import { CalendarEvent } from "@app/shared/types/calendar";
|
||||
import { getEventAttendance, getEventDetails, getShortEventsInRange, setAttendanceStatus } from "../services/calendarService";
|
||||
import { CalendarAttendance, CalendarEvent } from "@app/shared/types/calendar";
|
||||
|
||||
const express = require('express');
|
||||
const r = express.Router();
|
||||
@@ -35,6 +35,18 @@ r.get('/upcoming', async (req, res) => {
|
||||
res.sendStatus(501);
|
||||
})
|
||||
|
||||
r.post('/:id/attendance', async (req: Request, res: Response) => {
|
||||
try {
|
||||
let member = req.user.id;
|
||||
let event = Number(req.params.id);
|
||||
let state = req.query.state as CalendarAttendance;
|
||||
setAttendanceStatus(member, event, state);
|
||||
res.sendStatus(200);
|
||||
} catch (error) {
|
||||
console.error('Failed to set attendance:', error);
|
||||
res.status(500).json(error);
|
||||
}
|
||||
})
|
||||
//get event details
|
||||
r.get('/:id', async (req: Request, res: Response) => {
|
||||
try {
|
||||
@@ -46,10 +58,11 @@ r.get('/:id', async (req: Request, res: Response) => {
|
||||
res.status(200).json(details);
|
||||
} catch (err) {
|
||||
console.error('Insert failed:', err);
|
||||
res.status(500).json(err);
|
||||
res.status(500).json(err);
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
//post a new calendar event
|
||||
r.post('/', async (req, res) => {
|
||||
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
import pool from '../db';
|
||||
import { CalendarEventShort, CalendarSignup, CalendarEvent } from "@app/shared/types/calendar"
|
||||
|
||||
export type Attendance = 'attending' | 'maybe' | 'not_attending';
|
||||
import { CalendarEventShort, CalendarSignup, CalendarEvent, CalendarAttendance } from "@app/shared/types/calendar"
|
||||
|
||||
export async function createEvent(eventObject: Omit<CalendarEvent, 'id' | 'created_at' | 'updated_at' | 'cancelled'>) {
|
||||
const sql = `
|
||||
@@ -113,7 +111,7 @@ export async function getUpcomingEvents(date: Date, limit: number) {
|
||||
}
|
||||
|
||||
|
||||
export async function setAttendanceStatus(memberID: number, eventID: number, status: Attendance) {
|
||||
export async function setAttendanceStatus(memberID: number, eventID: number, status: CalendarAttendance) {
|
||||
const sql = `
|
||||
INSERT INTO calendar_events_signups (member_id, event_id, status)
|
||||
VALUES (?, ?, ?)
|
||||
|
||||
Reference in New Issue
Block a user