chore: get announcements by service

This commit is contained in:
Matin
2025-01-29 15:42:27 +03:30
parent b1d0c3c882
commit d42a7e4d52
2 changed files with 41 additions and 1 deletions
@@ -25,6 +25,7 @@ export class AnnouncementService {
if (createAnnouncementDto.groupIds) {
groups = await this.usersService.getUserGroupsByIds(createAnnouncementDto.groupIds);
}
//TODO: Create Queue for publishAT
const announcement = this.announcementRepository.create({
...createAnnouncementDto,
service,
@@ -70,4 +71,34 @@ export class AnnouncementService {
const announcements = await this.announcementRepository.find({ where: { isPublic: true }, relations: ["service", "targetGroups"] });
return { announcements };
}
async getAnnouncementByService(queryDto: SearchAnnouncementQueryDto, serviceId: string) {
const { limit, skip } = PaginationUtils(queryDto);
const queryBuilder = this.announcementRepository
.createQueryBuilder("announcement")
.leftJoin("announcement.service", "danak_service")
.addSelect(["danak_service.id", "danak_service.name"])
.leftJoin("announcement.targetGroups", "group")
.addSelect(["group.id", "group.name"])
.where("danak_service.id = :serviceId", { serviceId });
if (queryDto.since) {
queryBuilder.andWhere("announcement.createdAt >= :since", { since: queryDto.since });
}
if (queryDto.publishAt) {
queryBuilder.andWhere("announcement.publishAt >= :publishAt", { publishAt: queryDto.publishAt });
}
if (queryDto.q) {
queryBuilder.andWhere("announcement.title LIKE :q", { q: `%${queryDto.q}%` });
}
queryBuilder.orderBy("announcement.createdAt", "DESC");
const [announcements, count] = await queryBuilder.skip(skip).take(limit).getManyAndCount();
return { announcements, count, paginate: true };
}
}