pnp-scheduler/source/Events/DefaultEvents.ts

40 lines
No EOL
1.5 KiB
TypeScript

import {EventHandler, } from "./EventHandler";
import {Container} from "../Container/Container";
import {ReminderEvent} from "./Handlers/ReminderEvent";
import {ElementCreatedEvent} from "./EventClasses/ElementCreatedEvent";
import {sendCreatedNotificationEventHandler} from "./Handlers/SendCreatedNotification";
import {PlaydateModel} from "../Database/Models/PlaydateModel";
import {TimedEvent} from "./EventHandler.types";
import {CleanupEvent} from "./Handlers/CleanupEvent";
import {Logger} from "log4js";
import {ElementChangedEvent} from "./EventClasses/ElementChangedEvent";
import {GroupModel} from "../Database/Models/GroupModel";
import {sendLeaderChangeNotificationEventHandler} from "./Handlers/LeaderChanged";
export class DefaultEvents {
public static setupTimed() {
const eventHandler = Container.get<EventHandler>(EventHandler.name);
const events: TimedEvent[] = [
new ReminderEvent(),
new CleanupEvent(eventHandler, Container.get<Logger>("logger"))
]
events.forEach((event) => {
eventHandler.addTimed(event);
})
}
public static setupHandlers() {
const eventHandler = Container.get<EventHandler>(EventHandler.name);
eventHandler.addHandler<ElementCreatedEvent<PlaydateModel>>(ElementCreatedEvent.name, {
method: sendCreatedNotificationEventHandler,
persistent: true
});
eventHandler.addHandler<ElementChangedEvent<GroupModel>>(ElementChangedEvent.name, {
method: sendLeaderChangeNotificationEventHandler,
persistent: true
})
}
}