Updating wait list to expect dutch emails as well

This commit is contained in:
Collin Duncan 2023-09-20 09:26:41 +02:00
parent cc37cfd19f
commit dbca10c63e
No known key found for this signature in database
2 changed files with 21 additions and 3 deletions

View file

@ -123,4 +123,15 @@ export class NtfyProvider implements OnApplicationBootstrap {
}), }),
) )
} }
async sendWaitListEmailReceivedNotification(subject: string) {
await this.publishQueue.add(
...NtfyProvider.defaultJob({
title: 'Wait listed reservation available',
message: `${subject}`,
tags: [MessageTags.badminton, MessageTags.hourglass],
priority: MessagePriority.low,
}),
)
}
} }

View file

@ -1,6 +1,7 @@
import { InjectQueue, Process, Processor } from '@nestjs/bull' import { InjectQueue, Process, Processor } from '@nestjs/bull'
import { Inject } from '@nestjs/common' import { Inject } from '@nestjs/common'
import { Job, Queue } from 'bull' import { Job, Queue } from 'bull'
import { NtfyProvider } from 'src/ntfy/provider'
import dayjs from '../common/dayjs' import dayjs from '../common/dayjs'
import { EMAILS_QUEUE_NAME } from '../email/config' import { EMAILS_QUEUE_NAME } from '../email/config'
@ -12,7 +13,7 @@ import { ReservationsService } from '../reservations/service'
import { WaitingListDetails } from './types' import { WaitingListDetails } from './types'
const EMAIL_SUBJECT_REGEX = new RegExp( const EMAIL_SUBJECT_REGEX = new RegExp(
/^personal waitinglist reservation free at/i, /^(?:personal waitinglist reservation free at|persoonlijke wachtlijst reservering vrij om)/i,
) )
const EMAIL_ADDRESS = 'Squash City <no-reply@i-reservations.nl>' const EMAIL_ADDRESS = 'Squash City <no-reply@i-reservations.nl>'
const EMAIL_DATE_REGEX = new RegExp( const EMAIL_DATE_REGEX = new RegExp(
@ -35,6 +36,9 @@ export class WaitingListService {
@Inject(EmailProvider) @Inject(EmailProvider)
private readonly emailProvider: EmailProvider, private readonly emailProvider: EmailProvider,
@Inject(NtfyProvider)
private readonly ntfyProvider: NtfyProvider,
@Inject(LoggerService) @Inject(LoggerService)
private readonly loggerService: LoggerService, private readonly loggerService: LoggerService,
) {} ) {}
@ -50,8 +54,11 @@ export class WaitingListService {
if (!this.isRelevantEmail) return if (!this.isRelevantEmail) return
await this.emailProvider.readEmails([email]) await Promise.all([
await this.handleWaitingListEmail(email) this.ntfyProvider.sendWaitListEmailReceivedNotification(email.subject),
this.emailProvider.readEmails([email]),
this.handleWaitingListEmail(email),
])
} }
private async handleWaitingListEmail(email: Email) { private async handleWaitingListEmail(email: Email) {