diff --git a/src/modules/announcements/interfaces/ISendAnnouncement.ts b/src/modules/announcements/interfaces/ISendAnnouncement.ts index 1217c6c..23ec3c3 100755 --- a/src/modules/announcements/interfaces/ISendAnnouncement.ts +++ b/src/modules/announcements/interfaces/ISendAnnouncement.ts @@ -1,4 +1,5 @@ export interface ISendAnnouncement { announcementId: string; + businessId: string; isPublic: boolean; } diff --git a/src/modules/announcements/queue/announcment.processor.ts b/src/modules/announcements/queue/announcment.processor.ts index 566b4f6..c30f1b0 100755 --- a/src/modules/announcements/queue/announcment.processor.ts +++ b/src/modules/announcements/queue/announcment.processor.ts @@ -4,6 +4,7 @@ import { Logger } from "@nestjs/common"; import { Job } from "bullmq"; import { WorkerProcessor } from "../../../common/queues/worker.processor"; +import { Business } from "../../businesses/entities/business.entity"; import { IAnnouncementNotificationData } from "../../notifications/interfaces/ISendNotificationData"; import { NotificationQueue } from "../../notifications/queue/notification.queue"; import { User } from "../../users/entities/user.entity"; @@ -39,15 +40,23 @@ export class AnnouncementProcessor extends WorkerProcessor { private async sendAnnouncement(job: Job, token?: string) { this.logger.log(`Sending announcement: ${job.data.announcementId} to users. ${token}`); + const businessId = job.data.businessId; + const em = this.em.fork(); const data = job.data; try { await em.begin(); + const business = await em.findOne(Business, { id: businessId }); + if (!business) throw new Error("Business not found"); + // Create a query builder to fetch unique users const userQueryBuilder = em.createQueryBuilder(User, "u"); - userQueryBuilder.select("u.id").distinct(); + userQueryBuilder + .select("u.id") + .distinct() + .where({ business: { id: businessId } }); // Execute the query to get distinct user IDs const userResult = await userQueryBuilder.execute();