44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
import { Injectable } from '@nestjs/common';
|
|
import { NotificationsRepository } from '@gitroom/nestjs-libraries/database/prisma/notifications/notifications.repository';
|
|
import { EmailService } from '@gitroom/nestjs-libraries/services/email.service';
|
|
import { OrganizationRepository } from '@gitroom/nestjs-libraries/database/prisma/organizations/organization.repository';
|
|
|
|
@Injectable()
|
|
export class NotificationService {
|
|
constructor(
|
|
private _notificationRepository: NotificationsRepository,
|
|
private _emailService: EmailService,
|
|
private _organizationRepository: OrganizationRepository
|
|
) {}
|
|
|
|
getMainPageCount(organizationId: string, userId: string) {
|
|
return this._notificationRepository.getMainPageCount(
|
|
organizationId,
|
|
userId
|
|
);
|
|
}
|
|
|
|
getNotifications(organizationId: string, userId: string) {
|
|
return this._notificationRepository.getNotifications(
|
|
organizationId,
|
|
userId
|
|
);
|
|
}
|
|
|
|
async inAppNotification(orgId: string, subject: string, message: string, sendEmail = false) {
|
|
await this._notificationRepository.createNotification(orgId, message);
|
|
if (!sendEmail) {
|
|
return;
|
|
}
|
|
|
|
const userOrg = await this._organizationRepository.getAllUsersOrgs(orgId);
|
|
for (const user of userOrg?.users || []) {
|
|
await this.sendEmail(user.user.email, subject, message);
|
|
}
|
|
}
|
|
|
|
async sendEmail(to: string, subject: string, html: string) {
|
|
await this._emailService.sendEmail(to, subject, html);
|
|
}
|
|
}
|