mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-03-21 18:04:39 -05:00
46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import { notify } from "../features/notifications/core/notify.server";
|
|
import * as TournamentRepository from "../features/tournament/TournamentRepository.server";
|
|
import { tournamentDataCached } from "../features/tournament-bracket/core/Tournament.server";
|
|
import { logger } from "../utils/logger";
|
|
import { Routine } from "./routine.server";
|
|
|
|
export const NotifyCheckInStartRoutine = new Routine({
|
|
name: "NotifyCheckInStart",
|
|
func: async () => {
|
|
const now = new Date();
|
|
const oneHourFromNow = new Date(now.getTime() + 60 * 60 * 1000);
|
|
const tournaments = await TournamentRepository.findAllBetweenTwoTimestamps({
|
|
startTime: now,
|
|
endTime: oneHourFromNow,
|
|
});
|
|
|
|
for (const { tournamentId } of tournaments) {
|
|
const tournament = await tournamentDataCached({
|
|
tournamentId: tournamentId!,
|
|
user: undefined,
|
|
});
|
|
|
|
if (tournament.ctx.settings.isTest) {
|
|
continue;
|
|
}
|
|
|
|
logger.info(
|
|
`Notifying check-in start for tournament ${tournament.ctx.id}`,
|
|
);
|
|
await notify({
|
|
notification: {
|
|
type: "TO_CHECK_IN_OPENED",
|
|
meta: {
|
|
tournamentId: tournament.ctx.id,
|
|
tournamentName: tournament.ctx.name,
|
|
},
|
|
pictureUrl: tournament.ctx.logoUrl,
|
|
},
|
|
userIds: tournament.ctx.teams
|
|
.flatMap((team) => team.members.map((member) => member.userId))
|
|
.concat(tournament.ctx.staff.map((staff) => staff.id)),
|
|
});
|
|
}
|
|
},
|
|
});
|