From 0b1cdabea48db02ed645fa585c4ea7da5061c7fa Mon Sep 17 00:00:00 2001 From: Aswin Ashar Abdullah <98192542+Asharaswin@users.noreply.github.com> Date: Mon, 1 Jul 2024 01:13:26 +0700 Subject: [PATCH] format(code) formatting code --- .../helpers/query/default-filter.helper.ts | 17 +- .../validation/validate-relation.helper.ts | 46 +++--- .../modules/data/service/base-data.service.ts | 9 +- .../modules/domain/usecase/base.manager.ts | 7 +- .../managers/base-batch-delete.manager.ts | 4 +- .../base-batch-update-status.manager.ts | 7 +- .../usecase/managers/base-delete.manager.ts | 4 +- .../managers/base-update-status.manager.ts | 11 +- .../usecase/managers/base-update.manager.ts | 9 +- .../response/domain/response.interceptor.ts | 2 +- ...54657-add-column-priority-season-period.ts | 25 +-- .../configuration/couch/couch.module.ts | 22 ++- .../couch/data/services/couch.service.ts | 12 +- .../couch/domain/managers/item.handler.ts | 140 ++++++++--------- .../domain/managers/payment-method.handler.ts | 110 ++++++------- .../domain/managers/season-period.handler.ts | 110 ++++++------- .../couch/domain/managers/user.handler.ts | 148 +++++++++--------- .../domain/managers/vip-category.handler.ts | 110 ++++++------- .../entities/filter-google-calendar.entity.ts | 6 +- .../usecases/google-calendar.orchestrator.ts | 2 +- .../index-holiday-google-calendar.manager.ts | 8 +- .../dto/filter-google-calendar.dto.ts | 30 ++-- .../entities/filter-item-rate.entity.ts | 8 +- .../usecases/item-rate-read.orchestrator.ts | 2 +- .../managers/index-item-rate.manager.ts | 42 ++--- .../dto/filter-item-rate.dto.ts | 9 +- .../dto/update-item-rate.dto.ts | 18 +-- .../item-rate/item-rate.module.ts | 7 +- .../usecases/managers/active-item.manager.ts | 20 ++- .../managers/batch-active-item.manager.ts | 18 ++- .../managers/batch-confirm-item.manager.ts | 12 +- .../usecases/managers/confirm-item.manager.ts | 14 +- .../usecases/managers/detail-item.manager.ts | 34 ++-- .../managers/index-item-rates.manager.ts | 125 ++++++++------- .../usecases/managers/index-item.manager.ts | 36 ++--- src/modules/item-related/item/item.module.ts | 7 +- .../data/models/season-period.model.ts | 3 +- .../season-period-price-updated.event.ts | 2 +- .../handlers/season-period-created.handler.ts | 2 +- .../season-period-price-updated.handler.ts | 102 ++++++------ .../managers/active-season-period.manager.ts | 6 +- .../batch-active-season-period.manager.ts | 4 +- .../batch-confirm-season-period.manager.ts | 4 +- .../batch-inactive-season-period.manager.ts | 4 +- .../managers/confirm-season-period.manager.ts | 6 +- .../managers/create-season-period.manager.ts | 15 +- .../managers/helpers/validate.helper.ts | 70 +++++---- .../inactive-season-period.manager.ts | 6 +- .../index-season-period-item.manager.ts | 142 ++++++++--------- .../update-season-period-price.manager.ts | 108 ++++++------- .../managers/update-season-period.manager.ts | 13 +- .../season-period-data.orchestrator.ts | 5 +- .../season-period-read.orchestrator.ts | 5 +- .../dto/update-season-period.dto.ts | 3 +- .../dto/update-season-price.dto.ts | 56 +++---- .../season-period/season-period.module.ts | 7 +- .../managers/active-payment-method.manager.ts | 2 +- .../confirm-payment-method.manager.ts | 2 +- .../inactive-payment-method.manager.ts | 2 +- .../managers/batch-delete-tax.manager.ts | 5 +- .../managers/batch-inactive-tax.manager.ts | 6 +- .../usecases/managers/delete-tax.manager.ts | 5 +- .../managers/helpers/validation.helper.ts | 26 +-- .../usecases/managers/inactive-tax.manager.ts | 7 +- .../domain/usecases/tax-data.orchestrator.ts | 24 ++- src/modules/transaction/tax/tax.module.ts | 7 +- .../managers/active-vip-category.manager.ts | 2 +- .../managers/confirm-vip-category.manager.ts | 2 +- .../managers/inactive-vip-category.manager.ts | 2 +- .../managers/batch-delete-tenant.manager.ts | 16 +- .../managers/batch-inactive-tenant.manager.ts | 16 +- .../managers/delete-tenant.manager.ts | 16 +- .../managers/inactive-tenant.manager.ts | 18 ++- .../usecases/managers/active-user.manager.ts | 2 +- .../usecases/managers/confirm-user.manager.ts | 2 +- .../usecases/managers/create-user.manager.ts | 2 +- .../managers/inactive-user.manager.ts | 2 +- 77 files changed, 1016 insertions(+), 904 deletions(-) diff --git a/src/core/helpers/query/default-filter.helper.ts b/src/core/helpers/query/default-filter.helper.ts index 017793f..9189025 100644 --- a/src/core/helpers/query/default-filter.helper.ts +++ b/src/core/helpers/query/default-filter.helper.ts @@ -23,12 +23,12 @@ export function setQueryFilterDefault( // jika searching status terdapat dalam enum, maka dia mencari specific data // ? karena jika tidak, ketika dia search "active" maka "inactive" juga ikut if (STATUS[statusData.toUpperCase()]) - qb.orWhere(`${ tableName }.status = :statusData`, { + qb.orWhere(`${tableName}.status = :statusData`, { statusData: statusData, }); else qb['orWhere']( - `${ tableName }.status::text ILIKE '%${ [statusData] }%'`, + `${tableName}.status::text ILIKE '%${[statusData]}%'`, ); }); }), @@ -85,17 +85,20 @@ export function getOrderBy( queryBuilder: SelectQueryBuilder, tableName: TABLE_NAME, ) { - let orderBys: string[] = [`${ tableName }.created_at`]; + let orderBys: string[] = [`${tableName}.created_at`]; const orderType = baseFilter.order_type ?? ORDER_TYPE.DESC; if (!!baseFilter.order_by) { orderBys = baseFilter.order_by.split('.').length > 1 - ? [`${ baseFilter.order_by }`] - : [`${ tableName }.${ baseFilter.order_by }`]; + ? [`${baseFilter.order_by}`] + : [`${tableName}.${baseFilter.order_by}`]; - if (baseFilter.order_by.split('.').length == 1 && baseFilter.order_by.split('.').pop() != 'id') { - orderBys.push(`${ tableName }.created_at`) + if ( + baseFilter.order_by.split('.').length == 1 && + baseFilter.order_by.split('.').pop() != 'id' + ) { + orderBys.push(`${tableName}.created_at`); } } diff --git a/src/core/helpers/validation/validate-relation.helper.ts b/src/core/helpers/validation/validate-relation.helper.ts index d39f2ca..6370cf7 100644 --- a/src/core/helpers/validation/validate-relation.helper.ts +++ b/src/core/helpers/validation/validate-relation.helper.ts @@ -9,7 +9,7 @@ export class ValidateRelationHelper { private dataService: BaseDataService, private relations: validateRelations[], private tableName: string, - ) { } + ) {} async execute() { const repository = this.dataService.getRepository(); @@ -19,30 +19,28 @@ export class ValidateRelationHelper { for (const relation of this.relations) { if (relation.singleQuery) { queryBuilder.leftJoinAndMapOne( - `${ this.tableName }.${ relation.relation }`, - `${ this.tableName }.${ relation.relation }`, + `${this.tableName}.${relation.relation}`, + `${this.tableName}.${relation.relation}`, relation.relation, - ) - } - else if (relation.query) { + ); + } else if (relation.query) { queryBuilder.loadRelationCountAndMap( - `${ this.tableName }.total_${ relation.relation }`, - `${ this.tableName }.${ relation.relation }`, - `total_${ relation.relation }`, + `${this.tableName}.total_${relation.relation}`, + `${this.tableName}.${relation.relation}`, + `total_${relation.relation}`, relation.query, ); - } - else { + } else { queryBuilder.loadRelationCountAndMap( - `${ this.tableName }.total_${ relation.relation }`, - `${ this.tableName }.${ relation.relation }`, - `total_${ relation.relation }`, + `${this.tableName}.total_${relation.relation}`, + `${this.tableName}.${relation.relation}`, + `total_${relation.relation}`, ); } } // filtering data only with specific data - queryBuilder.where(`${ this.tableName }.id in ('${ this.dataId }')`); + queryBuilder.where(`${this.tableName}.id in ('${this.dataId}')`); // get data const data = await queryBuilder.getOne(); @@ -51,13 +49,21 @@ export class ValidateRelationHelper { for (const relation of this.relations) { const message = relation.message ?? - `Failed! this data already connected to ${ relation.relation }`; + `Failed! this data already connected to ${relation.relation}`; if (relation.singleQuery) { - const relationColumn = data[relation.relation]?.[`${ relation.singleQuery[0] }`] - if (!!relationColumn && this.mappingValidator(relationColumn, relation.singleQuery[1], relation.singleQuery[2])) + const relationColumn = + data[relation.relation]?.[`${relation.singleQuery[0]}`]; + if ( + !!relationColumn && + this.mappingValidator( + relationColumn, + relation.singleQuery[1], + relation.singleQuery[2], + ) + ) throw new UnprocessableEntityException(message); - } else if (data[`total_${ relation.relation } `]) + } else if (data[`total_${relation.relation} `]) throw new UnprocessableEntityException(message); } } @@ -74,4 +80,4 @@ export class ValidateRelationHelper { return column == value; } } -} \ No newline at end of file +} diff --git a/src/core/modules/data/service/base-data.service.ts b/src/core/modules/data/service/base-data.service.ts index 33b2b55..f32e272 100644 --- a/src/core/modules/data/service/base-data.service.ts +++ b/src/core/modules/data/service/base-data.service.ts @@ -6,7 +6,7 @@ import { } from 'typeorm'; export abstract class BaseDataService { - constructor(private repository: Repository) { } + constructor(private repository: Repository) {} getRepository(): Repository { return this.repository; @@ -58,8 +58,11 @@ export abstract class BaseDataService { entityTarget: EntityTarget, findManyOptions: FindManyOptions, ): Promise { - const datas = await queryRunner.manager.find(entityTarget, findManyOptions) - await queryRunner.manager.delete(entityTarget, datas?.map(item => item['id'])); + const datas = await queryRunner.manager.find(entityTarget, findManyOptions); + await queryRunner.manager.delete( + entityTarget, + datas?.map((item) => item['id']), + ); } async getOneByOptions(findOneOptions): Promise { diff --git a/src/core/modules/domain/usecase/base.manager.ts b/src/core/modules/domain/usecase/base.manager.ts index 28f16d3..73b77a0 100644 --- a/src/core/modules/domain/usecase/base.manager.ts +++ b/src/core/modules/domain/usecase/base.manager.ts @@ -38,7 +38,12 @@ export abstract class BaseManager { } } - setService(dataService, tableName, dataServiceOpt = null, dataServiceSecondOpt = null) { + setService( + dataService, + tableName, + dataServiceOpt = null, + dataServiceSecondOpt = null, + ) { this.dataService = dataService; this.tableName = tableName; this.queryRunner = this.dataService diff --git a/src/core/modules/domain/usecase/managers/base-batch-delete.manager.ts b/src/core/modules/domain/usecase/managers/base-batch-delete.manager.ts index 19e6c3e..374adcb 100644 --- a/src/core/modules/domain/usecase/managers/base-batch-delete.manager.ts +++ b/src/core/modules/domain/usecase/managers/base-batch-delete.manager.ts @@ -38,7 +38,7 @@ export abstract class BaseBatchDeleteManager extends BaseManager { if (!entity) { throw new NotFoundException({ statusCode: HttpStatus.NOT_FOUND, - message: `Failed! Entity with id ${ id } not found`, + message: `Failed! Entity with id ${id} not found`, error: 'Entity Not Found', }); } @@ -83,7 +83,7 @@ export abstract class BaseBatchDeleteManager extends BaseManager { old: dataOld, data: dataNew, user: this.user, - description: `${ this.user.name } delete batch data ${ this.tableName }`, + description: `${this.user.name} delete batch data ${this.tableName}`, module: this.tableName, op: OPERATION.DELETE, }), diff --git a/src/core/modules/domain/usecase/managers/base-batch-update-status.manager.ts b/src/core/modules/domain/usecase/managers/base-batch-update-status.manager.ts index dc91982..bb3ee2b 100644 --- a/src/core/modules/domain/usecase/managers/base-batch-update-status.manager.ts +++ b/src/core/modules/domain/usecase/managers/base-batch-update-status.manager.ts @@ -40,7 +40,7 @@ export abstract class BaseBatchUpdateStatusManager extends BaseManager { if (!entity) { throw new NotFoundException({ statusCode: HttpStatus.NOT_FOUND, - message: `Failed! Entity with id ${ id } not found`, + message: `Failed! Entity with id ${id} not found`, error: 'Entity Not Found', }); } @@ -92,7 +92,7 @@ export abstract class BaseBatchUpdateStatusManager extends BaseManager { old: dataOld, data: dataNew, user: this.user, - description: `${ this.user.name } update batch data ${ this.tableName }`, + description: `${this.user.name} update batch data ${this.tableName}`, module: this.tableName, op: OPERATION.UPDATE, }), @@ -100,7 +100,6 @@ export abstract class BaseBatchUpdateStatusManager extends BaseManager { if (!this.eventTopics.length) return; for (const topic of this.eventTopics) { - let data; if (!topic.relations) { data = await this.dataService.getOneByOptions({ @@ -108,7 +107,7 @@ export abstract class BaseBatchUpdateStatusManager extends BaseManager { id: dataNew.id, }, relations: topic.relations, - }) + }); } this.eventBus.publishAll([ diff --git a/src/core/modules/domain/usecase/managers/base-delete.manager.ts b/src/core/modules/domain/usecase/managers/base-delete.manager.ts index fe5f78e..4d0692b 100644 --- a/src/core/modules/domain/usecase/managers/base-delete.manager.ts +++ b/src/core/modules/domain/usecase/managers/base-delete.manager.ts @@ -23,7 +23,7 @@ export abstract class BaseDeleteManager extends BaseManager { if (!this.data) throw new UnprocessableEntityException({ statusCode: HttpStatus.UNPROCESSABLE_ENTITY, - message: `Data with id ${ this.dataId } not found`, + message: `Data with id ${this.dataId} not found`, error: 'Unprocessable Entity', }); @@ -56,7 +56,7 @@ export abstract class BaseDeleteManager extends BaseManager { old: null, data: this.data, user: this.user, - description: `${ this.user.name } delete data ${ this.tableName }`, + description: `${this.user.name} delete data ${this.tableName}`, module: this.tableName, op: OPERATION.CREATE, }), diff --git a/src/core/modules/domain/usecase/managers/base-update-status.manager.ts b/src/core/modules/domain/usecase/managers/base-update-status.manager.ts index 9323663..f3aa9a2 100644 --- a/src/core/modules/domain/usecase/managers/base-update-status.manager.ts +++ b/src/core/modules/domain/usecase/managers/base-update-status.manager.ts @@ -21,8 +21,8 @@ export abstract class BaseUpdateStatusManager extends BaseManager { this.data = await this.dataService.getOneByOptions({ where: { id: this.dataId, - } - }) + }, + }); this.oldData = _.cloneDeep(this.data); Object.assign(this.data, { @@ -60,7 +60,7 @@ export abstract class BaseUpdateStatusManager extends BaseManager { old: this.oldData, data: this.result, user: this.user, - description: `${ this.user.name } update status data ${ this.tableName } to ${ this.dataStatus }`, + description: `${this.user.name} update status data ${this.tableName} to ${this.dataStatus}`, module: this.tableName, op: OPERATION.UPDATE, }), @@ -68,15 +68,14 @@ export abstract class BaseUpdateStatusManager extends BaseManager { if (!this.eventTopics.length) return; for (const topic of this.eventTopics) { - let data; if (!topic.data) { data = await this.dataService.getOneByOptions({ where: { - id: this.dataId + id: this.dataId, }, relations: topic.relations, - }) + }); } this.eventBus.publishAll([ diff --git a/src/core/modules/domain/usecase/managers/base-update.manager.ts b/src/core/modules/domain/usecase/managers/base-update.manager.ts index d892e29..77efaa1 100644 --- a/src/core/modules/domain/usecase/managers/base-update.manager.ts +++ b/src/core/modules/domain/usecase/managers/base-update.manager.ts @@ -45,7 +45,7 @@ export abstract class BaseUpdateManager extends BaseManager { if (!this.oldData) { throw new NotFoundException({ statusCode: HttpStatus.NOT_FOUND, - message: `Failed! Entity with id ${ this.dataId } not found`, + message: `Failed! Entity with id ${this.dataId} not found`, error: 'Entity Not Found', }); } @@ -82,7 +82,7 @@ export abstract class BaseUpdateManager extends BaseManager { old: this.oldData, data: this.result, user: this.user, - description: `${ this.user.name } update data ${ this.tableName }`, + description: `${this.user.name} update data ${this.tableName}`, module: this.tableName, op: OPERATION.UPDATE, }), @@ -90,15 +90,14 @@ export abstract class BaseUpdateManager extends BaseManager { if (!this.eventTopics.length) return; for (const topic of this.eventTopics) { - let data; if (!topic.data) { data = await this.dataService.getOneByOptions({ where: { - id: this.dataId + id: this.dataId, }, relations: topic.relations, - }) + }); } this.eventBus.publishAll([ diff --git a/src/core/response/domain/response.interceptor.ts b/src/core/response/domain/response.interceptor.ts index 7cd5ed2..f9893d4 100644 --- a/src/core/response/domain/response.interceptor.ts +++ b/src/core/response/domain/response.interceptor.ts @@ -13,7 +13,7 @@ import { createPaginationResponse } from './utils/pagination-meta.helper'; @Injectable() export class TransformInterceptor implements NestInterceptor { - constructor(protected readonly reflector: Reflector) { } + constructor(protected readonly reflector: Reflector) {} intercept(context: ExecutionContext, next: CallHandler): Observable { const isPagination = this.reflector.getAllAndOverride( PAGINATION_RESPONSE, diff --git a/src/database/migrations/1719227554657-add-column-priority-season-period.ts b/src/database/migrations/1719227554657-add-column-priority-season-period.ts index 711e155..f80b55a 100644 --- a/src/database/migrations/1719227554657-add-column-priority-season-period.ts +++ b/src/database/migrations/1719227554657-add-column-priority-season-period.ts @@ -1,14 +1,19 @@ -import { MigrationInterface, QueryRunner } from "typeorm"; +import { MigrationInterface, QueryRunner } from 'typeorm'; -export class AddColumnPrioritySeasonPeriod1719227554657 implements MigrationInterface { - name = 'AddColumnPrioritySeasonPeriod1719227554657' +export class AddColumnPrioritySeasonPeriod1719227554657 + implements MigrationInterface +{ + name = 'AddColumnPrioritySeasonPeriod1719227554657'; - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "season_periods" ADD "priority" integer NOT NULL DEFAULT '3'`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "season_periods" DROP COLUMN "priority"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "season_periods" ADD "priority" integer NOT NULL DEFAULT '3'`, + ); + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "season_periods" DROP COLUMN "priority"`, + ); + } } diff --git a/src/modules/configuration/couch/couch.module.ts b/src/modules/configuration/couch/couch.module.ts index 3ee9d54..aa75b30 100644 --- a/src/modules/configuration/couch/couch.module.ts +++ b/src/modules/configuration/couch/couch.module.ts @@ -3,15 +3,21 @@ import { CouchDataController } from './infrastructure/couch.controller'; import { Module } from '@nestjs/common'; import { CouchService } from './data/services/couch.service'; import { CqrsModule } from '@nestjs/cqrs'; -import { PaymentMethodUpdatedHandler, PaymentMethodDeletedHandler } from './domain/managers/payment-method.handler'; -import { VipCategoryDeletedHandler, VipCategoryUpdatedHandler } from './domain/managers/vip-category.handler'; -import { SeasonPeriodDeletedHandler, SeasonPeriodUpdatedHandler } from './domain/managers/season-period.handler'; +import { + PaymentMethodUpdatedHandler, + PaymentMethodDeletedHandler, +} from './domain/managers/payment-method.handler'; +import { + VipCategoryDeletedHandler, + VipCategoryUpdatedHandler, +} from './domain/managers/vip-category.handler'; +import { + SeasonPeriodDeletedHandler, + SeasonPeriodUpdatedHandler, +} from './domain/managers/season-period.handler'; @Module({ - imports: [ - ConfigModule.forRoot(), - CqrsModule, - ], + imports: [ConfigModule.forRoot(), CqrsModule], controllers: [CouchDataController], providers: [ PaymentMethodDeletedHandler, @@ -24,4 +30,4 @@ import { SeasonPeriodDeletedHandler, SeasonPeriodUpdatedHandler } from './domain CouchService, ], }) -export class CouchModule { } +export class CouchModule {} diff --git a/src/modules/configuration/couch/data/services/couch.service.ts b/src/modules/configuration/couch/data/services/couch.service.ts index f562e16..0d019fd 100644 --- a/src/modules/configuration/couch/data/services/couch.service.ts +++ b/src/modules/configuration/couch/data/services/couch.service.ts @@ -5,7 +5,7 @@ import { ChangeDocEvent } from '../../domain/events/change-doc.event'; @Injectable() export class CouchService { - constructor(private eventBus: EventBus) { } + constructor(private eventBus: EventBus) {} async onModuleInit() { const nano = require('nano')('http://root:password@172.10.10.2:5970'); @@ -15,7 +15,7 @@ export class CouchService { this.changeDoc(change, database); }); - console.log(`start listen database ${ database }`); + console.log(`start listen database ${database}`); } } @@ -38,18 +38,18 @@ export class CouchService { public async deleteDoc(data, database) { const nano = require('nano')('http://root:password@172.10.10.2:5970'); const db = nano.use(database); - const result = await db.get(data.id) + const result = await db.get(data.id); await db.destroy(data.id, result._rev); } public async updateDoc(data, database) { const nano = require('nano')('http://root:password@172.10.10.2:5970'); const db = nano.use(database); - const result = await db.get(data.id) - console.log(result, 'dsa') + const result = await db.get(data.id); + console.log(result, 'dsa'); await db.insert({ ...data, - _rev: result._rev + _rev: result._rev, }); } } diff --git a/src/modules/configuration/couch/domain/managers/item.handler.ts b/src/modules/configuration/couch/domain/managers/item.handler.ts index d559799..90dedec 100644 --- a/src/modules/configuration/couch/domain/managers/item.handler.ts +++ b/src/modules/configuration/couch/domain/managers/item.handler.ts @@ -1,81 +1,81 @@ -import { EventsHandler, IEventHandler } from "@nestjs/cqrs"; -import { CouchService } from "../../data/services/couch.service"; -import { STATUS } from "src/core/strings/constants/base.constants"; -import { ItemDeletedEvent } from "src/modules/item-related/item/domain/entities/event/item-deleted.event"; -import { ItemUpdatedEvent } from "src/modules/item-related/item/domain/entities/event/item-updated.event"; -import { ItemChangeStatusEvent } from "src/modules/item-related/item/domain/entities/event/item-change-status.event"; -import { ItemDataService } from "src/modules/item-related/item/data/services/item-data.service"; +import { EventsHandler, IEventHandler } from '@nestjs/cqrs'; +import { CouchService } from '../../data/services/couch.service'; +import { STATUS } from 'src/core/strings/constants/base.constants'; +import { ItemDeletedEvent } from 'src/modules/item-related/item/domain/entities/event/item-deleted.event'; +import { ItemUpdatedEvent } from 'src/modules/item-related/item/domain/entities/event/item-updated.event'; +import { ItemChangeStatusEvent } from 'src/modules/item-related/item/domain/entities/event/item-change-status.event'; +import { ItemDataService } from 'src/modules/item-related/item/data/services/item-data.service'; @EventsHandler(ItemDeletedEvent) export class ItemDeletedHandler implements IEventHandler { - constructor( - private couchService: CouchService - ) { } + constructor(private couchService: CouchService) {} - async handle(event: ItemDeletedEvent) { - const data = await this.couchService.deleteDoc({ - _id: event.data.id, - ...event.data.data - }, 'item'); - } + async handle(event: ItemDeletedEvent) { + const data = await this.couchService.deleteDoc( + { + _id: event.data.id, + ...event.data.data, + }, + 'item', + ); + } } @EventsHandler(ItemChangeStatusEvent, ItemUpdatedEvent) -export class ItemUpdatedHandler implements IEventHandler { - constructor( - private couchService: CouchService, - private itemService: ItemDataService, - ) { } +export class ItemUpdatedHandler + implements IEventHandler +{ + constructor( + private couchService: CouchService, + private itemService: ItemDataService, + ) {} - async handle(event: ItemChangeStatusEvent) { + async handle(event: ItemChangeStatusEvent) { + const dataOld = event.data.old; + const data = event.data.data; + const dataItem = await this.itemService.getOneByOptions({ + where: { + id: data.id, + }, + relations: [ + 'item_category', + 'bundling_items', + 'bundling_items.item_category', + 'item_rates', + 'item_rates.item', + 'item_rates.season_period', + 'item_rates.season_period.season_type', + ], + }); - const dataOld = event.data.old; - const data = event.data.data; - const dataItem = await this.itemService.getOneByOptions({ - where: { - id: data.id - }, - relations: [ - 'item_category', - 'bundling_items', - 'bundling_items.item_category', - 'item_rates', - 'item_rates.item', - 'item_rates.season_period', - 'item_rates.season_period.season_type', - ] - }) - - // change status to active - if (dataOld?.status != data.status && data.status == STATUS.ACTIVE) { - await this.couchService.createDoc( - { - _id: data.id, - ...dataItem - }, - 'item' - ); - } - - else if (dataOld?.status != data.status) { - await this.couchService.deleteDoc( - { - _id: data.id, - ...dataItem - }, - 'item' - ); - } - - // update - else { - await this.couchService.updateDoc( - { - _id: data.id, - ...dataItem - }, - 'item' - ); - } + // change status to active + if (dataOld?.status != data.status && data.status == STATUS.ACTIVE) { + await this.couchService.createDoc( + { + _id: data.id, + ...dataItem, + }, + 'item', + ); + } else if (dataOld?.status != data.status) { + await this.couchService.deleteDoc( + { + _id: data.id, + ...dataItem, + }, + 'item', + ); } + + // update + else { + await this.couchService.updateDoc( + { + _id: data.id, + ...dataItem, + }, + 'item', + ); + } + } } diff --git a/src/modules/configuration/couch/domain/managers/payment-method.handler.ts b/src/modules/configuration/couch/domain/managers/payment-method.handler.ts index 30cbaf3..d50ab4c 100644 --- a/src/modules/configuration/couch/domain/managers/payment-method.handler.ts +++ b/src/modules/configuration/couch/domain/managers/payment-method.handler.ts @@ -1,65 +1,65 @@ -import { EventsHandler, IEventHandler } from "@nestjs/cqrs"; -import { CouchService } from "../../data/services/couch.service"; -import { STATUS } from "src/core/strings/constants/base.constants"; -import { PaymentMethodDeletedEvent } from "src/modules/transaction/payment-method/domain/entities/event/payment-method-deleted.event"; -import { PaymentMethodUpdatedEvent } from "src/modules/transaction/payment-method/domain/entities/event/payment-method-updated.event"; -import { PaymentMethodChangeStatusEvent } from "src/modules/transaction/payment-method/domain/entities/event/payment-method-change-status.event"; +import { EventsHandler, IEventHandler } from '@nestjs/cqrs'; +import { CouchService } from '../../data/services/couch.service'; +import { STATUS } from 'src/core/strings/constants/base.constants'; +import { PaymentMethodDeletedEvent } from 'src/modules/transaction/payment-method/domain/entities/event/payment-method-deleted.event'; +import { PaymentMethodUpdatedEvent } from 'src/modules/transaction/payment-method/domain/entities/event/payment-method-updated.event'; +import { PaymentMethodChangeStatusEvent } from 'src/modules/transaction/payment-method/domain/entities/event/payment-method-change-status.event'; @EventsHandler(PaymentMethodDeletedEvent) -export class PaymentMethodDeletedHandler implements IEventHandler { - constructor( - private couchService: CouchService - ) { } +export class PaymentMethodDeletedHandler + implements IEventHandler +{ + constructor(private couchService: CouchService) {} - async handle(event: PaymentMethodDeletedEvent) { - const data = await this.couchService.deleteDoc({ - _id: event.data.id, - ...event.data.data - }, 'payment_method'); - } + async handle(event: PaymentMethodDeletedEvent) { + const data = await this.couchService.deleteDoc( + { + _id: event.data.id, + ...event.data.data, + }, + 'payment_method', + ); + } } @EventsHandler(PaymentMethodChangeStatusEvent, PaymentMethodUpdatedEvent) -export class PaymentMethodUpdatedHandler implements IEventHandler { - constructor( - private couchService: CouchService - ) { } +export class PaymentMethodUpdatedHandler + implements IEventHandler +{ + constructor(private couchService: CouchService) {} - async handle(event: PaymentMethodChangeStatusEvent) { + async handle(event: PaymentMethodChangeStatusEvent) { + const dataOld = event.data.old; + const data = event.data.data; - const dataOld = event.data.old; - const data = event.data.data; - - // change status to active - if (dataOld?.status != data.status && data.status == STATUS.ACTIVE) { - await this.couchService.createDoc( - { - _id: data.id, - ...data - }, - 'payment_method' - ); - } - - else if (dataOld?.status != data.status) { - await this.couchService.deleteDoc( - { - _id: data.id, - ...data - }, - 'payment_method' - ); - } - - // update - else { - await this.couchService.updateDoc( - { - _id: data.id, - ...data - }, - 'payment_method' - ); - } + // change status to active + if (dataOld?.status != data.status && data.status == STATUS.ACTIVE) { + await this.couchService.createDoc( + { + _id: data.id, + ...data, + }, + 'payment_method', + ); + } else if (dataOld?.status != data.status) { + await this.couchService.deleteDoc( + { + _id: data.id, + ...data, + }, + 'payment_method', + ); } + + // update + else { + await this.couchService.updateDoc( + { + _id: data.id, + ...data, + }, + 'payment_method', + ); + } + } } diff --git a/src/modules/configuration/couch/domain/managers/season-period.handler.ts b/src/modules/configuration/couch/domain/managers/season-period.handler.ts index 95259b3..0390a46 100644 --- a/src/modules/configuration/couch/domain/managers/season-period.handler.ts +++ b/src/modules/configuration/couch/domain/managers/season-period.handler.ts @@ -1,65 +1,65 @@ -import { EventsHandler, IEventHandler } from "@nestjs/cqrs"; -import { CouchService } from "../../data/services/couch.service"; -import { STATUS } from "src/core/strings/constants/base.constants"; -import { SeasonPeriodDeletedEvent } from "src/modules/season-related/season-period/domain/entities/event/season-period-deleted.event"; -import { SeasonPeriodChangeStatusEvent } from "src/modules/season-related/season-period/domain/entities/event/season-period-change-status.event"; -import { SeasonPeriodUpdatedEvent } from "src/modules/season-related/season-period/domain/entities/event/season-period-updated.event"; +import { EventsHandler, IEventHandler } from '@nestjs/cqrs'; +import { CouchService } from '../../data/services/couch.service'; +import { STATUS } from 'src/core/strings/constants/base.constants'; +import { SeasonPeriodDeletedEvent } from 'src/modules/season-related/season-period/domain/entities/event/season-period-deleted.event'; +import { SeasonPeriodChangeStatusEvent } from 'src/modules/season-related/season-period/domain/entities/event/season-period-change-status.event'; +import { SeasonPeriodUpdatedEvent } from 'src/modules/season-related/season-period/domain/entities/event/season-period-updated.event'; @EventsHandler(SeasonPeriodDeletedEvent) -export class SeasonPeriodDeletedHandler implements IEventHandler { - constructor( - private couchService: CouchService - ) { } +export class SeasonPeriodDeletedHandler + implements IEventHandler +{ + constructor(private couchService: CouchService) {} - async handle(event: SeasonPeriodDeletedEvent) { - const data = await this.couchService.deleteDoc({ - _id: event.data.id, - ...event.data.data - }, 'season_period'); - } + async handle(event: SeasonPeriodDeletedEvent) { + const data = await this.couchService.deleteDoc( + { + _id: event.data.id, + ...event.data.data, + }, + 'season_period', + ); + } } @EventsHandler(SeasonPeriodChangeStatusEvent, SeasonPeriodUpdatedEvent) -export class SeasonPeriodUpdatedHandler implements IEventHandler { - constructor( - private couchService: CouchService - ) { } +export class SeasonPeriodUpdatedHandler + implements IEventHandler +{ + constructor(private couchService: CouchService) {} - async handle(event: SeasonPeriodChangeStatusEvent) { + async handle(event: SeasonPeriodChangeStatusEvent) { + const dataOld = event.data.old; + const data = event.data.data; - const dataOld = event.data.old; - const data = event.data.data; - - // change status to active - if (dataOld?.status != data.status && data.status == STATUS.ACTIVE) { - await this.couchService.createDoc( - { - _id: data.id, - ...data - }, - 'season_period' - ); - } - - else if (dataOld?.status != data.status) { - await this.couchService.deleteDoc( - { - _id: data.id, - ...data - }, - 'season_period' - ); - } - - // update - else { - await this.couchService.updateDoc( - { - _id: data.id, - ...data - }, - 'season_period' - ); - } + // change status to active + if (dataOld?.status != data.status && data.status == STATUS.ACTIVE) { + await this.couchService.createDoc( + { + _id: data.id, + ...data, + }, + 'season_period', + ); + } else if (dataOld?.status != data.status) { + await this.couchService.deleteDoc( + { + _id: data.id, + ...data, + }, + 'season_period', + ); } + + // update + else { + await this.couchService.updateDoc( + { + _id: data.id, + ...data, + }, + 'season_period', + ); + } + } } diff --git a/src/modules/configuration/couch/domain/managers/user.handler.ts b/src/modules/configuration/couch/domain/managers/user.handler.ts index f74c88a..97c8e18 100644 --- a/src/modules/configuration/couch/domain/managers/user.handler.ts +++ b/src/modules/configuration/couch/domain/managers/user.handler.ts @@ -1,82 +1,88 @@ -import { EventsHandler, IEventHandler } from "@nestjs/cqrs"; -import { CouchService } from "../../data/services/couch.service"; -import { STATUS } from "src/core/strings/constants/base.constants"; -import { UserDeletedEvent } from "src/modules/user-related/user/domain/entities/event/user-deleted.event"; -import { UserChangeStatusEvent } from "src/modules/user-related/user/domain/entities/event/user-change-status.event"; -import { UserUpdatedEvent } from "src/modules/user-related/user/domain/entities/event/user-updated.event"; -import { UserDataService } from "src/modules/user-related/user/data/services/user-data.service"; +import { EventsHandler, IEventHandler } from '@nestjs/cqrs'; +import { CouchService } from '../../data/services/couch.service'; +import { STATUS } from 'src/core/strings/constants/base.constants'; +import { UserDeletedEvent } from 'src/modules/user-related/user/domain/entities/event/user-deleted.event'; +import { UserChangeStatusEvent } from 'src/modules/user-related/user/domain/entities/event/user-change-status.event'; +import { UserUpdatedEvent } from 'src/modules/user-related/user/domain/entities/event/user-updated.event'; +import { UserDataService } from 'src/modules/user-related/user/data/services/user-data.service'; @EventsHandler(UserDeletedEvent) export class UserDeletedHandler implements IEventHandler { - constructor( - private couchService: CouchService - ) { } + constructor(private couchService: CouchService) {} - async handle(event: UserDeletedEvent) { - const data = await this.couchService.deleteDoc({ - _id: event.data.id, - ...event.data.data - }, 'user'); - } + async handle(event: UserDeletedEvent) { + const data = await this.couchService.deleteDoc( + { + _id: event.data.id, + ...event.data.data, + }, + 'user', + ); + } } @EventsHandler(UserChangeStatusEvent, UserUpdatedEvent) -export class UserUpdatedHandler implements IEventHandler { - constructor( - private couchService: CouchService, - private userService: UserDataService, - ) { } +export class UserUpdatedHandler + implements IEventHandler +{ + constructor( + private couchService: CouchService, + private userService: UserDataService, + ) {} - async handle(event: UserChangeStatusEvent) { + async handle(event: UserChangeStatusEvent) { + const dataOld = event.data.old; + const data = event.data.data; + const user = await this.userService + .getOneByOptions({ + where: { + id: data.id, + }, + relations: [ + 'user_privilege', + 'user_privilege.user_privilege_configurations', + ], + }) + .then((item) => { + const user_privilege_configurations = item[ + 'user_privilege' + ]?.user_privilege_configurations?.filter( + (config) => config.module == 'POS', + ); + Object.assign(item['user_privilege'], { + user_privilege_configurations: user_privilege_configurations, + }); + return item; + }); - const dataOld = event.data.old; - const data = event.data.data; - const user = await this.userService.getOneByOptions({ - where: { - id: data.id - }, - relations: [ - 'user_privilege', - 'user_privilege.user_privilege_configurations' - ] - }).then(item => { - const user_privilege_configurations = item['user_privilege']?.user_privilege_configurations?.filter(config => config.module == "POS") - Object.assign(item['user_privilege'], { - user_privilege_configurations: user_privilege_configurations - }) - return item - }) - - // change status to active - if (dataOld?.status != data.status && data.status == STATUS.ACTIVE) { - await this.couchService.createDoc( - { - _id: data.id, - ...user - }, - 'user' - ); - } - - else if (dataOld?.status != data.status) { - await this.couchService.deleteDoc( - { - _id: data.id, - ...user - }, - 'user' - ); - } - - // update - else { - await this.couchService.updateDoc( - { - _id: data.id, - ...user - }, - 'user' - ); - } + // change status to active + if (dataOld?.status != data.status && data.status == STATUS.ACTIVE) { + await this.couchService.createDoc( + { + _id: data.id, + ...user, + }, + 'user', + ); + } else if (dataOld?.status != data.status) { + await this.couchService.deleteDoc( + { + _id: data.id, + ...user, + }, + 'user', + ); } + + // update + else { + await this.couchService.updateDoc( + { + _id: data.id, + ...user, + }, + 'user', + ); + } + } } diff --git a/src/modules/configuration/couch/domain/managers/vip-category.handler.ts b/src/modules/configuration/couch/domain/managers/vip-category.handler.ts index 9795390..489adfb 100644 --- a/src/modules/configuration/couch/domain/managers/vip-category.handler.ts +++ b/src/modules/configuration/couch/domain/managers/vip-category.handler.ts @@ -1,65 +1,65 @@ -import { EventsHandler, IEventHandler } from "@nestjs/cqrs"; -import { CouchService } from "../../data/services/couch.service"; -import { VipCategoryDeletedEvent } from "src/modules/transaction/vip-category/domain/entities/event/vip-category-deleted.event"; -import { VipCategoryChangeStatusEvent } from "src/modules/transaction/vip-category/domain/entities/event/vip-category-change-status.event"; -import { VipCategoryUpdatedEvent } from "src/modules/transaction/vip-category/domain/entities/event/vip-category-updated.event"; -import { STATUS } from "src/core/strings/constants/base.constants"; +import { EventsHandler, IEventHandler } from '@nestjs/cqrs'; +import { CouchService } from '../../data/services/couch.service'; +import { VipCategoryDeletedEvent } from 'src/modules/transaction/vip-category/domain/entities/event/vip-category-deleted.event'; +import { VipCategoryChangeStatusEvent } from 'src/modules/transaction/vip-category/domain/entities/event/vip-category-change-status.event'; +import { VipCategoryUpdatedEvent } from 'src/modules/transaction/vip-category/domain/entities/event/vip-category-updated.event'; +import { STATUS } from 'src/core/strings/constants/base.constants'; @EventsHandler(VipCategoryDeletedEvent) -export class VipCategoryDeletedHandler implements IEventHandler { - constructor( - private couchService: CouchService - ) { } +export class VipCategoryDeletedHandler + implements IEventHandler +{ + constructor(private couchService: CouchService) {} - async handle(event: VipCategoryDeletedEvent) { - const data = await this.couchService.deleteDoc({ - _id: event.data.id, - ...event.data.data - }, 'vip_category'); - } + async handle(event: VipCategoryDeletedEvent) { + const data = await this.couchService.deleteDoc( + { + _id: event.data.id, + ...event.data.data, + }, + 'vip_category', + ); + } } @EventsHandler(VipCategoryChangeStatusEvent, VipCategoryUpdatedEvent) -export class VipCategoryUpdatedHandler implements IEventHandler { - constructor( - private couchService: CouchService - ) { } +export class VipCategoryUpdatedHandler + implements IEventHandler +{ + constructor(private couchService: CouchService) {} - async handle(event: VipCategoryChangeStatusEvent) { + async handle(event: VipCategoryChangeStatusEvent) { + const dataOld = event.data.old; + const data = event.data.data; - const dataOld = event.data.old; - const data = event.data.data; - - // change status to active - if (dataOld?.status != data.status && data.status == STATUS.ACTIVE) { - await this.couchService.createDoc( - { - _id: data.id, - ...data - }, - 'vip_category' - ); - } - - else if (dataOld?.status != data.status) { - await this.couchService.deleteDoc( - { - _id: data.id, - ...data - }, - 'vip_category' - ); - } - - // update - else { - await this.couchService.updateDoc( - { - _id: data.id, - ...data - }, - 'vip_category' - ); - } + // change status to active + if (dataOld?.status != data.status && data.status == STATUS.ACTIVE) { + await this.couchService.createDoc( + { + _id: data.id, + ...data, + }, + 'vip_category', + ); + } else if (dataOld?.status != data.status) { + await this.couchService.deleteDoc( + { + _id: data.id, + ...data, + }, + 'vip_category', + ); } + + // update + else { + await this.couchService.updateDoc( + { + _id: data.id, + ...data, + }, + 'vip_category', + ); + } + } } diff --git a/src/modules/configuration/google-calendar/domain/entities/filter-google-calendar.entity.ts b/src/modules/configuration/google-calendar/domain/entities/filter-google-calendar.entity.ts index f02bfc6..1cdb955 100644 --- a/src/modules/configuration/google-calendar/domain/entities/filter-google-calendar.entity.ts +++ b/src/modules/configuration/google-calendar/domain/entities/filter-google-calendar.entity.ts @@ -1,4 +1,4 @@ export interface FilterGoogleCalendarEntity { - start_date: Date; - end_date: Date; -} \ No newline at end of file + start_date: Date; + end_date: Date; +} diff --git a/src/modules/configuration/google-calendar/domain/usecases/google-calendar.orchestrator.ts b/src/modules/configuration/google-calendar/domain/usecases/google-calendar.orchestrator.ts index a13406c..892c791 100644 --- a/src/modules/configuration/google-calendar/domain/usecases/google-calendar.orchestrator.ts +++ b/src/modules/configuration/google-calendar/domain/usecases/google-calendar.orchestrator.ts @@ -3,7 +3,7 @@ import { IndexHolidayCalendarManager } from './managers/index-holiday-google-cal @Injectable() export class GoogleCalendarOrchestrator { - constructor(private indexHoliday: IndexHolidayCalendarManager) { } + constructor(private indexHoliday: IndexHolidayCalendarManager) {} async holiday(params) { return await this.indexHoliday.execute(params); diff --git a/src/modules/configuration/google-calendar/domain/usecases/managers/index-holiday-google-calendar.manager.ts b/src/modules/configuration/google-calendar/domain/usecases/managers/index-holiday-google-calendar.manager.ts index 67eced1..6124380 100644 --- a/src/modules/configuration/google-calendar/domain/usecases/managers/index-holiday-google-calendar.manager.ts +++ b/src/modules/configuration/google-calendar/domain/usecases/managers/index-holiday-google-calendar.manager.ts @@ -14,8 +14,12 @@ export class IndexHolidayCalendarManager { const res = await calendar.events.list({ calendarId: calendarId, - timeMin: param.start_date ? param.start_date + 'T00:00:00Z' : new Date().getFullYear() + '-01-01T00:00:00Z', - timeMax: param.end_date ? param.end_date + 'T23:59:59Z' : new Date().getFullYear() + '-12-31T23:59:59Z', + timeMin: param.start_date + ? param.start_date + 'T00:00:00Z' + : new Date().getFullYear() + '-01-01T00:00:00Z', + timeMax: param.end_date + ? param.end_date + 'T23:59:59Z' + : new Date().getFullYear() + '-12-31T23:59:59Z', singleEvents: true, orderBy: 'startTime', }); diff --git a/src/modules/configuration/google-calendar/infrastructure/dto/filter-google-calendar.dto.ts b/src/modules/configuration/google-calendar/infrastructure/dto/filter-google-calendar.dto.ts index 9d730ec..87c1403 100644 --- a/src/modules/configuration/google-calendar/infrastructure/dto/filter-google-calendar.dto.ts +++ b/src/modules/configuration/google-calendar/infrastructure/dto/filter-google-calendar.dto.ts @@ -1,18 +1,18 @@ -import { ApiProperty } from "@nestjs/swagger"; -import { FilterGoogleCalendarEntity } from "../../domain/entities/filter-google-calendar.entity"; +import { ApiProperty } from '@nestjs/swagger'; +import { FilterGoogleCalendarEntity } from '../../domain/entities/filter-google-calendar.entity'; export class FilterGoogleCalendarDto implements FilterGoogleCalendarEntity { - @ApiProperty({ - required: false, - type: Date, - example: '2024-04-01' - }) - start_date: Date; + @ApiProperty({ + required: false, + type: Date, + example: '2024-04-01', + }) + start_date: Date; - @ApiProperty({ - required: false, - type: Date, - example: '2024-04-30' - }) - end_date: Date; -} \ No newline at end of file + @ApiProperty({ + required: false, + type: Date, + example: '2024-04-30', + }) + end_date: Date; +} diff --git a/src/modules/item-related/item-rate/domain/entities/filter-item-rate.entity.ts b/src/modules/item-related/item-rate/domain/entities/filter-item-rate.entity.ts index 4f40752..62280e8 100644 --- a/src/modules/item-related/item-rate/domain/entities/filter-item-rate.entity.ts +++ b/src/modules/item-related/item-rate/domain/entities/filter-item-rate.entity.ts @@ -1,8 +1,8 @@ import { BaseFilterEntity } from 'src/core/modules/domain/entities/base-filter.entity'; export interface FilterItemRateEntity extends BaseFilterEntity { - item_ids: string[]; - season_period_ids: string[]; - start_date: Date; - end_date: Date; + item_ids: string[]; + season_period_ids: string[]; + start_date: Date; + end_date: Date; } diff --git a/src/modules/item-related/item-rate/domain/usecases/item-rate-read.orchestrator.ts b/src/modules/item-related/item-rate/domain/usecases/item-rate-read.orchestrator.ts index aa25a00..7f67d64 100644 --- a/src/modules/item-related/item-rate/domain/usecases/item-rate-read.orchestrator.ts +++ b/src/modules/item-related/item-rate/domain/usecases/item-rate-read.orchestrator.ts @@ -26,7 +26,7 @@ export class ItemRateReadOrchestrator extends BaseReadOrchestrator> { diff --git a/src/modules/item-related/item-rate/domain/usecases/managers/index-item-rate.manager.ts b/src/modules/item-related/item-rate/domain/usecases/managers/index-item-rate.manager.ts index ab9ef9d..8d1559c 100644 --- a/src/modules/item-related/item-rate/domain/usecases/managers/index-item-rate.manager.ts +++ b/src/modules/item-related/item-rate/domain/usecases/managers/index-item-rate.manager.ts @@ -18,13 +18,17 @@ export class IndexItemRateManager extends BaseIndexManager { } async afterProcess(): Promise { - - this.result.data?.map(item => { - let prices = [] - for (let d = new Date(this.filterParam.start_date); d <= new Date(this.filterParam.end_date); d.setDate(d.getDate() + 1)) { - + this.result.data?.map((item) => { + let prices = []; + for ( + let d = new Date(this.filterParam.start_date); + d <= new Date(this.filterParam.end_date); + d.setDate(d.getDate() + 1) + ) { const rate = item['item_rates']?.find( - rate => d >= new Date(rate.season_period.start_date) && d <= new Date(rate.season_period.end_date) + (rate) => + d >= new Date(rate.season_period.start_date) && + d <= new Date(rate.season_period.end_date), ); prices.push({ @@ -37,9 +41,9 @@ export class IndexItemRateManager extends BaseIndexManager { delete item['item_rates']; Object.assign(item, { - dates: prices - }) - }) + dates: prices, + }); + }); return; } @@ -55,7 +59,7 @@ export class IndexItemRateManager extends BaseIndexManager { 'tenant', 'item_rates', 'item_rates.season_period', - 'season_period.season_type' + 'season_period.season_type', ], // relation yang hanya ingin dihitung (akan return number) @@ -65,10 +69,10 @@ export class IndexItemRateManager extends BaseIndexManager { get selects(): string[] { return [ - `${ this.tableName }.id`, - `${ this.tableName }.created_at`, - `${ this.tableName }.name`, - `${ this.tableName }.base_price`, + `${this.tableName}.id`, + `${this.tableName}.created_at`, + `${this.tableName}.name`, + `${this.tableName}.base_price`, 'tenant.id', 'tenant.name', @@ -92,15 +96,15 @@ export class IndexItemRateManager extends BaseIndexManager { get specificFilter(): Param[] { return [ { - cols: `${ this.tableName }.name`, + cols: `${this.tableName}.name`, data: this.filterParam.names, }, { - cols: `${ this.tableName }.item_type::text`, + cols: `${this.tableName}.item_type::text`, data: this.filterParam.item_types, }, { - cols: `${ this.tableName }.limit_type::text`, + cols: `${this.tableName}.limit_type::text`, data: this.filterParam.limit_types, }, { @@ -114,11 +118,11 @@ export class IndexItemRateManager extends BaseIndexManager { queryBuilder: SelectQueryBuilder, ): SelectQueryBuilder { if (this.filterParam.tenant_ids?.length) { - queryBuilder.andWhere(`${ this.tableName }.tenant_id In (:...tenantIds)`, { + queryBuilder.andWhere(`${this.tableName}.tenant_id In (:...tenantIds)`, { tenantIds: this.filterParam.tenant_ids, }); } else if (!this.filterParam.all_item) { - queryBuilder.andWhere(`${ this.tableName }.tenant_id Is Null`); + queryBuilder.andWhere(`${this.tableName}.tenant_id Is Null`); } return queryBuilder; diff --git a/src/modules/item-related/item-rate/infrastructure/dto/filter-item-rate.dto.ts b/src/modules/item-related/item-rate/infrastructure/dto/filter-item-rate.dto.ts index 24903d7..2118cfa 100644 --- a/src/modules/item-related/item-rate/infrastructure/dto/filter-item-rate.dto.ts +++ b/src/modules/item-related/item-rate/infrastructure/dto/filter-item-rate.dto.ts @@ -5,18 +5,19 @@ import { Transform } from 'class-transformer'; export class FilterItemRateDto extends BaseFilterDto - implements FilterItemRateEntity { + implements FilterItemRateEntity +{ @ApiProperty({ required: false, type: Date, - example: '2024-04-01' + example: '2024-04-01', }) start_date: Date; @ApiProperty({ required: false, type: Date, - example: '2024-04-30' + example: '2024-04-30', }) end_date: Date; @@ -31,6 +32,4 @@ export class FilterItemRateDto return Array.isArray(body.value) ? body.value : [body.value]; }) season_period_ids: string[]; - - } diff --git a/src/modules/item-related/item-rate/infrastructure/dto/update-item-rate.dto.ts b/src/modules/item-related/item-rate/infrastructure/dto/update-item-rate.dto.ts index 1b4a4ea..061a76a 100644 --- a/src/modules/item-related/item-rate/infrastructure/dto/update-item-rate.dto.ts +++ b/src/modules/item-related/item-rate/infrastructure/dto/update-item-rate.dto.ts @@ -4,15 +4,15 @@ import { ApiProperty } from '@nestjs/swagger'; import { Exclude } from 'class-transformer'; export class UpdateItemRateDto extends BaseCoreDto implements ItemRateEntity { - @Exclude() - item_id: string; + @Exclude() + item_id: string; - @Exclude() - season_period_id: string; + @Exclude() + season_period_id: string; - @ApiProperty({ - type: Number, - required: true, - }) - price: number; + @ApiProperty({ + type: Number, + required: true, + }) + price: number; } diff --git a/src/modules/item-related/item-rate/item-rate.module.ts b/src/modules/item-related/item-rate/item-rate.module.ts index 238378e..5270a03 100644 --- a/src/modules/item-related/item-rate/item-rate.module.ts +++ b/src/modules/item-related/item-rate/item-rate.module.ts @@ -39,9 +39,6 @@ import { ItemRateModel } from './data/models/item-rate.model'; ItemRateDataOrchestrator, ItemRateReadOrchestrator, ], - exports: [ - ItemRateDataService, - ItemRateReadService, - ] + exports: [ItemRateDataService, ItemRateReadService], }) -export class ItemRateModule { } +export class ItemRateModule {} diff --git a/src/modules/item-related/item/domain/usecases/managers/active-item.manager.ts b/src/modules/item-related/item/domain/usecases/managers/active-item.manager.ts index 103f58e..b5640d9 100644 --- a/src/modules/item-related/item/domain/usecases/managers/active-item.manager.ts +++ b/src/modules/item-related/item/domain/usecases/managers/active-item.manager.ts @@ -1,4 +1,8 @@ -import { HttpStatus, Injectable, UnprocessableEntityException } from '@nestjs/common'; +import { + HttpStatus, + Injectable, + UnprocessableEntityException, +} from '@nestjs/common'; import { BaseUpdateStatusManager } from 'src/core/modules/domain/usecase/managers/base-update-status.manager'; import { ItemEntity } from '../../entities/item.entity'; import { @@ -12,7 +16,7 @@ import { STATUS } from 'src/core/strings/constants/base.constants'; @Injectable() export class ActiveItemManager extends BaseUpdateStatusManager { getResult(): string { - return `Success active data ${ this.result.name }`; + return `Success active data ${this.result.name}`; } async validateProcess(): Promise { @@ -28,11 +32,13 @@ export class ActiveItemManager extends BaseUpdateStatusManager { } get validateRelations(): validateRelations[] { - return [{ - relation: 'tenant', - singleQuery: ['status', '!=', STATUS.ACTIVE], - message: `Failed! Tenant of item must be active first`, - }]; + return [ + { + relation: 'tenant', + singleQuery: ['status', '!=', STATUS.ACTIVE], + message: `Failed! Tenant of item must be active first`, + }, + ]; } get entityTarget(): any { diff --git a/src/modules/item-related/item/domain/usecases/managers/batch-active-item.manager.ts b/src/modules/item-related/item/domain/usecases/managers/batch-active-item.manager.ts index 57279c0..33e08e0 100644 --- a/src/modules/item-related/item/domain/usecases/managers/batch-active-item.manager.ts +++ b/src/modules/item-related/item/domain/usecases/managers/batch-active-item.manager.ts @@ -7,7 +7,11 @@ import { import { ItemModel } from '../../../data/models/item.model'; import { ItemChangeStatusEvent } from '../../entities/event/item-change-status.event'; import { BatchResult } from 'src/core/response/domain/ok-response.interface'; -import { HttpStatus, Injectable, UnprocessableEntityException } from '@nestjs/common'; +import { + HttpStatus, + Injectable, + UnprocessableEntityException, +} from '@nestjs/common'; import { STATUS } from 'src/core/strings/constants/base.constants'; @Injectable() @@ -25,11 +29,13 @@ export class BatchActiveItemManager extends BaseBatchUpdateStatusManager { getResult(): string { - return `Success active data ${ this.result.name }`; + return `Success active data ${this.result.name}`; } async validateProcess(): Promise { @@ -28,11 +28,13 @@ export class ConfirmItemManager extends BaseUpdateStatusManager { } get validateRelations(): validateRelations[] { - return [{ - relation: 'tenant', - singleQuery: ['status', '!=', STATUS.ACTIVE], - message: `Failed! Tenant of item must be active first`, - }]; + return [ + { + relation: 'tenant', + singleQuery: ['status', '!=', STATUS.ACTIVE], + message: `Failed! Tenant of item must be active first`, + }, + ]; } get entityTarget(): any { diff --git a/src/modules/item-related/item/domain/usecases/managers/detail-item.manager.ts b/src/modules/item-related/item/domain/usecases/managers/detail-item.manager.ts index 894bb50..c1ed614 100644 --- a/src/modules/item-related/item/domain/usecases/managers/detail-item.manager.ts +++ b/src/modules/item-related/item/domain/usecases/managers/detail-item.manager.ts @@ -23,11 +23,7 @@ export class DetailItemManager extends BaseDetailManager { joinRelations: [], // relation join and select (relasi yang ingin ditampilkan), - selectRelations: [ - 'item_category', - 'bundling_items', - 'tenant', - ], + selectRelations: ['item_category', 'bundling_items', 'tenant'], // relation yang hanya ingin dihitung (akan return number) countRelations: [], @@ -36,19 +32,19 @@ export class DetailItemManager extends BaseDetailManager { get selects(): string[] { return [ - `${ this.tableName }.id`, - `${ this.tableName }.created_at`, - `${ this.tableName }.status`, - `${ this.tableName }.item_type`, - `${ this.tableName }.name`, - `${ this.tableName }.limit_type`, - `${ this.tableName }.limit_value`, - `${ this.tableName }.hpp`, - `${ this.tableName }.sales_margin`, - `${ this.tableName }.total_price`, - `${ this.tableName }.base_price`, - `${ this.tableName }.use_queue`, - `${ this.tableName }.show_to_booking`, + `${this.tableName}.id`, + `${this.tableName}.created_at`, + `${this.tableName}.status`, + `${this.tableName}.item_type`, + `${this.tableName}.name`, + `${this.tableName}.limit_type`, + `${this.tableName}.limit_value`, + `${this.tableName}.hpp`, + `${this.tableName}.sales_margin`, + `${this.tableName}.total_price`, + `${this.tableName}.base_price`, + `${this.tableName}.use_queue`, + `${this.tableName}.show_to_booking`, `item_category.id`, `item_category.name`, @@ -59,7 +55,7 @@ export class DetailItemManager extends BaseDetailManager { 'bundling_items.base_price', 'tenant.id', - 'tenant.name' + 'tenant.name', ]; } diff --git a/src/modules/item-related/item/domain/usecases/managers/index-item-rates.manager.ts b/src/modules/item-related/item/domain/usecases/managers/index-item-rates.manager.ts index 6c7e576..8a453db 100644 --- a/src/modules/item-related/item/domain/usecases/managers/index-item-rates.manager.ts +++ b/src/modules/item-related/item/domain/usecases/managers/index-item-rates.manager.ts @@ -2,73 +2,72 @@ import { Injectable } from '@nestjs/common'; import { BaseIndexManager } from 'src/core/modules/domain/usecase/managers/base-index.manager'; import { SelectQueryBuilder } from 'typeorm'; import { - Param, - RelationParam, + Param, + RelationParam, } from 'src/core/modules/domain/entities/base-filter.entity'; import { ItemRateEntity } from 'src/modules/item-related/item-rate/domain/entities/item-rate.entity'; @Injectable() export class IndexItemRatesManager extends BaseIndexManager { - async prepareData(): Promise { - this.filterParam.order_by = `${ this.tableName }.id` - return; - } - - async beforeProcess(): Promise { - return; - } - - async afterProcess(): Promise { - return; - } - - get relations(): RelationParam { - return { - // relation only join (for query purpose) - joinRelations: [], - - // relation join and select (relasi yang ingin ditampilkan), - selectRelations: ['season_period', 'season_period.season_type'], - - // relation yang hanya ingin dihitung (akan return number) - countRelations: [], - }; - } - - get selects(): string[] { - return [ - `${ this.tableName }.id`, - `${ this.tableName }.price`, - - `season_period.id`, - `season_period.created_at`, - `season_period.creator_name`, - `season_period.editor_name`, - `season_period.updated_at`, - `season_period.status`, - `season_period.start_date`, - `season_period.end_date`, - `season_period.days`, - `season_period.holiday_name`, - - 'season_type.id', - 'season_type.name', - ]; - } - - get specificFilter(): Param[] { - return []; - } - - setQueryFilter( - queryBuilder: SelectQueryBuilder, - ): SelectQueryBuilder { - - if (this.filterParam.item_ids) { - queryBuilder.andWhere(`${ this.tableName }.item_id In (:...itemIds)`, { - itemIds: this.filterParam.item_ids - }) - } - return queryBuilder; + async prepareData(): Promise { + this.filterParam.order_by = `${this.tableName}.id`; + return; + } + + async beforeProcess(): Promise { + return; + } + + async afterProcess(): Promise { + return; + } + + get relations(): RelationParam { + return { + // relation only join (for query purpose) + joinRelations: [], + + // relation join and select (relasi yang ingin ditampilkan), + selectRelations: ['season_period', 'season_period.season_type'], + + // relation yang hanya ingin dihitung (akan return number) + countRelations: [], + }; + } + + get selects(): string[] { + return [ + `${this.tableName}.id`, + `${this.tableName}.price`, + + `season_period.id`, + `season_period.created_at`, + `season_period.creator_name`, + `season_period.editor_name`, + `season_period.updated_at`, + `season_period.status`, + `season_period.start_date`, + `season_period.end_date`, + `season_period.days`, + `season_period.holiday_name`, + + 'season_type.id', + 'season_type.name', + ]; + } + + get specificFilter(): Param[] { + return []; + } + + setQueryFilter( + queryBuilder: SelectQueryBuilder, + ): SelectQueryBuilder { + if (this.filterParam.item_ids) { + queryBuilder.andWhere(`${this.tableName}.item_id In (:...itemIds)`, { + itemIds: this.filterParam.item_ids, + }); } + return queryBuilder; + } } diff --git a/src/modules/item-related/item/domain/usecases/managers/index-item.manager.ts b/src/modules/item-related/item/domain/usecases/managers/index-item.manager.ts index 0a5bd18..c15a1d0 100644 --- a/src/modules/item-related/item/domain/usecases/managers/index-item.manager.ts +++ b/src/modules/item-related/item/domain/usecases/managers/index-item.manager.ts @@ -27,11 +27,7 @@ export class IndexItemManager extends BaseIndexManager { joinRelations: [], // relation join and select (relasi yang ingin ditampilkan), - selectRelations: [ - 'item_category', - 'bundling_items', - 'tenant', - ], + selectRelations: ['item_category', 'bundling_items', 'tenant'], // relation yang hanya ingin dihitung (akan return number) countRelations: [], @@ -40,15 +36,15 @@ export class IndexItemManager extends BaseIndexManager { get selects(): string[] { return [ - `${ this.tableName }.id`, - `${ this.tableName }.created_at`, - `${ this.tableName }.status`, - `${ this.tableName }.item_type`, - `${ this.tableName }.name`, - `${ this.tableName }.hpp`, - `${ this.tableName }.limit_type`, - `${ this.tableName }.limit_value`, - `${ this.tableName }.base_price`, + `${this.tableName}.id`, + `${this.tableName}.created_at`, + `${this.tableName}.status`, + `${this.tableName}.item_type`, + `${this.tableName}.name`, + `${this.tableName}.hpp`, + `${this.tableName}.limit_type`, + `${this.tableName}.limit_value`, + `${this.tableName}.base_price`, `item_category.id`, `item_category.name`, @@ -57,22 +53,22 @@ export class IndexItemManager extends BaseIndexManager { 'bundling_items.name', 'tenant.id', - 'tenant.name' + 'tenant.name', ]; } get specificFilter(): Param[] { return [ { - cols: `${ this.tableName }.name`, + cols: `${this.tableName}.name`, data: this.filterParam.names, }, { - cols: `${ this.tableName }.item_type::text`, + cols: `${this.tableName}.item_type::text`, data: this.filterParam.item_types, }, { - cols: `${ this.tableName }.limit_type::text`, + cols: `${this.tableName}.limit_type::text`, data: this.filterParam.limit_types, }, { @@ -86,11 +82,11 @@ export class IndexItemManager extends BaseIndexManager { queryBuilder: SelectQueryBuilder, ): SelectQueryBuilder { if (this.filterParam.tenant_ids?.length) { - queryBuilder.andWhere(`${ this.tableName }.tenant_id In (:...tenantIds)`, { + queryBuilder.andWhere(`${this.tableName}.tenant_id In (:...tenantIds)`, { tenantIds: this.filterParam.tenant_ids, }); } else if (!this.filterParam.all_item) { - queryBuilder.andWhere(`${ this.tableName }.tenant_id Is Null`); + queryBuilder.andWhere(`${this.tableName}.tenant_id Is Null`); } return queryBuilder; diff --git a/src/modules/item-related/item/item.module.ts b/src/modules/item-related/item/item.module.ts index 9ae46da..456f7a2 100644 --- a/src/modules/item-related/item/item.module.ts +++ b/src/modules/item-related/item/item.module.ts @@ -30,7 +30,10 @@ import { IndexItemRatesManager } from './domain/usecases/managers/index-item-rat @Module({ imports: [ ConfigModule.forRoot(), - TypeOrmModule.forFeature([ItemModel, ItemRateModel], CONNECTION_NAME.DEFAULT), + TypeOrmModule.forFeature( + [ItemModel, ItemRateModel], + CONNECTION_NAME.DEFAULT, + ), CqrsModule, ], controllers: [ItemDataController, ItemReadController], @@ -79,4 +82,4 @@ import { IndexItemRatesManager } from './domain/usecases/managers/index-item-rat ItemReadOrchestrator, ], }) -export class ItemModule { } +export class ItemModule {} diff --git a/src/modules/season-related/season-period/data/models/season-period.model.ts b/src/modules/season-related/season-period/data/models/season-period.model.ts index 89902f1..104e158 100644 --- a/src/modules/season-related/season-period/data/models/season-period.model.ts +++ b/src/modules/season-related/season-period/data/models/season-period.model.ts @@ -9,7 +9,8 @@ import { ItemRateModel } from 'src/modules/item-related/item-rate/data/models/it @Entity(TABLE_NAME.SEASON_PERIOD) export class SeasonPeriodModel extends BaseStatusModel - implements SeasonPeriodEntity { + implements SeasonPeriodEntity +{ @Column('date', { name: 'start_date', nullable: true }) start_date: Date; diff --git a/src/modules/season-related/season-period/domain/entities/event/season-period-price-updated.event.ts b/src/modules/season-related/season-period/domain/entities/event/season-period-price-updated.event.ts index 9b97504..20cfefc 100644 --- a/src/modules/season-related/season-period/domain/entities/event/season-period-price-updated.event.ts +++ b/src/modules/season-related/season-period/domain/entities/event/season-period-price-updated.event.ts @@ -1,5 +1,5 @@ import { IEvent } from 'src/core/strings/constants/interface.constants'; export class SeasonPeriodPriceUpdatedEvent { - constructor(public readonly data: IEvent) { } + constructor(public readonly data: IEvent) {} } diff --git a/src/modules/season-related/season-period/domain/usecases/handlers/season-period-created.handler.ts b/src/modules/season-related/season-period/domain/usecases/handlers/season-period-created.handler.ts index 61e8ed9..f2ba866 100644 --- a/src/modules/season-related/season-period/domain/usecases/handlers/season-period-created.handler.ts +++ b/src/modules/season-related/season-period/domain/usecases/handlers/season-period-created.handler.ts @@ -7,7 +7,7 @@ import { SeasonPeriodModel } from '../../../data/models/season-period.model'; export class SeasonPeriodHolidayHandler implements IEventHandler { - constructor(private dataService: SeasonPeriodDataService) { } + constructor(private dataService: SeasonPeriodDataService) {} async handle(event: SeasonPeriodCreatedEvent) { const queryRunner = this.dataService diff --git a/src/modules/season-related/season-period/domain/usecases/handlers/season-period-price-updated.handler.ts b/src/modules/season-related/season-period/domain/usecases/handlers/season-period-price-updated.handler.ts index ed9c535..53211b9 100644 --- a/src/modules/season-related/season-period/domain/usecases/handlers/season-period-price-updated.handler.ts +++ b/src/modules/season-related/season-period/domain/usecases/handlers/season-period-price-updated.handler.ts @@ -1,62 +1,56 @@ -import { EventsHandler, IEventHandler } from "@nestjs/cqrs"; -import { SeasonPeriodPriceUpdatedEvent } from "../../entities/event/season-period-price-updated.event"; -import { SeasonPeriodReadService } from "../../../data/services/season-period-read.service"; -import { SeasonPeriodDataService } from "../../../data/services/season-period-data.service"; -import { SeasonPeriodModel } from "../../../data/models/season-period.model"; -import { ItemRateDataService } from "src/modules/item-related/item-rate/data/services/item-rate-data.service"; -import { ItemRateModel } from "src/modules/item-related/item-rate/data/models/item-rate.model"; -import { IsNull } from "typeorm"; +import { EventsHandler, IEventHandler } from '@nestjs/cqrs'; +import { SeasonPeriodPriceUpdatedEvent } from '../../entities/event/season-period-price-updated.event'; +import { SeasonPeriodReadService } from '../../../data/services/season-period-read.service'; +import { SeasonPeriodDataService } from '../../../data/services/season-period-data.service'; +import { SeasonPeriodModel } from '../../../data/models/season-period.model'; +import { ItemRateDataService } from 'src/modules/item-related/item-rate/data/services/item-rate-data.service'; +import { ItemRateModel } from 'src/modules/item-related/item-rate/data/models/item-rate.model'; +import { IsNull } from 'typeorm'; @EventsHandler(SeasonPeriodPriceUpdatedEvent) -export class SeasonPeriodPriceUpdatedHandler implements IEventHandler { +export class SeasonPeriodPriceUpdatedHandler + implements IEventHandler +{ + constructor( + private readService: SeasonPeriodReadService, + private dataService: SeasonPeriodDataService, + private rateDataService: ItemRateDataService, + ) {} - constructor( - private readService: SeasonPeriodReadService, - private dataService: SeasonPeriodDataService, - private rateDataService: ItemRateDataService, - ) { } + async handle(event: SeasonPeriodPriceUpdatedEvent) { + const datas = await this.readService + .getManyByOptions({ + where: { + season_type_id: event.data.data.season_period?.id, + }, + }) + .then((data) => { + return data.map((item) => { + return { + ...item, + item_rates: event.data.data.item_rates, + }; + }); + }); - async handle(event: SeasonPeriodPriceUpdatedEvent) { - const datas = await this.readService.getManyByOptions({ - where: { - season_type_id: event.data.data.season_period?.id - } - }).then(data => { - return data.map(item => { - return { - ...item, - item_rates: event.data.data.item_rates, - } - }) - }) + const queryRunner = this.dataService + .getRepository() + .manager.connection.createQueryRunner(); - const queryRunner = this.dataService - .getRepository() - .manager.connection.createQueryRunner(); + await this.dataService.createBatch(queryRunner, SeasonPeriodModel, datas); - await this.dataService.createBatch( - queryRunner, - SeasonPeriodModel, - datas - ) + await this.deleteUnusedItem(); + } - await this.deleteUnusedItem() - } + async deleteUnusedItem() { + const queryRunnerItem = this.rateDataService + .getRepository() + .manager.connection.createQueryRunner(); - async deleteUnusedItem() { - const queryRunnerItem = this.rateDataService - .getRepository() - .manager.connection.createQueryRunner(); - - await this.rateDataService.deleteByOptions( - queryRunnerItem, - ItemRateModel, - { - where: { - season_period_id: IsNull() - } - } - ) - - } -} \ No newline at end of file + await this.rateDataService.deleteByOptions(queryRunnerItem, ItemRateModel, { + where: { + season_period_id: IsNull(), + }, + }); + } +} diff --git a/src/modules/season-related/season-period/domain/usecases/managers/active-season-period.manager.ts b/src/modules/season-related/season-period/domain/usecases/managers/active-season-period.manager.ts index a87e97c..ec7d03f 100644 --- a/src/modules/season-related/season-period/domain/usecases/managers/active-season-period.manager.ts +++ b/src/modules/season-related/season-period/domain/usecases/managers/active-season-period.manager.ts @@ -11,7 +11,7 @@ import { SeasonPeriodChangeStatusEvent } from '../../entities/event/season-perio @Injectable() export class ActiveSeasonPeriodManager extends BaseUpdateStatusManager { getResult(): string { - return `Success active data ${ this.result.id }`; + return `Success active data ${this.result.id}`; } async validateProcess(): Promise { @@ -38,9 +38,7 @@ export class ActiveSeasonPeriodManager extends BaseUpdateStatusManager { getResult(): string { - return `Success active data ${ this.result.id }`; + return `Success active data ${this.result.id}`; } async validateProcess(): Promise { @@ -38,9 +38,7 @@ export class ConfirmSeasonPeriodManager extends BaseUpdateStatusManager { async beforeProcess(): Promise { - const priority = await ValidateSeasonPeriodHelper(this.dataService, this.data); + const priority = await ValidateSeasonPeriodHelper( + this.dataService, + this.data, + ); Object.assign(this.data, { - priority: priority - }) + priority: priority, + }); return; } diff --git a/src/modules/season-related/season-period/domain/usecases/managers/helpers/validate.helper.ts b/src/modules/season-related/season-period/domain/usecases/managers/helpers/validate.helper.ts index 994d287..ee74adc 100644 --- a/src/modules/season-related/season-period/domain/usecases/managers/helpers/validate.helper.ts +++ b/src/modules/season-related/season-period/domain/usecases/managers/helpers/validate.helper.ts @@ -1,5 +1,5 @@ -import { HttpStatus, UnprocessableEntityException } from "@nestjs/common"; -import { Brackets } from "typeorm"; +import { HttpStatus, UnprocessableEntityException } from '@nestjs/common'; +import { Brackets } from 'typeorm'; import * as _ from 'lodash'; // function ini bergungsi untuk validasi season period yang sama @@ -20,60 +20,74 @@ export async function ValidateSeasonPeriodHelper(dataService, data) { 3. Season period range 2024-08-15 hingga 2024-08-28, days [] tidak dapat ditindih oleh Season period 2024-07-08, 2024-08-20 days [] => akan tetapi dapat ditindih oleh season period 2024-08-15, 2024-08-28 days [Sabtu, Senin] (karena ini naik prio menjadi priority 2) */ - const query = dataService.getRepository().createQueryBuilder('data') + const query = dataService.getRepository().createQueryBuilder('data'); let priority: number = 3; // libur / specific date - if (data.holidays?.length > 0 || data.start_date == data.end_date || data.holiday_name) priority = 1 + if ( + data.holidays?.length > 0 || + data.start_date == data.end_date || + data.holiday_name + ) + priority = 1; // specific day - else if (data.days?.length > 0) priority = 2 + else if (data.days?.length > 0) priority = 2; if (data.id) { - query.andWhere('data.id != :dataId', { dataId: data.id }) + query.andWhere('data.id != :dataId', { dataId: data.id }); } let datas = await query .andWhere('data.priority = :priority', { priority: priority }) .andWhere( - new Brackets(query => { - + new Brackets((query) => { // contoh data tanggal 1 Agustus - 31 Agustus query.orWhere( - new Brackets(q => { - return q.andWhere('data.start_date <= :inputStartDate ', { inputStartDate: data.start_date }) - .andWhere('data.end_date >= :inputEndDate', { inputEndDate: data.end_date }); - }) - ) + new Brackets((q) => { + return q + .andWhere('data.start_date <= :inputStartDate ', { + inputStartDate: data.start_date, + }) + .andWhere('data.end_date >= :inputEndDate', { + inputEndDate: data.end_date, + }); + }), + ); query.orWhere( - new Brackets(q => { - return q.andWhere('data.start_date >= :inputStartDate ', { inputStartDate: data.start_date }) - .andWhere('data.end_date <= :inputEndDate', { inputEndDate: data.end_date }); - }) - ) + new Brackets((q) => { + return q + .andWhere('data.start_date >= :inputStartDate ', { + inputStartDate: data.start_date, + }) + .andWhere('data.end_date <= :inputEndDate', { + inputEndDate: data.end_date, + }); + }), + ); return query; - }) + }), ) .getMany(); if (priority == 2) { - datas = datas?.filter(item => { + datas = datas?.filter((item) => { const sameDate = item.days.filter((day) => { return data.days.some((day2) => { return day == day2; }); }); - return sameDate.length > 0 - }) + return sameDate.length > 0; + }); } if (datas.length > 0) { - throw new UnprocessableEntityException({ - statusCode: HttpStatus.UNPROCESSABLE_ENTITY, - message: `Failed! there is another season period in same range date`, - error: 'Unprocessable Entity', - }); + throw new UnprocessableEntityException({ + statusCode: HttpStatus.UNPROCESSABLE_ENTITY, + message: `Failed! there is another season period in same range date`, + error: 'Unprocessable Entity', + }); } return priority; -} \ No newline at end of file +} diff --git a/src/modules/season-related/season-period/domain/usecases/managers/inactive-season-period.manager.ts b/src/modules/season-related/season-period/domain/usecases/managers/inactive-season-period.manager.ts index dad884c..15c7dcc 100644 --- a/src/modules/season-related/season-period/domain/usecases/managers/inactive-season-period.manager.ts +++ b/src/modules/season-related/season-period/domain/usecases/managers/inactive-season-period.manager.ts @@ -11,7 +11,7 @@ import { SeasonPeriodChangeStatusEvent } from '../../entities/event/season-perio @Injectable() export class InactiveSeasonPeriodManager extends BaseUpdateStatusManager { getResult(): string { - return `Success inactive data ${ this.result.id }`; + return `Success inactive data ${this.result.id}`; } async validateProcess(): Promise { @@ -38,9 +38,7 @@ export class InactiveSeasonPeriodManager extends BaseUpdateStatusManager { - async prepareData(): Promise { - this.filterParam.order_by = `${ this.tableName }.id` - return; + async prepareData(): Promise { + this.filterParam.order_by = `${this.tableName}.id`; + return; + } + + async beforeProcess(): Promise { + return; + } + + async afterProcess(): Promise { + return; + } + + get relations(): RelationParam { + return { + // relation only join (for query purpose) + joinRelations: [], + + // relation join and select (relasi yang ingin ditampilkan), + selectRelations: ['item', 'item.item_category', 'item.bundling_items'], + + // relation yang hanya ingin dihitung (akan return number) + countRelations: [], + }; + } + + get selects(): string[] { + return [ + `${this.tableName}.id`, + `${this.tableName}.price`, + + `item.id`, + `item.created_at`, + `item.status`, + `item.item_type`, + `item.name`, + `item.hpp`, + `item.limit_type`, + `item.limit_value`, + `item.base_price`, + + `item_category.id`, + `item_category.name`, + + 'bundling_items.id', + 'bundling_items.name', + ]; + } + + get specificFilter(): Param[] { + return [ + { + cols: `${this.tableName}.name`, + data: this.filterParam.names, + }, + ]; + } + + setQueryFilter( + queryBuilder: SelectQueryBuilder, + ): SelectQueryBuilder { + if (this.filterParam.season_period_ids) { + queryBuilder.andWhere( + `${this.tableName}.season_period_id In (:...periodIds)`, + { + periodIds: this.filterParam.season_period_ids, + }, + ); } - async beforeProcess(): Promise { - return; - } - - async afterProcess(): Promise { - return; - } - - get relations(): RelationParam { - return { - // relation only join (for query purpose) - joinRelations: [], - - // relation join and select (relasi yang ingin ditampilkan), - selectRelations: ['item', 'item.item_category', 'item.bundling_items'], - - // relation yang hanya ingin dihitung (akan return number) - countRelations: [], - }; - } - - get selects(): string[] { - return [ - `${ this.tableName }.id`, - `${ this.tableName }.price`, - - `item.id`, - `item.created_at`, - `item.status`, - `item.item_type`, - `item.name`, - `item.hpp`, - `item.limit_type`, - `item.limit_value`, - `item.base_price`, - - `item_category.id`, - `item_category.name`, - - 'bundling_items.id', - 'bundling_items.name', - ]; - } - - get specificFilter(): Param[] { - return [ - { - cols: `${ this.tableName }.name`, - data: this.filterParam.names, - }, - ]; - } - - setQueryFilter( - queryBuilder: SelectQueryBuilder, - ): SelectQueryBuilder { - - if (this.filterParam.season_period_ids) { - queryBuilder.andWhere(`${ this.tableName }.season_period_id In (:...periodIds)`, { - periodIds: this.filterParam.season_period_ids - }) - } - - return queryBuilder; - } + return queryBuilder; + } } diff --git a/src/modules/season-related/season-period/domain/usecases/managers/update-season-period-price.manager.ts b/src/modules/season-related/season-period/domain/usecases/managers/update-season-period-price.manager.ts index 878c636..71bf51e 100644 --- a/src/modules/season-related/season-period/domain/usecases/managers/update-season-period-price.manager.ts +++ b/src/modules/season-related/season-period/domain/usecases/managers/update-season-period-price.manager.ts @@ -1,63 +1,65 @@ -import { HttpStatus, Injectable, UnprocessableEntityException } from "@nestjs/common"; -import { BaseCustomManager } from "src/core/modules/domain/usecase/managers/base-custom.manager"; -import { SeasonPeriodEntity } from "../../entities/season-period.entity"; -import { EventTopics } from "src/core/strings/constants/interface.constants"; -import { SeasonPeriodModel } from "../../../data/models/season-period.model"; -import { SeasonPeriodPriceUpdatedEvent } from "../../entities/event/season-period-price-updated.event"; -import { OPERATION } from "src/core/strings/constants/base.constants"; +import { + HttpStatus, + Injectable, + UnprocessableEntityException, +} from '@nestjs/common'; +import { BaseCustomManager } from 'src/core/modules/domain/usecase/managers/base-custom.manager'; +import { SeasonPeriodEntity } from '../../entities/season-period.entity'; +import { EventTopics } from 'src/core/strings/constants/interface.constants'; +import { SeasonPeriodModel } from '../../../data/models/season-period.model'; +import { SeasonPeriodPriceUpdatedEvent } from '../../entities/event/season-period-price-updated.event'; +import { OPERATION } from 'src/core/strings/constants/base.constants'; @Injectable() export class UpdateSeasonPeriodPriceManager extends BaseCustomManager { - - async validateProcess(): Promise { - const existSeason = await this.dataService.getOneByOptions({ - where: { - season_type_id: this.data.season_period.id - } - }) - if (!existSeason) { - throw new UnprocessableEntityException({ - statusCode: HttpStatus.UNPROCESSABLE_ENTITY, - message: `Failed! There is no season type ${ this.data.season_period.name }`, - error: 'Unprocessable Entity', - }); - } - return; + async validateProcess(): Promise { + const existSeason = await this.dataService.getOneByOptions({ + where: { + season_type_id: this.data.season_period.id, + }, + }); + if (!existSeason) { + throw new UnprocessableEntityException({ + statusCode: HttpStatus.UNPROCESSABLE_ENTITY, + message: `Failed! There is no season type ${this.data.season_period.name}`, + error: 'Unprocessable Entity', + }); } + return; + } - async beforeProcess(): Promise { - return; - } + async beforeProcess(): Promise { + return; + } - async process(): Promise { - this.eventBus.publish( - new SeasonPeriodPriceUpdatedEvent({ - id: '', - old: null, - data: this.data, - user: this.user, - description: '', - module: this.tableName, - op: OPERATION.CREATE, - }) - ) - return; - } + async process(): Promise { + this.eventBus.publish( + new SeasonPeriodPriceUpdatedEvent({ + id: '', + old: null, + data: this.data, + user: this.user, + description: '', + module: this.tableName, + op: OPERATION.CREATE, + }), + ); + return; + } - async afterProcess(): Promise { - return; - } + async afterProcess(): Promise { + return; + } - get entityTarget(): any { - return SeasonPeriodModel;; - } + get entityTarget(): any { + return SeasonPeriodModel; + } - getResult() { - return; - } + getResult() { + return; + } - get eventTopics(): EventTopics[] { - return []; - } - -} \ No newline at end of file + get eventTopics(): EventTopics[] { + return []; + } +} diff --git a/src/modules/season-related/season-period/domain/usecases/managers/update-season-period.manager.ts b/src/modules/season-related/season-period/domain/usecases/managers/update-season-period.manager.ts index 5f85f81..a90d333 100644 --- a/src/modules/season-related/season-period/domain/usecases/managers/update-season-period.manager.ts +++ b/src/modules/season-related/season-period/domain/usecases/managers/update-season-period.manager.ts @@ -13,11 +13,14 @@ import { ValidateSeasonPeriodHelper } from './helpers/validate.helper'; @Injectable() export class UpdateSeasonPeriodManager extends BaseUpdateManager { async validateProcess(): Promise { - const priority = await ValidateSeasonPeriodHelper(this.dataService, this.data); + const priority = await ValidateSeasonPeriodHelper( + this.dataService, + this.data, + ); Object.assign(this.data, { - priority: priority - }) + priority: priority, + }); return; } @@ -45,9 +48,7 @@ export class UpdateSeasonPeriodManager extends BaseUpdateManager { this.updatePriceManager.setData(data); - this.updatePriceManager.setService(this.serviceData, TABLE_NAME.SEASON_PERIOD); + this.updatePriceManager.setService( + this.serviceData, + TABLE_NAME.SEASON_PERIOD, + ); await this.updatePriceManager.execute(); return this.updatePriceManager.getResult(); } diff --git a/src/modules/season-related/season-period/domain/usecases/season-period-read.orchestrator.ts b/src/modules/season-related/season-period/domain/usecases/season-period-read.orchestrator.ts index 0200650..69524cb 100644 --- a/src/modules/season-related/season-period/domain/usecases/season-period-read.orchestrator.ts +++ b/src/modules/season-related/season-period/domain/usecases/season-period-read.orchestrator.ts @@ -39,7 +39,10 @@ export class SeasonPeriodReadOrchestrator extends BaseReadOrchestrator> { this.indexItemManager.setFilterParam(params); - this.indexItemManager.setService(this.itemServiceRead, TABLE_NAME.SEASON_PERIOD); + this.indexItemManager.setService( + this.itemServiceRead, + TABLE_NAME.SEASON_PERIOD, + ); await this.indexItemManager.execute(); return this.indexItemManager.getResult(); } diff --git a/src/modules/season-related/season-period/infrastructure/dto/update-season-period.dto.ts b/src/modules/season-related/season-period/infrastructure/dto/update-season-period.dto.ts index 3ba25e0..62cd794 100644 --- a/src/modules/season-related/season-period/infrastructure/dto/update-season-period.dto.ts +++ b/src/modules/season-related/season-period/infrastructure/dto/update-season-period.dto.ts @@ -9,7 +9,8 @@ import { SeasonPeriodHolidayDto } from './season-period-holiday.dto'; export class UpdateSeasonPeriodDto extends BaseStatusDto - implements SeasonPeriodEntity { + implements SeasonPeriodEntity +{ @ApiProperty({ type: Object, required: true, diff --git a/src/modules/season-related/season-period/infrastructure/dto/update-season-price.dto.ts b/src/modules/season-related/season-period/infrastructure/dto/update-season-price.dto.ts index 6c632d0..38eb61c 100644 --- a/src/modules/season-related/season-period/infrastructure/dto/update-season-price.dto.ts +++ b/src/modules/season-related/season-period/infrastructure/dto/update-season-price.dto.ts @@ -1,31 +1,31 @@ -import { ApiProperty } from "@nestjs/swagger"; -import { IsObject } from "class-validator"; -import { ItemRateModel } from "src/modules/item-related/item-rate/data/models/item-rate.model"; -import { SeasonTypeModel } from "src/modules/season-related/season-type/data/models/season-type.model"; +import { ApiProperty } from '@nestjs/swagger'; +import { IsObject } from 'class-validator'; +import { ItemRateModel } from 'src/modules/item-related/item-rate/data/models/item-rate.model'; +import { SeasonTypeModel } from 'src/modules/season-related/season-type/data/models/season-type.model'; export class UpdateSeasonPriceDto { - @ApiProperty({ - type: Object, - required: true, - example: { - id: 'uuid', - name: 'High Season', - }, - }) - @IsObject() - season_period: SeasonTypeModel; + @ApiProperty({ + type: Object, + required: true, + example: { + id: 'uuid', + name: 'High Season', + }, + }) + @IsObject() + season_period: SeasonTypeModel; - @ApiProperty({ - type: [Object], - example: [ - { - item: { - id: 'uuid', - name: 'Entrance Ticket', - }, - price: 10000, - }, - ], - }) - item_rates: ItemRateModel[]; -} \ No newline at end of file + @ApiProperty({ + type: [Object], + example: [ + { + item: { + id: 'uuid', + name: 'Entrance Ticket', + }, + price: 10000, + }, + ], + }) + item_rates: ItemRateModel[]; +} diff --git a/src/modules/season-related/season-period/season-period.module.ts b/src/modules/season-related/season-period/season-period.module.ts index 7dd7f83..7351a78 100644 --- a/src/modules/season-related/season-period/season-period.module.ts +++ b/src/modules/season-related/season-period/season-period.module.ts @@ -32,7 +32,10 @@ import { UpdateSeasonPeriodPriceManager } from './domain/usecases/managers/updat @Module({ imports: [ ConfigModule.forRoot(), - TypeOrmModule.forFeature([SeasonPeriodModel, ItemRateModel], CONNECTION_NAME.DEFAULT), + TypeOrmModule.forFeature( + [SeasonPeriodModel, ItemRateModel], + CONNECTION_NAME.DEFAULT, + ), CqrsModule, ], controllers: [SeasonPeriodDataController, SeasonPeriodReadController], @@ -63,4 +66,4 @@ import { UpdateSeasonPeriodPriceManager } from './domain/usecases/managers/updat SeasonPeriodReadOrchestrator, ], }) -export class SeasonPeriodModule { } +export class SeasonPeriodModule {} diff --git a/src/modules/transaction/payment-method/domain/usecases/managers/active-payment-method.manager.ts b/src/modules/transaction/payment-method/domain/usecases/managers/active-payment-method.manager.ts index 0c57747..b9ba66e 100644 --- a/src/modules/transaction/payment-method/domain/usecases/managers/active-payment-method.manager.ts +++ b/src/modules/transaction/payment-method/domain/usecases/managers/active-payment-method.manager.ts @@ -11,7 +11,7 @@ import { PaymentMethodChangeStatusEvent } from '../../entities/event/payment-met @Injectable() export class ActivePaymentMethodManager extends BaseUpdateStatusManager { getResult(): string { - return `Success active data ${ this.result.account_name }`; + return `Success active data ${this.result.account_name}`; } async validateProcess(): Promise { diff --git a/src/modules/transaction/payment-method/domain/usecases/managers/confirm-payment-method.manager.ts b/src/modules/transaction/payment-method/domain/usecases/managers/confirm-payment-method.manager.ts index 3884913..1541371 100644 --- a/src/modules/transaction/payment-method/domain/usecases/managers/confirm-payment-method.manager.ts +++ b/src/modules/transaction/payment-method/domain/usecases/managers/confirm-payment-method.manager.ts @@ -11,7 +11,7 @@ import { PaymentMethodChangeStatusEvent } from '../../entities/event/payment-met @Injectable() export class ConfirmPaymentMethodManager extends BaseUpdateStatusManager { getResult(): string { - return `Success active data ${ this.result.account_name }`; + return `Success active data ${this.result.account_name}`; } async validateProcess(): Promise { diff --git a/src/modules/transaction/payment-method/domain/usecases/managers/inactive-payment-method.manager.ts b/src/modules/transaction/payment-method/domain/usecases/managers/inactive-payment-method.manager.ts index 26f6354..8e08223 100644 --- a/src/modules/transaction/payment-method/domain/usecases/managers/inactive-payment-method.manager.ts +++ b/src/modules/transaction/payment-method/domain/usecases/managers/inactive-payment-method.manager.ts @@ -11,7 +11,7 @@ import { PaymentMethodChangeStatusEvent } from '../../entities/event/payment-met @Injectable() export class InactivePaymentMethodManager extends BaseUpdateStatusManager { getResult(): string { - return `Success inactive data ${ this.result.account_name }`; + return `Success inactive data ${this.result.account_name}`; } async validateProcess(): Promise { diff --git a/src/modules/transaction/tax/domain/usecases/managers/batch-delete-tax.manager.ts b/src/modules/transaction/tax/domain/usecases/managers/batch-delete-tax.manager.ts index 16c8400..594a8de 100644 --- a/src/modules/transaction/tax/domain/usecases/managers/batch-delete-tax.manager.ts +++ b/src/modules/transaction/tax/domain/usecases/managers/batch-delete-tax.manager.ts @@ -17,7 +17,10 @@ export class BatchDeleteTaxManager extends BaseBatchDeleteManager { } async validateData(data: TaxEntity): Promise { - await validateUsedInFormula(this.dataServiceFirstOpt, data.name.toLowerCase()); + await validateUsedInFormula( + this.dataServiceFirstOpt, + data.name.toLowerCase(), + ); return; } diff --git a/src/modules/transaction/tax/domain/usecases/managers/batch-inactive-tax.manager.ts b/src/modules/transaction/tax/domain/usecases/managers/batch-inactive-tax.manager.ts index ba81b4c..cc5e4f1 100644 --- a/src/modules/transaction/tax/domain/usecases/managers/batch-inactive-tax.manager.ts +++ b/src/modules/transaction/tax/domain/usecases/managers/batch-inactive-tax.manager.ts @@ -12,11 +12,13 @@ import { validateUsedInFormula } from './helpers/validation.helper'; @Injectable() export class BatchInactiveTaxManager extends BaseBatchUpdateStatusManager { - // dataServiceFirstOpt adalah formula service async validateData(data: TaxEntity): Promise { - await validateUsedInFormula(this.dataServiceFirstOpt, data.name.toLowerCase()); + await validateUsedInFormula( + this.dataServiceFirstOpt, + data.name.toLowerCase(), + ); return; } diff --git a/src/modules/transaction/tax/domain/usecases/managers/delete-tax.manager.ts b/src/modules/transaction/tax/domain/usecases/managers/delete-tax.manager.ts index 8bb511f..7607276 100644 --- a/src/modules/transaction/tax/domain/usecases/managers/delete-tax.manager.ts +++ b/src/modules/transaction/tax/domain/usecases/managers/delete-tax.manager.ts @@ -16,7 +16,10 @@ export class DeleteTaxManager extends BaseDeleteManager { } async validateProcess(): Promise { - await validateUsedInFormula(this.dataServiceFirstOpt, this.data.name.toLowerCase()); + await validateUsedInFormula( + this.dataServiceFirstOpt, + this.data.name.toLowerCase(), + ); return; } diff --git a/src/modules/transaction/tax/domain/usecases/managers/helpers/validation.helper.ts b/src/modules/transaction/tax/domain/usecases/managers/helpers/validation.helper.ts index f4826a1..788cafb 100644 --- a/src/modules/transaction/tax/domain/usecases/managers/helpers/validation.helper.ts +++ b/src/modules/transaction/tax/domain/usecases/managers/helpers/validation.helper.ts @@ -1,14 +1,16 @@ -import { HttpStatus, UnprocessableEntityException } from "@nestjs/common"; +import { HttpStatus, UnprocessableEntityException } from '@nestjs/common'; export async function validateUsedInFormula(formulaDataService, name) { - const formulas = await formulaDataService.getManyByOptions(); - formulas?.forEach(formula => { - const allWords = formula?.formula_string?.replace(/[^a-zA-Z0-9]/g, ' ').split(' '); - if (allWords.find(item => item.toLowerCase() == name)) - throw new UnprocessableEntityException({ - statusCode: HttpStatus.UNPROCESSABLE_ENTITY, - message: `Failed! tax ${ name } already used in ${ formula.type } formula`, - error: 'Unprocessable Entity', - }) - }); -} \ No newline at end of file + const formulas = await formulaDataService.getManyByOptions(); + formulas?.forEach((formula) => { + const allWords = formula?.formula_string + ?.replace(/[^a-zA-Z0-9]/g, ' ') + .split(' '); + if (allWords.find((item) => item.toLowerCase() == name)) + throw new UnprocessableEntityException({ + statusCode: HttpStatus.UNPROCESSABLE_ENTITY, + message: `Failed! tax ${name} already used in ${formula.type} formula`, + error: 'Unprocessable Entity', + }); + }); +} diff --git a/src/modules/transaction/tax/domain/usecases/managers/inactive-tax.manager.ts b/src/modules/transaction/tax/domain/usecases/managers/inactive-tax.manager.ts index 618e831..5e5b0e2 100644 --- a/src/modules/transaction/tax/domain/usecases/managers/inactive-tax.manager.ts +++ b/src/modules/transaction/tax/domain/usecases/managers/inactive-tax.manager.ts @@ -12,11 +12,14 @@ import { validateUsedInFormula } from './helpers/validation.helper'; @Injectable() export class InactiveTaxManager extends BaseUpdateStatusManager { getResult(): string { - return `Success inactive data ${ this.result.name }`; + return `Success inactive data ${this.result.name}`; } async validateProcess(): Promise { - await validateUsedInFormula(this.dataServiceFirstOpt, this.data.name.toLowerCase()); + await validateUsedInFormula( + this.dataServiceFirstOpt, + this.data.name.toLowerCase(), + ); return; } diff --git a/src/modules/transaction/tax/domain/usecases/tax-data.orchestrator.ts b/src/modules/transaction/tax/domain/usecases/tax-data.orchestrator.ts index 6e77b90..c94cffb 100644 --- a/src/modules/transaction/tax/domain/usecases/tax-data.orchestrator.ts +++ b/src/modules/transaction/tax/domain/usecases/tax-data.orchestrator.ts @@ -52,14 +52,22 @@ export class TaxDataOrchestrator extends BaseDataTransactionOrchestrator { this.deleteManager.setData(dataId); - this.deleteManager.setService(this.serviceData, TABLE_NAME.TAX, this.formulaServiceData); + this.deleteManager.setService( + this.serviceData, + TABLE_NAME.TAX, + this.formulaServiceData, + ); await this.deleteManager.execute(); return this.deleteManager.getResult(); } async batchDelete(dataIds: string[]): Promise { this.batchDeleteManager.setData(dataIds); - this.batchDeleteManager.setService(this.serviceData, TABLE_NAME.TAX, this.formulaServiceData); + this.batchDeleteManager.setService( + this.serviceData, + TABLE_NAME.TAX, + this.formulaServiceData, + ); await this.batchDeleteManager.execute(); return this.batchDeleteManager.getResult(); } @@ -94,14 +102,22 @@ export class TaxDataOrchestrator extends BaseDataTransactionOrchestrator { this.inactiveManager.setData(dataId, STATUS.INACTIVE); - this.inactiveManager.setService(this.serviceData, TABLE_NAME.TAX, this.formulaServiceData); + this.inactiveManager.setService( + this.serviceData, + TABLE_NAME.TAX, + this.formulaServiceData, + ); await this.inactiveManager.execute(); return this.inactiveManager.getResult(); } async batchInactive(dataIds: string[]): Promise { this.batchInactiveManager.setData(dataIds, STATUS.INACTIVE); - this.batchInactiveManager.setService(this.serviceData, TABLE_NAME.TAX, this.formulaServiceData); + this.batchInactiveManager.setService( + this.serviceData, + TABLE_NAME.TAX, + this.formulaServiceData, + ); await this.batchInactiveManager.execute(); return this.batchInactiveManager.getResult(); } diff --git a/src/modules/transaction/tax/tax.module.ts b/src/modules/transaction/tax/tax.module.ts index 9c1fc47..46682b4 100644 --- a/src/modules/transaction/tax/tax.module.ts +++ b/src/modules/transaction/tax/tax.module.ts @@ -28,7 +28,10 @@ import { SalesPriceFormulaModel } from '../sales-price-formula/data/models/sales @Module({ imports: [ ConfigModule.forRoot(), - TypeOrmModule.forFeature([TaxModel, SalesPriceFormulaModel], CONNECTION_NAME.DEFAULT), + TypeOrmModule.forFeature( + [TaxModel, SalesPriceFormulaModel], + CONNECTION_NAME.DEFAULT, + ), CqrsModule, ], controllers: [TaxDataController, TaxReadController], @@ -54,4 +57,4 @@ import { SalesPriceFormulaModel } from '../sales-price-formula/data/models/sales TaxReadOrchestrator, ], }) -export class TaxModule { } +export class TaxModule {} diff --git a/src/modules/transaction/vip-category/domain/usecases/managers/active-vip-category.manager.ts b/src/modules/transaction/vip-category/domain/usecases/managers/active-vip-category.manager.ts index 5e8d123..bdb960c 100644 --- a/src/modules/transaction/vip-category/domain/usecases/managers/active-vip-category.manager.ts +++ b/src/modules/transaction/vip-category/domain/usecases/managers/active-vip-category.manager.ts @@ -11,7 +11,7 @@ import { VipCategoryChangeStatusEvent } from '../../entities/event/vip-category- @Injectable() export class ActiveVipCategoryManager extends BaseUpdateStatusManager { getResult(): string { - return `Success active data ${ this.result.name }`; + return `Success active data ${this.result.name}`; } async validateProcess(): Promise { diff --git a/src/modules/transaction/vip-category/domain/usecases/managers/confirm-vip-category.manager.ts b/src/modules/transaction/vip-category/domain/usecases/managers/confirm-vip-category.manager.ts index cf6e359..342ac85 100644 --- a/src/modules/transaction/vip-category/domain/usecases/managers/confirm-vip-category.manager.ts +++ b/src/modules/transaction/vip-category/domain/usecases/managers/confirm-vip-category.manager.ts @@ -11,7 +11,7 @@ import { VipCategoryChangeStatusEvent } from '../../entities/event/vip-category- @Injectable() export class ConfirmVipCategoryManager extends BaseUpdateStatusManager { getResult(): string { - return `Success active data ${ this.result.name }`; + return `Success active data ${this.result.name}`; } async validateProcess(): Promise { diff --git a/src/modules/transaction/vip-category/domain/usecases/managers/inactive-vip-category.manager.ts b/src/modules/transaction/vip-category/domain/usecases/managers/inactive-vip-category.manager.ts index 67fd62b..22c181e 100644 --- a/src/modules/transaction/vip-category/domain/usecases/managers/inactive-vip-category.manager.ts +++ b/src/modules/transaction/vip-category/domain/usecases/managers/inactive-vip-category.manager.ts @@ -11,7 +11,7 @@ import { VipCategoryChangeStatusEvent } from '../../entities/event/vip-category- @Injectable() export class InactiveVipCategoryManager extends BaseUpdateStatusManager { getResult(): string { - return `Success inactive data ${ this.result.name }`; + return `Success inactive data ${this.result.name}`; } async validateProcess(): Promise { diff --git a/src/modules/user-related/tenant/domain/usecases/managers/batch-delete-tenant.manager.ts b/src/modules/user-related/tenant/domain/usecases/managers/batch-delete-tenant.manager.ts index 18acc85..72c41a5 100644 --- a/src/modules/user-related/tenant/domain/usecases/managers/batch-delete-tenant.manager.ts +++ b/src/modules/user-related/tenant/domain/usecases/managers/batch-delete-tenant.manager.ts @@ -14,13 +14,17 @@ import { STATUS } from 'src/core/strings/constants/base.constants'; @Injectable() export class BatchDeleteTenantManager extends BaseBatchDeleteManager { get validateRelations(): validateRelations[] { - return [{ - relation: 'items', - query: (qb: SelectQueryBuilder) => { - return qb.andWhere('total_items.status In (:...statuses)', { statuses: [STATUS.ACTIVE] }); + return [ + { + relation: 'items', + query: (qb: SelectQueryBuilder) => { + return qb.andWhere('total_items.status In (:...statuses)', { + statuses: [STATUS.ACTIVE], + }); + }, + message: 'Failed! There is active item', }, - message: 'Failed! There is active item' - }]; + ]; } async beforeProcess(): Promise { diff --git a/src/modules/user-related/tenant/domain/usecases/managers/batch-inactive-tenant.manager.ts b/src/modules/user-related/tenant/domain/usecases/managers/batch-inactive-tenant.manager.ts index 6e1f7b2..a12cbc8 100644 --- a/src/modules/user-related/tenant/domain/usecases/managers/batch-inactive-tenant.manager.ts +++ b/src/modules/user-related/tenant/domain/usecases/managers/batch-inactive-tenant.manager.ts @@ -14,13 +14,17 @@ import { STATUS } from 'src/core/strings/constants/base.constants'; @Injectable() export class BatchInactiveTenantManager extends BaseBatchUpdateStatusManager { get validateRelations(): validateRelations[] { - return [{ - relation: 'items', - query: (qb: SelectQueryBuilder) => { - return qb.andWhere('total_items.status In (:...statuses)', { statuses: [STATUS.ACTIVE] }); + return [ + { + relation: 'items', + query: (qb: SelectQueryBuilder) => { + return qb.andWhere('total_items.status In (:...statuses)', { + statuses: [STATUS.ACTIVE], + }); + }, + message: 'Failed! There is active item', }, - message: 'Failed! There is active item' - }]; + ]; } validateData(data: UserEntity): Promise { diff --git a/src/modules/user-related/tenant/domain/usecases/managers/delete-tenant.manager.ts b/src/modules/user-related/tenant/domain/usecases/managers/delete-tenant.manager.ts index 9233862..edb0ac0 100644 --- a/src/modules/user-related/tenant/domain/usecases/managers/delete-tenant.manager.ts +++ b/src/modules/user-related/tenant/domain/usecases/managers/delete-tenant.manager.ts @@ -13,13 +13,17 @@ import { STATUS } from 'src/core/strings/constants/base.constants'; @Injectable() export class DeleteTenantManager extends BaseDeleteManager { get validateRelations(): validateRelations[] { - return [{ - relation: 'items', - query: (qb: SelectQueryBuilder) => { - return qb.andWhere('total_items.status In (:...statuses)', { statuses: [STATUS.ACTIVE] }); + return [ + { + relation: 'items', + query: (qb: SelectQueryBuilder) => { + return qb.andWhere('total_items.status In (:...statuses)', { + statuses: [STATUS.ACTIVE], + }); + }, + message: 'Failed! There is active item', }, - message: 'Failed! There is active item' - }]; + ]; } getResult(): string { diff --git a/src/modules/user-related/tenant/domain/usecases/managers/inactive-tenant.manager.ts b/src/modules/user-related/tenant/domain/usecases/managers/inactive-tenant.manager.ts index 660a27b..1f656da 100644 --- a/src/modules/user-related/tenant/domain/usecases/managers/inactive-tenant.manager.ts +++ b/src/modules/user-related/tenant/domain/usecases/managers/inactive-tenant.manager.ts @@ -13,17 +13,21 @@ import { STATUS } from 'src/core/strings/constants/base.constants'; @Injectable() export class InactiveTenantManager extends BaseUpdateStatusManager { get validateRelations(): validateRelations[] { - return [{ - relation: 'items', - query: (qb: SelectQueryBuilder) => { - return qb.andWhere('total_items.status In (:...statuses)', { statuses: [STATUS.ACTIVE] }); + return [ + { + relation: 'items', + query: (qb: SelectQueryBuilder) => { + return qb.andWhere('total_items.status In (:...statuses)', { + statuses: [STATUS.ACTIVE], + }); + }, + message: 'Failed! There is active item', }, - message: 'Failed! There is active item' - }]; + ]; } getResult(): string { - return `Success inactive data ${ this.result.name }`; + return `Success inactive data ${this.result.name}`; } async validateProcess(): Promise { diff --git a/src/modules/user-related/user/domain/usecases/managers/active-user.manager.ts b/src/modules/user-related/user/domain/usecases/managers/active-user.manager.ts index 9c2daa6..5d5fa75 100644 --- a/src/modules/user-related/user/domain/usecases/managers/active-user.manager.ts +++ b/src/modules/user-related/user/domain/usecases/managers/active-user.manager.ts @@ -11,7 +11,7 @@ import { UserChangeStatusEvent } from '../../entities/event/user-change-status.e @Injectable() export class ActiveUserManager extends BaseUpdateStatusManager { getResult(): string { - return `Success active data ${ this.result.name }`; + return `Success active data ${this.result.name}`; } async validateProcess(): Promise { diff --git a/src/modules/user-related/user/domain/usecases/managers/confirm-user.manager.ts b/src/modules/user-related/user/domain/usecases/managers/confirm-user.manager.ts index c98758e..c3471c0 100644 --- a/src/modules/user-related/user/domain/usecases/managers/confirm-user.manager.ts +++ b/src/modules/user-related/user/domain/usecases/managers/confirm-user.manager.ts @@ -11,7 +11,7 @@ import { UserChangeStatusEvent } from '../../entities/event/user-change-status.e @Injectable() export class ConfirmUserManager extends BaseUpdateStatusManager { getResult(): string { - return `Success active data ${ this.result.name }`; + return `Success active data ${this.result.name}`; } async validateProcess(): Promise { diff --git a/src/modules/user-related/user/domain/usecases/managers/create-user.manager.ts b/src/modules/user-related/user/domain/usecases/managers/create-user.manager.ts index 41c7fbc..8251a31 100644 --- a/src/modules/user-related/user/domain/usecases/managers/create-user.manager.ts +++ b/src/modules/user-related/user/domain/usecases/managers/create-user.manager.ts @@ -31,7 +31,7 @@ export class CreateUserManager extends BaseCreateManager { return; } - async generateConfig(): Promise { } + async generateConfig(): Promise {} get validateRelations(): validateRelations[] { return []; diff --git a/src/modules/user-related/user/domain/usecases/managers/inactive-user.manager.ts b/src/modules/user-related/user/domain/usecases/managers/inactive-user.manager.ts index d243e82..e3d466d 100644 --- a/src/modules/user-related/user/domain/usecases/managers/inactive-user.manager.ts +++ b/src/modules/user-related/user/domain/usecases/managers/inactive-user.manager.ts @@ -11,7 +11,7 @@ import { UserChangeStatusEvent } from '../../entities/event/user-change-status.e @Injectable() export class InactiveUserManager extends BaseUpdateStatusManager { getResult(): string { - return `Success inactive data ${ this.result.name }`; + return `Success inactive data ${this.result.name}`; } async validateProcess(): Promise {