provide ics link

This commit is contained in:
Julian Krauser 2024-11-07 10:49:34 +01:00
parent 8c597fd68d
commit 91c3fde688
8 changed files with 155 additions and 4 deletions

View file

@ -3,6 +3,8 @@ import CalendarFactory from "../factory/admin/calendar";
import CalendarService from "../service/calendarService";
import CalendarTypeService from "../service/calendarTypeService";
import { calendar } from "../entity/calendar";
import { createEvents } from "ics";
import moment from "moment";
/**
* @description get all calendar items by types or nscdr
@ -21,5 +23,49 @@ export async function getCalendarItemsByTypes(req: Request, res: Response): Prom
items = await CalendarService.getByTypeNSCDR();
}
res.json(CalendarFactory.mapToBase(items));
moment()
.format("YYYY-M-D-H-m")
.split("-")
.map((a) => parseInt(a));
let events = createEvents(
items.map((i) => ({
calName: process.env.CLUB_NAME,
uid: i.id,
sequence: 1,
start: moment(i.starttime)
.format("YYYY-M-D-H-m")
.split("-")
.map((a) => parseInt(a)) as [number, number, number, number, number],
end: moment(i.endtime)
.format("YYYY-M-D-H-m")
.split("-")
.map((a) => parseInt(a)) as [number, number, number, number, number],
title: i.title,
description: i.content,
location: i.location,
categories: [i.type.type],
created: moment(i.createdAt)
.format("YYYY-M-D-H-m")
.split("-")
.map((a) => parseInt(a)) as [number, number, number, number, number],
lastModified: moment(i.updatedAt)
.format("YYYY-M-D-H-m")
.split("-")
.map((a) => parseInt(a)) as [number, number, number, number, number],
transp: "OPAQUE" as "OPAQUE",
url: "https://www.ff-merching.de",
alarms: [
{
action: "display",
description: "Erinnerung",
trigger: {
minutes: 30,
before: true,
},
},
],
}))
);
res.type("ics").send(events.value);
}