From 32ae6481e6c3f724a17502d1a8e3747fd81d709a Mon Sep 17 00:00:00 2001 From: Firman Ramdhani <33869609+firmanramdhani@users.noreply.github.com> Date: Mon, 8 Jul 2024 16:22:55 +0700 Subject: [PATCH] feat: get current applied bookmark --- .../report-bookmark.controller.ts | 13 ++++++--- .../report-bookmark.service.ts | 29 +++++++++++++++++++ 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/modules/reports/report-bookmark/report-bookmark.controller.ts b/src/modules/reports/report-bookmark/report-bookmark.controller.ts index dfb067b..48a2acd 100644 --- a/src/modules/reports/report-bookmark/report-bookmark.controller.ts +++ b/src/modules/reports/report-bookmark/report-bookmark.controller.ts @@ -35,16 +35,21 @@ export class ReportBookmarkController { return await this.service.getAll(query); } - @Get('id') - async get(@Param('id') id: string) { - return await this.service.getOne(id); - } + // @Get(':id') + // async get(@Param('id') id: string) { + // return await this.service.getOne(id); + // } @Get('label-history') async getAllLabelHistory(@Query() query: GetLabelReportBookmarkDto) { return await this.service.getAllLabelHistory(query); } + @Get('applied') + async currentApplied(@Query() query: GetLabelReportBookmarkDto) { + return await this.service.getCurrentAppliedBookmark(query); + } + @Put('applied/:id') async applied(@Param('id') id: string) { return await this.service.applied(id); diff --git a/src/modules/reports/report-bookmark/report-bookmark.service.ts b/src/modules/reports/report-bookmark/report-bookmark.service.ts index 5043619..7bd7823 100644 --- a/src/modules/reports/report-bookmark/report-bookmark.service.ts +++ b/src/modules/reports/report-bookmark/report-bookmark.service.ts @@ -96,6 +96,35 @@ export class ReportBookmarkService extends BaseReportService { return newData.map((el) => el.ReportBookmarkModel_label); } + async getCurrentAppliedBookmark(query: GetLabelReportBookmarkDto) { + const modelName = ReportBookmarkModel.name; + + const creator_id = this.getUser().id; + const unique_names = query.unique_names; + const group_names = query.group_names; + const types = query.types; + const qb = this.repo + .createQueryBuilder(modelName) + .where((query) => { + if (unique_names) { + query.andWhere(`unique_name IN (:...unique_names)`, { unique_names }); + } + if (group_names) { + query.andWhere(`group_name IN (:...group_names)`, { group_names }); + } + + if (types) { + query.andWhere(`type IN (:...types)`, { types }); + } + + query.andWhere(`creator_id = :creator_id`, { creator_id }); + query.andWhere(`applied = :applied`, { applied: true }); + }) + .orderBy(`${modelName}.created_at`, 'DESC'); + + return await qb.getMany(); + } + async applied(id: string) { await this.repo .createQueryBuilder()