chore: get announcements for customers

This commit is contained in:
Matin
2025-02-20 12:09:37 +03:30
parent 5b8f419d81
commit e0a267bf2b
6 changed files with 42 additions and 3 deletions
@@ -22,18 +22,24 @@ export class AnnouncementService {
async createAnnouncement(createAnnouncementDto: CreateAnnouncementDto) {
let service;
let groups;
let users;
if (createAnnouncementDto.serviceId) {
service = await this.danakServicesService.findServiceById(createAnnouncementDto.serviceId);
}
if (createAnnouncementDto.groupIds) {
groups = await this.usersService.getUserGroupsByIds(createAnnouncementDto.groupIds);
}
if (createAnnouncementDto.userIds) {
users = await this.usersService.getUsersByIds(createAnnouncementDto.userIds);
}
//TODO: Create Queue for publishAT
const announcement = this.announcementRepository.create({
...createAnnouncementDto,
service,
targetGroups: groups?.userGroups,
users,
});
await this.announcementRepository.save(announcement);
return {
message: CommonMessage.CREATED,
@@ -134,6 +140,7 @@ export class AnnouncementService {
.createQueryBuilder("announcement")
.leftJoin("announcement.service", "service")
.addSelect(["service.id", "service.name"])
.leftJoin("announcement.users", "announcementUser")
.leftJoin("announcement.targetGroups", "group")
.addSelect(["group.id", "group.name"])
.leftJoin("group.users", "groupUser")
@@ -147,7 +154,8 @@ export class AnnouncementService {
.leftJoinAndSelect("announcement.userAnnouncements", "userAnnouncements", "userAnnouncements.userId = :userId", { userId })
.where("announcement.isPublic = :isPublic", { isPublic: true })
.orWhere("groupUser.id = :userId", { userId })
.orWhere("userSubscription.userId = :userId", { userId });
.orWhere("userSubscription.userId = :userId", { userId })
.orWhere("announcementUser.id = :userId", { userId });
if (queryDto.since) {
queryBuilder.andWhere("announcement.createdAt >= :since", { since: queryDto.since });
@@ -164,7 +172,7 @@ export class AnnouncementService {
queryBuilder.orderBy("announcement.createdAt", "DESC");
const rawResults = await queryBuilder.getRawMany();
const [, count] = await queryBuilder.skip(skip).take(limit).getManyAndCount();
//TODO: fix later
const announcements = rawResults.map((raw) => ({
id: raw.announcement_id,
createdAt: raw.announcement_createdAt,