update: add new field for subscription of user when purchased

This commit is contained in:
mahyargdz
2025-02-28 12:08:46 +03:30
parent 93c5ad49d3
commit 76feef7645
29 changed files with 220 additions and 302 deletions
@@ -1,10 +1,7 @@
import { BadRequestException, Injectable } from "@nestjs/common";
import { AnnouncementMessage, CommonMessage } from "../../../common/enums/message.enum";
import { DanakServicesService } from "../../danak-services/providers/danak-services.service";
import { UsersService } from "../../users/providers/users.service";
import { AnnouncementMessage } from "../../../common/enums/message.enum";
import { PaginationUtils } from "../../utils/providers/pagination.utils";
import { CreateAnnouncementDto } from "../DTO/create-announcement.dto";
import { SearchAnnouncementQueryDto } from "../DTO/search-announcement-query.dto";
import { AnnouncementRepository } from "../repositories/announcement.repository";
import { UserAnnouncementRepository } from "../repositories/user-announcement.repository";
@@ -14,39 +11,8 @@ export class AnnouncementService {
constructor(
private readonly announcementRepository: AnnouncementRepository,
private readonly userAnnouncementRepository: UserAnnouncementRepository,
private readonly danakServicesService: DanakServicesService,
private readonly usersService: UsersService,
) {}
/***************************************** */
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,
announcement,
};
}
/***************************************** */
async getAllAnnouncements(queryDto: SearchAnnouncementQueryDto, userId: string) {
@@ -81,58 +47,6 @@ export class AnnouncementService {
/***************************************** */
// async getAllAnnouncementsByUser(queryDto: SearchAnnouncementQueryDto, userId: 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"])
// .leftJoin("group.users", "groupUser")
// .leftJoinAndSelect("announcement.userAnnouncements", "userAnnouncements", "userAnnouncements.userId = :userId", { userId })
// .where("announcement.isPublic = :isPublic", { isPublic: true }) // Check if the announcement is public
// .orWhere("groupUser.id = :userId", { userId });
// 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 rawResults = await queryBuilder.getRawMany();
// const [, count] = await queryBuilder.skip(skip).take(limit).getManyAndCount();
// const announcements = rawResults.map((raw) => ({
// id: raw.announcement_id,
// createdAt: raw.announcement_createdAt,
// updatedAt: raw.announcement_updatedAt,
// title: raw.announcement_title,
// content: raw.announcement_content,
// publishAt: raw.announcement_publishAt,
// service: {
// id: raw.danak_service_id,
// name: raw.danak_service_name,
// },
// isImportant: raw.announcement_isImportant,
// targetGroups: raw.group_id ? [{ id: raw.group_id, name: raw.group_name }] : [],
// isPublic: raw.announcement_isPublic,
// isRead: raw.userAnnouncements_isRead ? true : false,
// }));
// return { announcements, count, paginate: true };
// }
/***************************************** */
async getAllAnnouncementsByUser(queryDto: SearchAnnouncementQueryDto, userId: string) {
const { limit, skip } = PaginationUtils(queryDto);