From 240bbf4c2e7eb19583658af11f265f4914092f5b Mon Sep 17 00:00:00 2001 From: ashar Date: Mon, 3 Jun 2024 15:18:17 +0700 Subject: [PATCH] feat(SPG-320) REST API CUD User Privileges --- .../user-related/user-privilege/constants.ts | 7 + .../data/model/user-privilege.model.ts | 10 -- .../user-privilege-configuration.model.ts | 63 +++++++ .../data/models/user-privilege.model.ts | 32 ++++ .../user-privilege-configuration.service.ts | 34 ++++ .../service/user-privilege-data.service.ts | 28 ++-- .../user-privilege-change-status.event.ts | 6 +- .../event/user-privilege-created.event.ts | 6 +- .../event/user-privilege-deleted.event.ts | 6 +- .../event/user-privilege-updated.event.ts | 6 +- .../user-privilege-configuration.entity.ts | 17 ++ .../domain/entities/user-privilege.entity.ts | 6 +- .../managers/active-user-privilege.manager.ts | 39 ----- .../confirm-user-privilege.manager.ts | 39 ----- .../managers/create-user-privilege.manager.ts | 35 ---- .../managers/delete-user-privilege.manager.ts | 39 ----- .../managers/detail-user-privilege.manager.ts | 39 ----- .../inactive-user-privilege.manager.ts | 39 ----- .../managers/index-user-privilege.manager.ts | 45 ----- .../managers/update-user-privilege.manager.ts | 35 ---- ...ate-user-privilege-configuration.helper.ts | 33 ++++ ...te-user-privilege-configuration.manager.ts | 42 +++++ ...ivilege-configuration-data.orchestrator.ts | 31 ++++ .../user-privilege-data.orchestrator.ts | 69 -------- .../user-privilege-read.orchestrator.ts | 33 ---- .../managers/active-user-privilege.manager.ts | 38 +++++ .../batch-active-user-privilege.manager.ts | 36 ++++ .../batch-confirm-user-privilege.manager.ts | 36 ++++ .../batch-delete-user-privilege.manager.ts | 36 ++++ .../batch-inactive-user-privilege.manager.ts | 36 ++++ .../confirm-user-privilege.manager.ts | 38 +++++ .../managers/create-user-privilege.manager.ts | 42 +++++ .../managers/delete-user-privilege.manager.ts | 38 +++++ .../inactive-user-privilege.manager.ts | 38 +++++ .../managers/update-user-privilege.manager.ts | 38 +++++ .../user-privilege-data.orchestrator.ts | 106 ++++++++++++ .../dto/create-user-privilege.dto.ts | 21 ++- .../dto/user-privilege-configuration.dto.ts | 83 ++++++++++ ...user-privilege-configuration.controller.ts | 35 ++++ .../user-privilege-data.controller.ts | 155 ++++++++---------- .../user-privilege-read.controller.ts | 52 +++--- .../user-privilege/user-privilege.module.ts | 109 +++++++----- 42 files changed, 1053 insertions(+), 623 deletions(-) delete mode 100644 src/modules/user-related/user-privilege/data/model/user-privilege.model.ts create mode 100644 src/modules/user-related/user-privilege/data/models/user-privilege-configuration.model.ts create mode 100644 src/modules/user-related/user-privilege/data/models/user-privilege.model.ts create mode 100644 src/modules/user-related/user-privilege/data/service/user-privilege-configuration.service.ts create mode 100644 src/modules/user-related/user-privilege/domain/entities/user-privilege-configuration.entity.ts delete mode 100644 src/modules/user-related/user-privilege/domain/usecases/managers/active-user-privilege.manager.ts delete mode 100644 src/modules/user-related/user-privilege/domain/usecases/managers/confirm-user-privilege.manager.ts delete mode 100644 src/modules/user-related/user-privilege/domain/usecases/managers/create-user-privilege.manager.ts delete mode 100644 src/modules/user-related/user-privilege/domain/usecases/managers/delete-user-privilege.manager.ts delete mode 100644 src/modules/user-related/user-privilege/domain/usecases/managers/detail-user-privilege.manager.ts delete mode 100644 src/modules/user-related/user-privilege/domain/usecases/managers/inactive-user-privilege.manager.ts delete mode 100644 src/modules/user-related/user-privilege/domain/usecases/managers/index-user-privilege.manager.ts delete mode 100644 src/modules/user-related/user-privilege/domain/usecases/managers/update-user-privilege.manager.ts create mode 100644 src/modules/user-related/user-privilege/domain/usecases/user-privilege-configuration/helpers/generate-user-privilege-configuration.helper.ts create mode 100644 src/modules/user-related/user-privilege/domain/usecases/user-privilege-configuration/managers/update-user-privilege-configuration.manager.ts create mode 100644 src/modules/user-related/user-privilege/domain/usecases/user-privilege-configuration/user-privilege-configuration-data.orchestrator.ts delete mode 100644 src/modules/user-related/user-privilege/domain/usecases/user-privilege-data.orchestrator.ts delete mode 100644 src/modules/user-related/user-privilege/domain/usecases/user-privilege-read.orchestrator.ts create mode 100644 src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/active-user-privilege.manager.ts create mode 100644 src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/batch-active-user-privilege.manager.ts create mode 100644 src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/batch-confirm-user-privilege.manager.ts create mode 100644 src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/batch-delete-user-privilege.manager.ts create mode 100644 src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/batch-inactive-user-privilege.manager.ts create mode 100644 src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/confirm-user-privilege.manager.ts create mode 100644 src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/create-user-privilege.manager.ts create mode 100644 src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/delete-user-privilege.manager.ts create mode 100644 src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/inactive-user-privilege.manager.ts create mode 100644 src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/update-user-privilege.manager.ts create mode 100644 src/modules/user-related/user-privilege/domain/usecases/user-privilege/user-privilege-data.orchestrator.ts create mode 100644 src/modules/user-related/user-privilege/infrastructure/dto/user-privilege-configuration.dto.ts create mode 100644 src/modules/user-related/user-privilege/infrastructure/user-privilege-configuration.controller.ts diff --git a/src/modules/user-related/user-privilege/constants.ts b/src/modules/user-related/user-privilege/constants.ts index e69de29..1dae8d3 100644 --- a/src/modules/user-related/user-privilege/constants.ts +++ b/src/modules/user-related/user-privilege/constants.ts @@ -0,0 +1,7 @@ +import { UserPrivilegeConfigurationModel } from './data/models/user-privilege-configuration.model'; +import { UserPrivilegeModel } from './data/models/user-privilege.model'; + +export const UserPrivilegeModels = [ + UserPrivilegeModel, + UserPrivilegeConfigurationModel, +]; diff --git a/src/modules/user-related/user-privilege/data/model/user-privilege.model.ts b/src/modules/user-related/user-privilege/data/model/user-privilege.model.ts deleted file mode 100644 index 9b9b3ae..0000000 --- a/src/modules/user-related/user-privilege/data/model/user-privilege.model.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { BaseStatusModel } from "src/core/modules/data/model/base-status.model"; -import { TABLE_NAME } from "src/core/strings/constants/table.constants"; -import { Column, Entity } from "typeorm"; -import { UserPrivilegeEntity } from "../../domain/entities/user-privilege.entity"; - -@Entity(TABLE_NAME.USER_PRIVILEGE) -export class UserPrivilegeModel extends BaseStatusModel implements UserPrivilegeEntity { - @Column('varchar', { name: 'name', length: 125 }) - name: string; -} \ No newline at end of file diff --git a/src/modules/user-related/user-privilege/data/models/user-privilege-configuration.model.ts b/src/modules/user-related/user-privilege/data/models/user-privilege-configuration.model.ts new file mode 100644 index 0000000..97f26b0 --- /dev/null +++ b/src/modules/user-related/user-privilege/data/models/user-privilege-configuration.model.ts @@ -0,0 +1,63 @@ +import { BaseCoreModel } from 'src/core/modules/data/model/base-core.model'; +import { TABLE_NAME } from 'src/core/strings/constants/table.constants'; +import { Column, Entity, JoinColumn, ManyToOne } from 'typeorm'; +import { UserPrivilegeConfigurationEntity } from '../../domain/entities/user-privilege-configuration.entity'; +import { UserPrivilegeModel } from './user-privilege.model'; + +@Entity(TABLE_NAME.USER_PRIVILEGE_CONFIGURATION) +export class UserPrivilegeConfigurationModel + extends BaseCoreModel + implements UserPrivilegeConfigurationEntity +{ + @Column('varchar', { name: 'module', length: 125 }) + module: string; + + @Column('varchar', { name: 'module_label', length: 125, nullable: true }) + module_label: string; + + @Column('varchar', { name: 'menu', length: 125 }) + menu: string; + + @Column('varchar', { name: 'menu_label', length: 125, nullable: true }) + menu_label: string; + + @Column('varchar', { name: 'sub_menu', length: 125, nullable: true }) + sub_menu: string; + + @Column('varchar', { name: 'sub_menu_label', length: 125, nullable: true }) + sub_menu_label: string; + + @Column('boolean', { nullable: true }) + view: boolean; + + @Column('boolean', { nullable: true }) + create: boolean; + + @Column('boolean', { nullable: true }) + edit: boolean; + + @Column('boolean', { nullable: true }) + delete: boolean; + + @Column('boolean', { nullable: true }) + cancel: boolean; + + @Column('boolean', { nullable: true }) + confirm: boolean; + + @Column('integer', { nullable: true, default: 0 }) + index: number; + + @Column('varchar', { name: 'user_privilege_id', nullable: true }) + user_privilege_id: string; + @ManyToOne( + () => UserPrivilegeModel, + (model) => model.user_privilege_configurations, + { + onUpdate: 'CASCADE', + onDelete: 'CASCADE', + }, + ) + @JoinColumn({ name: 'user_privilege_id' }) + user_privilege: UserPrivilegeModel; +} diff --git a/src/modules/user-related/user-privilege/data/models/user-privilege.model.ts b/src/modules/user-related/user-privilege/data/models/user-privilege.model.ts new file mode 100644 index 0000000..d319f2a --- /dev/null +++ b/src/modules/user-related/user-privilege/data/models/user-privilege.model.ts @@ -0,0 +1,32 @@ +import { BaseStatusModel } from 'src/core/modules/data/model/base-status.model'; +import { TABLE_NAME } from 'src/core/strings/constants/table.constants'; +import { Column, Entity, OneToMany } from 'typeorm'; +import { UserPrivilegeEntity } from '../../domain/entities/user-privilege.entity'; +import { UserPrivilegeConfigurationModel } from './user-privilege-configuration.model'; +import { UserModel } from 'src/modules/user-related/user/data/models/user.model'; + +@Entity(TABLE_NAME.USER_PRIVILEGE) +export class UserPrivilegeModel + extends BaseStatusModel + implements UserPrivilegeEntity +{ + @Column('varchar', { name: 'name', length: 125 }) + name: string; + + @OneToMany( + () => UserPrivilegeConfigurationModel, + (model) => model.user_privilege, + { + cascade: true, + onDelete: 'CASCADE', + onUpdate: 'CASCADE', + }, + ) + user_privilege_configurations: UserPrivilegeConfigurationModel[]; + + @OneToMany(() => UserModel, (model) => model.user_privilege, { + onDelete: 'CASCADE', + onUpdate: 'CASCADE', + }) + users: UserModel[]; +} diff --git a/src/modules/user-related/user-privilege/data/service/user-privilege-configuration.service.ts b/src/modules/user-related/user-privilege/data/service/user-privilege-configuration.service.ts new file mode 100644 index 0000000..615674b --- /dev/null +++ b/src/modules/user-related/user-privilege/data/service/user-privilege-configuration.service.ts @@ -0,0 +1,34 @@ +import { Injectable } from '@nestjs/common'; +import { BaseDataService } from 'src/core/modules/data/service/base-data.service'; +import { UserPrivilegeConfigurationEntity } from '../../domain/entities/user-privilege-configuration.entity'; +import { UserPrivilegeConfigurationModel } from '../models/user-privilege-configuration.model'; +import { CONNECTION_NAME } from 'src/core/strings/constants/base.constants'; +import { Repository, SelectQueryBuilder } from 'typeorm'; +import { InjectRepository } from '@nestjs/typeorm'; +import { FilterUserPrivilegeEntity } from '../../domain/entities/filter-user-privilege.entity'; +import { PaginationResponse } from 'src/core/response/domain/ok-response.interface'; + +@Injectable() +export class UserPrivilegeConfigurationService extends BaseDataService { + constructor( + @InjectRepository(UserPrivilegeConfigurationModel, CONNECTION_NAME.DEFAULT) + private repo: Repository, + ) { + super(repo); + } + + async getIndex( + queryBuilder: SelectQueryBuilder, + params: FilterUserPrivilegeEntity, + ): Promise> { + const [data, total] = await queryBuilder + .take(+params.limit) + .skip(+params.limit * +params.page - +params.limit) + .getManyAndCount(); + + return { + data, + total, + }; + } +} diff --git a/src/modules/user-related/user-privilege/data/service/user-privilege-data.service.ts b/src/modules/user-related/user-privilege/data/service/user-privilege-data.service.ts index cb4a52c..c09633d 100644 --- a/src/modules/user-related/user-privilege/data/service/user-privilege-data.service.ts +++ b/src/modules/user-related/user-privilege/data/service/user-privilege-data.service.ts @@ -1,19 +1,17 @@ -import { Injectable } from "@nestjs/common"; -import { BaseDataService } from "src/core/modules/data/service/base-data.service"; -import { UserPrivilegeEntity } from "../../domain/entities/user-privilege.entity"; -import { InjectRepository } from "@nestjs/typeorm"; -import { UserPrivilegeModel } from "../model/user-privilege.model"; -import { CONNECTION_NAME } from "src/core/strings/constants/base.constants"; -import { Repository } from "typeorm"; +import { Injectable } from '@nestjs/common'; +import { BaseDataService } from 'src/core/modules/data/service/base-data.service'; +import { UserPrivilegeEntity } from '../../domain/entities/user-privilege.entity'; +import { InjectRepository } from '@nestjs/typeorm'; +import { UserPrivilegeModel } from '../models/user-privilege.model'; +import { CONNECTION_NAME } from 'src/core/strings/constants/base.constants'; +import { Repository } from 'typeorm'; @Injectable() export class UserPrivilegeDataService extends BaseDataService { - - constructor( - @InjectRepository(UserPrivilegeModel, CONNECTION_NAME.DEFAULT) - private repo: Repository, - ) { + constructor( + @InjectRepository(UserPrivilegeModel, CONNECTION_NAME.DEFAULT) + private repo: Repository, + ) { super(repo); - } - -} \ No newline at end of file + } +} diff --git a/src/modules/user-related/user-privilege/domain/entities/event/user-privilege-change-status.event.ts b/src/modules/user-related/user-privilege/domain/entities/event/user-privilege-change-status.event.ts index 7876d81..82c23f0 100644 --- a/src/modules/user-related/user-privilege/domain/entities/event/user-privilege-change-status.event.ts +++ b/src/modules/user-related/user-privilege/domain/entities/event/user-privilege-change-status.event.ts @@ -1,5 +1,5 @@ -import { IEvent } from "@nestjs/cqrs"; +import { IEvent } from '@nestjs/cqrs'; export class UserPrivilegeChangeStatusEvent { - constructor(public readonly data: IEvent) {} -} \ No newline at end of file + constructor(public readonly data: IEvent) {} +} diff --git a/src/modules/user-related/user-privilege/domain/entities/event/user-privilege-created.event.ts b/src/modules/user-related/user-privilege/domain/entities/event/user-privilege-created.event.ts index 74423fa..28654e8 100644 --- a/src/modules/user-related/user-privilege/domain/entities/event/user-privilege-created.event.ts +++ b/src/modules/user-related/user-privilege/domain/entities/event/user-privilege-created.event.ts @@ -1,5 +1,5 @@ -import { IEvent } from "@nestjs/cqrs"; +import { IEvent } from '@nestjs/cqrs'; export class UserPrivilegeCreatedEvent { - constructor(public readonly data: IEvent) {} -} \ No newline at end of file + constructor(public readonly data: IEvent) {} +} diff --git a/src/modules/user-related/user-privilege/domain/entities/event/user-privilege-deleted.event.ts b/src/modules/user-related/user-privilege/domain/entities/event/user-privilege-deleted.event.ts index d6d6ac2..2a93679 100644 --- a/src/modules/user-related/user-privilege/domain/entities/event/user-privilege-deleted.event.ts +++ b/src/modules/user-related/user-privilege/domain/entities/event/user-privilege-deleted.event.ts @@ -1,5 +1,5 @@ -import { IEvent } from "@nestjs/cqrs"; +import { IEvent } from '@nestjs/cqrs'; export class UserPrivilegeDeletedEvent { - constructor(public readonly data: IEvent) {} -} \ No newline at end of file + constructor(public readonly data: IEvent) {} +} diff --git a/src/modules/user-related/user-privilege/domain/entities/event/user-privilege-updated.event.ts b/src/modules/user-related/user-privilege/domain/entities/event/user-privilege-updated.event.ts index 31826b8..145a18c 100644 --- a/src/modules/user-related/user-privilege/domain/entities/event/user-privilege-updated.event.ts +++ b/src/modules/user-related/user-privilege/domain/entities/event/user-privilege-updated.event.ts @@ -1,5 +1,5 @@ -import { IEvent } from "@nestjs/cqrs"; +import { IEvent } from '@nestjs/cqrs'; export class UserPrivilegeUpdatedEvent { - constructor(public readonly data: IEvent) {} -} \ No newline at end of file + constructor(public readonly data: IEvent) {} +} diff --git a/src/modules/user-related/user-privilege/domain/entities/user-privilege-configuration.entity.ts b/src/modules/user-related/user-privilege/domain/entities/user-privilege-configuration.entity.ts new file mode 100644 index 0000000..e0b6158 --- /dev/null +++ b/src/modules/user-related/user-privilege/domain/entities/user-privilege-configuration.entity.ts @@ -0,0 +1,17 @@ +import { BaseCoreEntity } from 'src/core/modules/domain/entities/base-core.entity'; + +export interface UserPrivilegeConfigurationEntity extends BaseCoreEntity { + module: string; + module_label: string; + menu: string; + menu_label: string; + sub_menu: string; + sub_menu_label: string; + view: boolean; + create: boolean; + edit: boolean; + delete: boolean; + cancel: boolean; + confirm: boolean; + index: number; +} diff --git a/src/modules/user-related/user-privilege/domain/entities/user-privilege.entity.ts b/src/modules/user-related/user-privilege/domain/entities/user-privilege.entity.ts index 11a4487..a7bde1a 100644 --- a/src/modules/user-related/user-privilege/domain/entities/user-privilege.entity.ts +++ b/src/modules/user-related/user-privilege/domain/entities/user-privilege.entity.ts @@ -1,5 +1,5 @@ -import { BaseStatusEntity } from "src/core/modules/domain/entities/base-status.entity"; +import { BaseStatusEntity } from 'src/core/modules/domain/entities/base-status.entity'; export interface UserPrivilegeEntity extends BaseStatusEntity { - name: string; -} \ No newline at end of file + name: string; +} diff --git a/src/modules/user-related/user-privilege/domain/usecases/managers/active-user-privilege.manager.ts b/src/modules/user-related/user-privilege/domain/usecases/managers/active-user-privilege.manager.ts deleted file mode 100644 index 3214502..0000000 --- a/src/modules/user-related/user-privilege/domain/usecases/managers/active-user-privilege.manager.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { BaseUpdateStatusManager } from "src/core/modules/domain/usecase/managers/base-update-status.manager"; -import { UserPrivilegeEntity } from "../../entities/user-privilege.entity"; -import { EventTopics } from "src/core/strings/constants/interface.constants"; -import { UserPrivilegeModel } from "../../../data/model/user-privilege.model"; -import { UserPrivilegeChangeStatusEvent } from "../../entities/event/user-privilege-change-status.event"; - -@Injectable() -export class ActiveUserPrivilegeManager extends BaseUpdateStatusManager { - - getResult(): string { - return `Success active data ${this.result.name}`; - } - - async validateProcess(): Promise { - return; - } - - async beforeProcess(): Promise { - return; - } - - async afterProcess(): Promise { - return; - } - - get entityTarget(): any { - return UserPrivilegeModel; - } - - get eventTopics(): EventTopics[] { - return [ - { - topic: UserPrivilegeChangeStatusEvent, - data: this.data, - } - ]; - } -} \ No newline at end of file diff --git a/src/modules/user-related/user-privilege/domain/usecases/managers/confirm-user-privilege.manager.ts b/src/modules/user-related/user-privilege/domain/usecases/managers/confirm-user-privilege.manager.ts deleted file mode 100644 index e1c7019..0000000 --- a/src/modules/user-related/user-privilege/domain/usecases/managers/confirm-user-privilege.manager.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { BaseUpdateStatusManager } from "src/core/modules/domain/usecase/managers/base-update-status.manager"; -import { UserPrivilegeEntity } from "../../entities/user-privilege.entity"; -import { EventTopics } from "src/core/strings/constants/interface.constants"; -import { UserPrivilegeModel } from "../../../data/model/user-privilege.model"; -import { UserPrivilegeChangeStatusEvent } from "../../entities/event/user-privilege-change-status.event"; - -@Injectable() -export class ConfirmUserPrivilegeManager extends BaseUpdateStatusManager { - - getResult(): string { - return `Success active data ${this.result.name}`; - } - - async validateProcess(): Promise { - return; - } - - async beforeProcess(): Promise { - return; - } - - async afterProcess(): Promise { - return; - } - - get entityTarget(): any { - return UserPrivilegeModel; - } - - get eventTopics(): EventTopics[] { - return [ - { - topic: UserPrivilegeChangeStatusEvent, - data: this.data, - } - ]; - } -} \ No newline at end of file diff --git a/src/modules/user-related/user-privilege/domain/usecases/managers/create-user-privilege.manager.ts b/src/modules/user-related/user-privilege/domain/usecases/managers/create-user-privilege.manager.ts deleted file mode 100644 index a21208a..0000000 --- a/src/modules/user-related/user-privilege/domain/usecases/managers/create-user-privilege.manager.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { BaseCreateManager } from "src/core/modules/domain/usecase/managers/base-create.manager"; -import { UserPrivilegeEntity } from "../../entities/user-privilege.entity"; -import { Injectable } from "@nestjs/common"; -import { UserPrivilegeModel } from "../../../data/model/user-privilege.model"; -import { EventTopics } from "src/core/strings/constants/interface.constants"; -import { UserPrivilegeCreatedEvent } from "../../entities/event/user-privilege-created.event"; - -@Injectable() -export class CreateUserPrivilegeManager extends BaseCreateManager { - - async validateProcess(): Promise { - return; - } - - async beforeProcess(): Promise { - return; - } - - async afterProcess(): Promise { - return; - } - - get eventTopics(): EventTopics[] { - return [ - { - topic: UserPrivilegeCreatedEvent, - data: this.data, - } - ]; - } - - get entityTarget(): any { - return UserPrivilegeModel; - } -} \ No newline at end of file diff --git a/src/modules/user-related/user-privilege/domain/usecases/managers/delete-user-privilege.manager.ts b/src/modules/user-related/user-privilege/domain/usecases/managers/delete-user-privilege.manager.ts deleted file mode 100644 index a1536ce..0000000 --- a/src/modules/user-related/user-privilege/domain/usecases/managers/delete-user-privilege.manager.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { BaseDeleteManager } from "src/core/modules/domain/usecase/managers/base-delete.manager"; -import { UserPrivilegeEntity } from "../../entities/user-privilege.entity"; -import { EventTopics } from "src/core/strings/constants/interface.constants"; -import { UserPrivilegeModel } from "../../../data/model/user-privilege.model"; -import { UserPrivilegeDeletedEvent } from "../../entities/event/user-privilege-deleted.event"; - -@Injectable() -export class DeleteUserPrivilegeManager extends BaseDeleteManager { - - getResult(): string { - return `Success`; - } - - async validateProcess(): Promise { - return; - } - - async beforeProcess(): Promise { - return; - } - - async afterProcess(): Promise { - return; - } - - get entityTarget(): any { - return UserPrivilegeModel; - } - - get eventTopics(): EventTopics[] { - return [ - { - topic: UserPrivilegeDeletedEvent, - data: this.data, - } - ]; - } -} \ No newline at end of file diff --git a/src/modules/user-related/user-privilege/domain/usecases/managers/detail-user-privilege.manager.ts b/src/modules/user-related/user-privilege/domain/usecases/managers/detail-user-privilege.manager.ts deleted file mode 100644 index e2cae0a..0000000 --- a/src/modules/user-related/user-privilege/domain/usecases/managers/detail-user-privilege.manager.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { BaseDetailManager } from "src/core/modules/domain/usecase/managers/base-detail.manager"; -import { UserPrivilegeEntity } from "../../entities/user-privilege.entity"; -import { FindOneOptions } from "typeorm"; -import { TABLE_NAME } from "src/core/strings/constants/table.constants"; - -@Injectable() -export class DetailUserPrivilegeManager extends BaseDetailManager { - - get setFindProperties(): any { - return { - id: this.dataId - } - } - - get selectData(): string[] { - return [ - 'id', - ]; - } - - get relationData(): string[] { - return []; - } - - - async prepareData(): Promise { - this.tableName = TABLE_NAME.USER_PRIVILEGE; - return; - } - - async beforeProcess(): Promise { - return; - } - - async afterProcess(): Promise { - return; - } -} \ No newline at end of file diff --git a/src/modules/user-related/user-privilege/domain/usecases/managers/inactive-user-privilege.manager.ts b/src/modules/user-related/user-privilege/domain/usecases/managers/inactive-user-privilege.manager.ts deleted file mode 100644 index bfb38af..0000000 --- a/src/modules/user-related/user-privilege/domain/usecases/managers/inactive-user-privilege.manager.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { BaseUpdateStatusManager } from "src/core/modules/domain/usecase/managers/base-update-status.manager"; -import { UserPrivilegeEntity } from "../../entities/user-privilege.entity"; -import { EventTopics } from "src/core/strings/constants/interface.constants"; -import { UserPrivilegeModel } from "../../../data/model/user-privilege.model"; -import { UserPrivilegeChangeStatusEvent } from "../../entities/event/user-privilege-change-status.event"; - -@Injectable() -export class InactiveUserPrivilegeManager extends BaseUpdateStatusManager { - - getResult(): string { - return `Success inactive data ${this.result.name}`; - } - - async validateProcess(): Promise { - return; - } - - async beforeProcess(): Promise { - return; - } - - async afterProcess(): Promise { - return; - } - - get entityTarget(): any { - return UserPrivilegeModel; - } - - get eventTopics(): EventTopics[] { - return [ - { - topic: UserPrivilegeChangeStatusEvent, - data: this.data, - } - ]; - } -} \ No newline at end of file diff --git a/src/modules/user-related/user-privilege/domain/usecases/managers/index-user-privilege.manager.ts b/src/modules/user-related/user-privilege/domain/usecases/managers/index-user-privilege.manager.ts deleted file mode 100644 index 3174ada..0000000 --- a/src/modules/user-related/user-privilege/domain/usecases/managers/index-user-privilege.manager.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { BaseIndexManager } from "src/core/modules/domain/usecase/managers/base-index.manager"; -import { UserPrivilegeEntity } from "../../entities/user-privilege.entity"; -import { SelectQueryBuilder } from "typeorm"; -import { BaseFilterEntity } from "src/core/modules/domain/entities/base-filter.entity"; -import { TABLE_NAME } from "src/core/strings/constants/table.constants"; -import { Param } from "src/core/helpers/query/specific-search.helper"; - -@Injectable() -export class IndexUserPrivilegeManager extends BaseIndexManager { - - async prepareData(): Promise { - this.tableName = TABLE_NAME.USER_PRIVILEGE; - return - } - - async beforeProcess(): Promise { - return - } - - async afterProcess(): Promise { - return - } - - get specificFilter(): Param[] { - return []; - } - - setQueryFilter( - queryBuilder: SelectQueryBuilder - ): SelectQueryBuilder { - - if (this.filterParam.q) { - queryBuilder.andWhere('status = :q', { - q: this.filterParam.q - }) - } - - return queryBuilder; - } - - setFilterSearch(): string[] { - return []; - } -} \ No newline at end of file diff --git a/src/modules/user-related/user-privilege/domain/usecases/managers/update-user-privilege.manager.ts b/src/modules/user-related/user-privilege/domain/usecases/managers/update-user-privilege.manager.ts deleted file mode 100644 index 5bfe0aa..0000000 --- a/src/modules/user-related/user-privilege/domain/usecases/managers/update-user-privilege.manager.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { BaseUpdateManager } from "src/core/modules/domain/usecase/managers/base-update.manager"; -import { UserPrivilegeEntity } from "../../entities/user-privilege.entity"; -import { EventTopics } from "src/core/strings/constants/interface.constants"; -import { UserPrivilegeModel } from "../../../data/model/user-privilege.model"; -import { UserPrivilegeUpdatedEvent } from "../../entities/event/user-privilege-updated.event"; - -@Injectable() -export class UpdateUserPrivilegeManager extends BaseUpdateManager { - - async validateProcess(): Promise { - return; - } - - async beforeProcess(): Promise { - return; - } - - async afterProcess(): Promise { - return; - } - - get entityTarget(): any { - return UserPrivilegeModel; - } - - get eventTopics(): EventTopics[] { - return [ - { - topic: UserPrivilegeUpdatedEvent, - data: this.data, - } - ]; - } -} \ No newline at end of file diff --git a/src/modules/user-related/user-privilege/domain/usecases/user-privilege-configuration/helpers/generate-user-privilege-configuration.helper.ts b/src/modules/user-related/user-privilege/domain/usecases/user-privilege-configuration/helpers/generate-user-privilege-configuration.helper.ts new file mode 100644 index 0000000..28bc4c3 --- /dev/null +++ b/src/modules/user-related/user-privilege/domain/usecases/user-privilege-configuration/helpers/generate-user-privilege-configuration.helper.ts @@ -0,0 +1,33 @@ +import { + PrivilegeAdminConstant, + PrivilegePOSConstant, +} from 'src/core/strings/constants/privilege.constants'; + +export class UserPrivilegeConfigurationHelper { + static createConfigurations() { + const privilege = [ + ...PrivilegeAdminConstant.map((item) => { + return { + ...item, + module: 'ADMIN_PAGE', + module_label: 'Admin Page', + }; + }), + ...PrivilegePOSConstant.map((item) => { + return { + ...item, + module: 'POS', + module_label: 'Point of Sales', + }; + }), + ]; + + privilege?.forEach((item) => { + item.actions?.forEach((element) => { + item[element] = false; + }); + }); + + return privilege; + } +} diff --git a/src/modules/user-related/user-privilege/domain/usecases/user-privilege-configuration/managers/update-user-privilege-configuration.manager.ts b/src/modules/user-related/user-privilege/domain/usecases/user-privilege-configuration/managers/update-user-privilege-configuration.manager.ts new file mode 100644 index 0000000..4977ed0 --- /dev/null +++ b/src/modules/user-related/user-privilege/domain/usecases/user-privilege-configuration/managers/update-user-privilege-configuration.manager.ts @@ -0,0 +1,42 @@ +import { Injectable } from '@nestjs/common'; +import { UserPrivilegeConfigurationEntity } from '../../../entities/user-privilege-configuration.entity'; +import { EventTopics } from 'src/core/strings/constants/interface.constants'; +import { BaseCustomManager } from 'src/core/modules/domain/usecase/managers/base-custom.manager'; +import { UserPrivilegeConfigurationModel } from 'src/modules/user-related/user-privilege/data/models/user-privilege-configuration.model'; + +@Injectable() +export class UpdateUserPrivilegeConfigurationManager extends BaseCustomManager { + async validateProcess(): Promise { + return; + } + + async beforeProcess(): Promise { + return; + } + + async process(): Promise { + this.result = await this.dataService.update( + this.queryRunner, + this.entityTarget, + { id: this.data.id }, + this.data, + ); + return; + } + + async afterProcess(): Promise { + return; + } + + getResult() { + return this.result; + } + + get entityTarget(): any { + return UserPrivilegeConfigurationModel; + } + + get eventTopics(): EventTopics[] { + return []; + } +} diff --git a/src/modules/user-related/user-privilege/domain/usecases/user-privilege-configuration/user-privilege-configuration-data.orchestrator.ts b/src/modules/user-related/user-privilege/domain/usecases/user-privilege-configuration/user-privilege-configuration-data.orchestrator.ts new file mode 100644 index 0000000..966251b --- /dev/null +++ b/src/modules/user-related/user-privilege/domain/usecases/user-privilege-configuration/user-privilege-configuration-data.orchestrator.ts @@ -0,0 +1,31 @@ +import { Injectable } from '@nestjs/common'; +import { UpdateUserPrivilegeConfigurationManager } from './managers/update-user-privilege-configuration.manager'; +import { UserPrivilegeConfigurationEntity } from '../../entities/user-privilege-configuration.entity'; +import { UserPrivilegeConfigurationService } from '../../../data/service/user-privilege-configuration.service'; +import { IndexUserPrivilegeConfigurationManager } from './managers/index-user-privilege-configuration.manager'; +import { PaginationResponse } from 'src/core/response/domain/ok-response.interface'; + +@Injectable() +export class UserPrivilegeConfigurationDataOrchestrator { + constructor( + private updateManager: UpdateUserPrivilegeConfigurationManager, + private indexManager: IndexUserPrivilegeConfigurationManager, + private serviceData: UserPrivilegeConfigurationService, + ) {} + + async update(data): Promise { + this.updateManager.setData(data); + this.updateManager.setService(this.serviceData); + await this.updateManager.execute(); + return this.updateManager.getResult(); + } + + async index( + params, + ): Promise> { + this.indexManager.setFilterParam(params); + this.indexManager.setService(this.serviceData); + await this.indexManager.execute(); + return this.indexManager.getResult(); + } +} diff --git a/src/modules/user-related/user-privilege/domain/usecases/user-privilege-data.orchestrator.ts b/src/modules/user-related/user-privilege/domain/usecases/user-privilege-data.orchestrator.ts deleted file mode 100644 index 1ab973e..0000000 --- a/src/modules/user-related/user-privilege/domain/usecases/user-privilege-data.orchestrator.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { CreateUserPrivilegeManager } from "./managers/create-user-privilege.manager"; -import { UserPrivilegeDataService } from "../../data/service/user-privilege-data.service"; -import { UserPrivilegeEntity } from "../entities/user-privilege.entity"; -import { DeleteUserPrivilegeManager } from "./managers/delete-user-privilege.manager"; -import { UpdateUserPrivilegeManager } from "./managers/update-user-privilege.manager"; -import { BaseDataTransactionOrchestrator } from "src/core/modules/domain/usecase/orchestrators/base-data-transaction.orchestrator"; -import { ActiveUserPrivilegeManager } from "./managers/active-user-privilege.manager"; -import { InactiveUserPrivilegeManager } from "./managers/inactive-user-privilege.manager"; -import { ConfirmUserPrivilegeManager } from "./managers/confirm-user-privilege.manager"; -import { STATUS } from "src/core/strings/constants/base.constants"; - -@Injectable() -export class UserPrivilegeDataOrchestrator extends BaseDataTransactionOrchestrator { - - constructor( - private createManager: CreateUserPrivilegeManager, - private updateManager: UpdateUserPrivilegeManager, - private deleteManager: DeleteUserPrivilegeManager, - private activeManager: ActiveUserPrivilegeManager, - private confirmManager: ConfirmUserPrivilegeManager, - private inactiveManager: InactiveUserPrivilegeManager, - private serviceData: UserPrivilegeDataService, - ) { - super(); - } - - async create(data): Promise { - this.createManager.setData(data); - this.createManager.setService(this.serviceData); - await this.createManager.execute() - return this.createManager.getResult(); - } - - async update(dataId, data): Promise { - this.updateManager.setData(dataId, data); - this.updateManager.setService(this.serviceData); - await this.updateManager.execute(); - return this.updateManager.getResult(); - } - - async delete(dataId): Promise { - this.deleteManager.setData(dataId); - this.deleteManager.setService(this.serviceData); - await this.deleteManager.execute(); - return this.deleteManager.getResult(); - } - - async active(dataId): Promise { - this.activeManager.setData(dataId, STATUS.ACTIVE) - this.activeManager.setService(this.serviceData); - await this.activeManager.execute(); - return this.activeManager.getResult(); - } - - async confirm(dataId): Promise { - this.confirmManager.setData(dataId, STATUS.ACTIVE) - this.confirmManager.setService(this.serviceData); - await this.confirmManager.execute(); - return this.confirmManager.getResult(); - } - - async inactive(dataId): Promise { - this.inactiveManager.setData(dataId, STATUS.INACTIVE) - this.inactiveManager.setService(this.serviceData); - await this.inactiveManager.execute(); - return this.inactiveManager.getResult(); - } -} \ No newline at end of file diff --git a/src/modules/user-related/user-privilege/domain/usecases/user-privilege-read.orchestrator.ts b/src/modules/user-related/user-privilege/domain/usecases/user-privilege-read.orchestrator.ts deleted file mode 100644 index fb74975..0000000 --- a/src/modules/user-related/user-privilege/domain/usecases/user-privilege-read.orchestrator.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { IndexUserPrivilegeManager } from "./managers/index-user-privilege.manager"; -import { UserPrivilegeReadService } from "../../data/service/user-privilege-read.service"; -import { UserPrivilegeEntity } from "../entities/user-privilege.entity"; -import { PaginationResponse } from "src/core/response/domain/ok-response.interface"; -import { BaseReadOrchestrator } from "src/core/modules/domain/usecase/orchestrators/base-read.orchestrator"; -import { DetailUserPrivilegeManager } from "./managers/detail-user-privilege.manager"; - -@Injectable() -export class UserPrivilegeReadOrchestrator extends BaseReadOrchestrator { - - constructor( - private indexManager: IndexUserPrivilegeManager, - private detailManager: DetailUserPrivilegeManager, - private serviceData: UserPrivilegeReadService, - ) { - super(); - } - - async index(params): Promise> { - this.indexManager.setFilterParam(params) - this.indexManager.setService(this.serviceData) - await this.indexManager.execute() - return this.indexManager.getResult(); - } - - async detail(dataId: string): Promise { - this.detailManager.setData(dataId); - this.detailManager.setService(this.serviceData); - await this.detailManager.execute(); - return this.detailManager.getResult(); - } -} \ No newline at end of file diff --git a/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/active-user-privilege.manager.ts b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/active-user-privilege.manager.ts new file mode 100644 index 0000000..346a7e9 --- /dev/null +++ b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/active-user-privilege.manager.ts @@ -0,0 +1,38 @@ +import { Injectable } from '@nestjs/common'; +import { BaseUpdateStatusManager } from 'src/core/modules/domain/usecase/managers/base-update-status.manager'; +import { UserPrivilegeEntity } from '../../../entities/user-privilege.entity'; +import { EventTopics } from 'src/core/strings/constants/interface.constants'; +import { UserPrivilegeModel } from '../../../../data/models/user-privilege.model'; +import { UserPrivilegeChangeStatusEvent } from '../../../entities/event/user-privilege-change-status.event'; + +@Injectable() +export class ActiveUserPrivilegeManager extends BaseUpdateStatusManager { + getResult(): string { + return `Success active data ${this.result.name}`; + } + + async validateProcess(): Promise { + return; + } + + async beforeProcess(): Promise { + return; + } + + async afterProcess(): Promise { + return; + } + + get entityTarget(): any { + return UserPrivilegeModel; + } + + get eventTopics(): EventTopics[] { + return [ + { + topic: UserPrivilegeChangeStatusEvent, + data: this.data, + }, + ]; + } +} diff --git a/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/batch-active-user-privilege.manager.ts b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/batch-active-user-privilege.manager.ts new file mode 100644 index 0000000..50da0d6 --- /dev/null +++ b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/batch-active-user-privilege.manager.ts @@ -0,0 +1,36 @@ +import { BaseBatchUpdateStatusManager } from 'src/core/modules/domain/usecase/managers/base-batch-update-status.manager'; +import { UserPrivilegeEntity } from '../../../entities/user-privilege.entity'; +import { EventTopics } from 'src/core/strings/constants/interface.constants'; +import { UserPrivilegeModel } from '../../../../data/models/user-privilege.model'; +import { UserPrivilegeChangeStatusEvent } from '../../../entities/event/user-privilege-change-status.event'; +import { BatchResult } from 'src/core/response/domain/ok-response.interface'; + +export class BatchActiveUserPrivilegeManager extends BaseBatchUpdateStatusManager { + validateData(data: UserPrivilegeEntity): Promise { + return; + } + + beforeProcess(): Promise { + return; + } + + afterProcess(): Promise { + return; + } + + get entityTarget(): any { + return UserPrivilegeModel; + } + + get eventTopics(): EventTopics[] { + return [ + { + topic: UserPrivilegeChangeStatusEvent, + }, + ]; + } + + getResult(): BatchResult { + return this.result; + } +} diff --git a/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/batch-confirm-user-privilege.manager.ts b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/batch-confirm-user-privilege.manager.ts new file mode 100644 index 0000000..9d4606c --- /dev/null +++ b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/batch-confirm-user-privilege.manager.ts @@ -0,0 +1,36 @@ +import { BaseBatchUpdateStatusManager } from 'src/core/modules/domain/usecase/managers/base-batch-update-status.manager'; +import { UserPrivilegeEntity } from '../../../entities/user-privilege.entity'; +import { EventTopics } from 'src/core/strings/constants/interface.constants'; +import { UserPrivilegeModel } from '../../../../data/models/user-privilege.model'; +import { UserPrivilegeChangeStatusEvent } from '../../../entities/event/user-privilege-change-status.event'; +import { BatchResult } from 'src/core/response/domain/ok-response.interface'; + +export class BatchConfirmUserPrivilegeManager extends BaseBatchUpdateStatusManager { + validateData(data: UserPrivilegeEntity): Promise { + return; + } + + beforeProcess(): Promise { + return; + } + + afterProcess(): Promise { + return; + } + + get entityTarget(): any { + return UserPrivilegeModel; + } + + get eventTopics(): EventTopics[] { + return [ + { + topic: UserPrivilegeChangeStatusEvent, + }, + ]; + } + + getResult(): BatchResult { + return this.result; + } +} diff --git a/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/batch-delete-user-privilege.manager.ts b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/batch-delete-user-privilege.manager.ts new file mode 100644 index 0000000..9532e16 --- /dev/null +++ b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/batch-delete-user-privilege.manager.ts @@ -0,0 +1,36 @@ +import { BaseBatchDeleteManager } from 'src/core/modules/domain/usecase/managers/base-batch-delete.manager'; +import { UserPrivilegeEntity } from '../../../entities/user-privilege.entity'; +import { EventTopics } from 'src/core/strings/constants/interface.constants'; +import { UserPrivilegeModel } from '../../../../data/models/user-privilege.model'; +import { UserPrivilegeDeletedEvent } from '../../../entities/event/user-privilege-deleted.event'; +import { BatchResult } from 'src/core/response/domain/ok-response.interface'; + +export class BatchDeleteUserPrivilegeManager extends BaseBatchDeleteManager { + async beforeProcess(): Promise { + return; + } + + async validateData(data: UserPrivilegeEntity): Promise { + return; + } + + async afterProcess(): Promise { + return; + } + + get entityTarget(): any { + return UserPrivilegeModel; + } + + get eventTopics(): EventTopics[] { + return [ + { + topic: UserPrivilegeDeletedEvent, + }, + ]; + } + + getResult(): BatchResult { + return this.result; + } +} diff --git a/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/batch-inactive-user-privilege.manager.ts b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/batch-inactive-user-privilege.manager.ts new file mode 100644 index 0000000..b3084e9 --- /dev/null +++ b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/batch-inactive-user-privilege.manager.ts @@ -0,0 +1,36 @@ +import { BaseBatchUpdateStatusManager } from 'src/core/modules/domain/usecase/managers/base-batch-update-status.manager'; +import { UserPrivilegeEntity } from '../../../entities/user-privilege.entity'; +import { EventTopics } from 'src/core/strings/constants/interface.constants'; +import { UserPrivilegeModel } from '../../../../data/models/user-privilege.model'; +import { UserPrivilegeChangeStatusEvent } from '../../../entities/event/user-privilege-change-status.event'; +import { BatchResult } from 'src/core/response/domain/ok-response.interface'; + +export class BatchInactiveUserPrivilegeManager extends BaseBatchUpdateStatusManager { + validateData(data: UserPrivilegeEntity): Promise { + return; + } + + beforeProcess(): Promise { + return; + } + + afterProcess(): Promise { + return; + } + + get entityTarget(): any { + return UserPrivilegeModel; + } + + get eventTopics(): EventTopics[] { + return [ + { + topic: UserPrivilegeChangeStatusEvent, + }, + ]; + } + + getResult(): BatchResult { + return this.result; + } +} diff --git a/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/confirm-user-privilege.manager.ts b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/confirm-user-privilege.manager.ts new file mode 100644 index 0000000..1739b3c --- /dev/null +++ b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/confirm-user-privilege.manager.ts @@ -0,0 +1,38 @@ +import { Injectable } from '@nestjs/common'; +import { BaseUpdateStatusManager } from 'src/core/modules/domain/usecase/managers/base-update-status.manager'; +import { UserPrivilegeEntity } from '../../../entities/user-privilege.entity'; +import { EventTopics } from 'src/core/strings/constants/interface.constants'; +import { UserPrivilegeModel } from '../../../../data/models/user-privilege.model'; +import { UserPrivilegeChangeStatusEvent } from '../../../entities/event/user-privilege-change-status.event'; + +@Injectable() +export class ConfirmUserPrivilegeManager extends BaseUpdateStatusManager { + getResult(): string { + return `Success active data ${this.result.name}`; + } + + async validateProcess(): Promise { + return; + } + + async beforeProcess(): Promise { + return; + } + + async afterProcess(): Promise { + return; + } + + get entityTarget(): any { + return UserPrivilegeModel; + } + + get eventTopics(): EventTopics[] { + return [ + { + topic: UserPrivilegeChangeStatusEvent, + data: this.data, + }, + ]; + } +} diff --git a/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/create-user-privilege.manager.ts b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/create-user-privilege.manager.ts new file mode 100644 index 0000000..76f0a90 --- /dev/null +++ b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/create-user-privilege.manager.ts @@ -0,0 +1,42 @@ +import { BaseCreateManager } from 'src/core/modules/domain/usecase/managers/base-create.manager'; +import { UserPrivilegeEntity } from '../../../entities/user-privilege.entity'; +import { Injectable } from '@nestjs/common'; +import { UserPrivilegeModel } from '../../../../data/models/user-privilege.model'; +import { EventTopics } from 'src/core/strings/constants/interface.constants'; +import { UserPrivilegeCreatedEvent } from '../../../entities/event/user-privilege-created.event'; +import { UserPrivilegeConfigurationHelper } from '../../user-privilege-configuration/helpers/generate-user-privilege-configuration.helper'; + +@Injectable() +export class CreateUserPrivilegeManager extends BaseCreateManager { + async beforeProcess(): Promise { + const configs = UserPrivilegeConfigurationHelper.createConfigurations(); + Object.assign(this.data, { + user_privilege_configurations: configs, + }); + + return; + } + + async afterProcess(): Promise { + return; + } + + async generateConfig(): Promise {} + + get uniqueColumns(): string[] { + return ['name']; + } + + get eventTopics(): EventTopics[] { + return [ + { + topic: UserPrivilegeCreatedEvent, + data: this.data, + }, + ]; + } + + get entityTarget(): any { + return UserPrivilegeModel; + } +} diff --git a/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/delete-user-privilege.manager.ts b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/delete-user-privilege.manager.ts new file mode 100644 index 0000000..eb24453 --- /dev/null +++ b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/delete-user-privilege.manager.ts @@ -0,0 +1,38 @@ +import { Injectable } from '@nestjs/common'; +import { BaseDeleteManager } from 'src/core/modules/domain/usecase/managers/base-delete.manager'; +import { UserPrivilegeEntity } from '../../../entities/user-privilege.entity'; +import { EventTopics } from 'src/core/strings/constants/interface.constants'; +import { UserPrivilegeModel } from '../../../../data/models/user-privilege.model'; +import { UserPrivilegeDeletedEvent } from '../../../entities/event/user-privilege-deleted.event'; + +@Injectable() +export class DeleteUserPrivilegeManager extends BaseDeleteManager { + getResult(): string { + return `Success`; + } + + async validateProcess(): Promise { + return; + } + + async beforeProcess(): Promise { + return; + } + + async afterProcess(): Promise { + return; + } + + get entityTarget(): any { + return UserPrivilegeModel; + } + + get eventTopics(): EventTopics[] { + return [ + { + topic: UserPrivilegeDeletedEvent, + data: this.data, + }, + ]; + } +} diff --git a/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/inactive-user-privilege.manager.ts b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/inactive-user-privilege.manager.ts new file mode 100644 index 0000000..33adec9 --- /dev/null +++ b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/inactive-user-privilege.manager.ts @@ -0,0 +1,38 @@ +import { Injectable } from '@nestjs/common'; +import { BaseUpdateStatusManager } from 'src/core/modules/domain/usecase/managers/base-update-status.manager'; +import { UserPrivilegeEntity } from '../../../entities/user-privilege.entity'; +import { EventTopics } from 'src/core/strings/constants/interface.constants'; +import { UserPrivilegeModel } from '../../../../data/models/user-privilege.model'; +import { UserPrivilegeChangeStatusEvent } from '../../../entities/event/user-privilege-change-status.event'; + +@Injectable() +export class InactiveUserPrivilegeManager extends BaseUpdateStatusManager { + getResult(): string { + return `Success inactive data ${this.result.name}`; + } + + async validateProcess(): Promise { + return; + } + + async beforeProcess(): Promise { + return; + } + + async afterProcess(): Promise { + return; + } + + get entityTarget(): any { + return UserPrivilegeModel; + } + + get eventTopics(): EventTopics[] { + return [ + { + topic: UserPrivilegeChangeStatusEvent, + data: this.data, + }, + ]; + } +} diff --git a/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/update-user-privilege.manager.ts b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/update-user-privilege.manager.ts new file mode 100644 index 0000000..38ed00e --- /dev/null +++ b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/managers/update-user-privilege.manager.ts @@ -0,0 +1,38 @@ +import { Injectable } from '@nestjs/common'; +import { BaseUpdateManager } from 'src/core/modules/domain/usecase/managers/base-update.manager'; +import { UserPrivilegeEntity } from '../../../entities/user-privilege.entity'; +import { EventTopics } from 'src/core/strings/constants/interface.constants'; +import { UserPrivilegeModel } from '../../../../data/models/user-privilege.model'; +import { UserPrivilegeUpdatedEvent } from '../../../entities/event/user-privilege-updated.event'; + +@Injectable() +export class UpdateUserPrivilegeManager extends BaseUpdateManager { + async validateProcess(): Promise { + return; + } + + async beforeProcess(): Promise { + return; + } + + async afterProcess(): Promise { + return; + } + + get uniqueColumns(): string[] { + return ['name']; + } + + get entityTarget(): any { + return UserPrivilegeModel; + } + + get eventTopics(): EventTopics[] { + return [ + { + topic: UserPrivilegeUpdatedEvent, + data: this.data, + }, + ]; + } +} diff --git a/src/modules/user-related/user-privilege/domain/usecases/user-privilege/user-privilege-data.orchestrator.ts b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/user-privilege-data.orchestrator.ts new file mode 100644 index 0000000..84b26d2 --- /dev/null +++ b/src/modules/user-related/user-privilege/domain/usecases/user-privilege/user-privilege-data.orchestrator.ts @@ -0,0 +1,106 @@ +import { Injectable } from '@nestjs/common'; +import { CreateUserPrivilegeManager } from './managers/create-user-privilege.manager'; +import { UserPrivilegeDataService } from '../../../data/service/user-privilege-data.service'; +import { UserPrivilegeEntity } from '../../entities/user-privilege.entity'; +import { DeleteUserPrivilegeManager } from './managers/delete-user-privilege.manager'; +import { UpdateUserPrivilegeManager } from './managers/update-user-privilege.manager'; +import { BaseDataTransactionOrchestrator } from 'src/core/modules/domain/usecase/orchestrators/base-data-transaction.orchestrator'; +import { ActiveUserPrivilegeManager } from './managers/active-user-privilege.manager'; +import { InactiveUserPrivilegeManager } from './managers/inactive-user-privilege.manager'; +import { ConfirmUserPrivilegeManager } from './managers/confirm-user-privilege.manager'; +import { STATUS } from 'src/core/strings/constants/base.constants'; +import { BatchResult } from 'src/core/response/domain/ok-response.interface'; +import { BatchConfirmUserPrivilegeManager } from './managers/batch-confirm-user-privilege.manager'; +import { BatchInactiveUserPrivilegeManager } from './managers/batch-inactive-user-privilege.manager'; +import { BatchActiveUserPrivilegeManager } from './managers/batch-active-user-privilege.manager'; +import { BatchDeleteUserPrivilegeManager } from './managers/batch-delete-user-privilege.manager'; + +@Injectable() +export class UserPrivilegeDataOrchestrator extends BaseDataTransactionOrchestrator { + constructor( + private createManager: CreateUserPrivilegeManager, + private updateManager: UpdateUserPrivilegeManager, + private deleteManager: DeleteUserPrivilegeManager, + private activeManager: ActiveUserPrivilegeManager, + private confirmManager: ConfirmUserPrivilegeManager, + private inactiveManager: InactiveUserPrivilegeManager, + private batchDeleteManager: BatchDeleteUserPrivilegeManager, + private batchActiveManager: BatchActiveUserPrivilegeManager, + private batchConfirmManager: BatchConfirmUserPrivilegeManager, + private batchInactiveManager: BatchInactiveUserPrivilegeManager, + private serviceData: UserPrivilegeDataService, + ) { + super(); + } + + async create(data): Promise { + this.createManager.setData(data); + this.createManager.setService(this.serviceData); + await this.createManager.execute(); + await this.createManager.generateConfig(); + return this.createManager.getResult(); + } + + async update(dataId, data): Promise { + this.updateManager.setData(dataId, data); + this.updateManager.setService(this.serviceData); + await this.updateManager.execute(); + return this.updateManager.getResult(); + } + + async delete(dataId): Promise { + this.deleteManager.setData(dataId); + this.deleteManager.setService(this.serviceData); + await this.deleteManager.execute(); + return this.deleteManager.getResult(); + } + + async batchDelete(dataIds: string[]): Promise { + this.batchDeleteManager.setData(dataIds); + this.batchDeleteManager.setService(this.serviceData); + await this.batchDeleteManager.execute(); + return this.batchDeleteManager.getResult(); + } + + async active(dataId): Promise { + this.activeManager.setData(dataId, STATUS.ACTIVE); + this.activeManager.setService(this.serviceData); + await this.activeManager.execute(); + return this.activeManager.getResult(); + } + + async batchActive(dataIds: string[]): Promise { + this.batchActiveManager.setData(dataIds, STATUS.ACTIVE); + this.batchActiveManager.setService(this.serviceData); + await this.batchActiveManager.execute(); + return this.batchActiveManager.getResult(); + } + + async confirm(dataId): Promise { + this.confirmManager.setData(dataId, STATUS.ACTIVE); + this.confirmManager.setService(this.serviceData); + await this.confirmManager.execute(); + return this.confirmManager.getResult(); + } + + async batchConfirm(dataIds: string[]): Promise { + this.batchConfirmManager.setData(dataIds, STATUS.ACTIVE); + this.batchConfirmManager.setService(this.serviceData); + await this.batchConfirmManager.execute(); + return this.batchConfirmManager.getResult(); + } + + async inactive(dataId): Promise { + this.inactiveManager.setData(dataId, STATUS.INACTIVE); + this.inactiveManager.setService(this.serviceData); + await this.inactiveManager.execute(); + return this.inactiveManager.getResult(); + } + + async batchInactive(dataIds: string[]): Promise { + this.batchInactiveManager.setData(dataIds, STATUS.INACTIVE); + this.batchInactiveManager.setService(this.serviceData); + await this.batchInactiveManager.execute(); + return this.batchInactiveManager.getResult(); + } +} diff --git a/src/modules/user-related/user-privilege/infrastructure/dto/create-user-privilege.dto.ts b/src/modules/user-related/user-privilege/infrastructure/dto/create-user-privilege.dto.ts index 9323908..eebe2bf 100644 --- a/src/modules/user-related/user-privilege/infrastructure/dto/create-user-privilege.dto.ts +++ b/src/modules/user-related/user-privilege/infrastructure/dto/create-user-privilege.dto.ts @@ -1,10 +1,13 @@ -import { BaseStatusDto } from "src/core/modules/infrastructure/dto/base-status.dto"; -import { UserPrivilegeEntity } from "../../domain/entities/user-privilege.entity"; -import { ApiProperty } from "@nestjs/swagger"; -import { IsString } from "class-validator"; +import { BaseStatusDto } from 'src/core/modules/infrastructure/dto/base-status.dto'; +import { UserPrivilegeEntity } from '../../domain/entities/user-privilege.entity'; +import { ApiProperty } from '@nestjs/swagger'; +import { IsString } from 'class-validator'; -export class CreateUserPrivilegeDto extends BaseStatusDto implements UserPrivilegeEntity { - @ApiProperty({ name: 'name', required: true }) - @IsString() - name: string; -} \ No newline at end of file +export class CreateUserPrivilegeDto + extends BaseStatusDto + implements UserPrivilegeEntity +{ + @ApiProperty({ name: 'name', required: true }) + @IsString() + name: string; +} diff --git a/src/modules/user-related/user-privilege/infrastructure/dto/user-privilege-configuration.dto.ts b/src/modules/user-related/user-privilege/infrastructure/dto/user-privilege-configuration.dto.ts new file mode 100644 index 0000000..cb5d38b --- /dev/null +++ b/src/modules/user-related/user-privilege/infrastructure/dto/user-privilege-configuration.dto.ts @@ -0,0 +1,83 @@ +import { BaseCoreDto } from 'src/core/modules/infrastructure/dto/base-core.dto'; +import { UserPrivilegeConfigurationEntity } from '../../domain/entities/user-privilege-configuration.entity'; +import { ApiProperty } from '@nestjs/swagger'; +import { IsBoolean, IsString, ValidateIf } from 'class-validator'; +import { Exclude } from 'class-transformer'; + +export class UserPrivilegeConfigurationDto + extends BaseCoreDto + implements UserPrivilegeConfigurationEntity +{ + @ApiProperty({ type: String, required: true, example: 'ADMIN_PAGE' }) + @IsString() + module: string; + + @ApiProperty({ type: String, required: true, example: 'admin page' }) + @IsString() + module_label: string; + + @ApiProperty({ type: String, required: true, example: 'DASHBOARD' }) + @IsString() + menu: string; + + @ApiProperty({ type: String, required: true, example: 'dashboard' }) + @IsString() + menu_label: string; + + @ApiProperty() + sub_menu: string; + + @ApiProperty() + sub_menu_label: string; + + @ApiProperty({ + type: Boolean, + required: false, + }) + @ValidateIf((body) => body.view) + @IsBoolean() + view: boolean; + + @ApiProperty({ + type: Boolean, + required: false, + }) + @ValidateIf((body) => body.create) + @IsBoolean() + create: boolean; + + @ApiProperty({ + type: Boolean, + required: false, + }) + @ValidateIf((body) => body.edit) + @IsBoolean() + edit: boolean; + + @ApiProperty({ + type: Boolean, + required: false, + }) + @ValidateIf((body) => body.delete) + @IsBoolean() + delete: boolean; + + @ApiProperty({ + type: Boolean, + required: false, + }) + @ValidateIf((body) => body.cancel) + @IsBoolean() + cancel: boolean; + + @ApiProperty({ + type: Boolean, + required: false, + }) + @ValidateIf((body) => body.confirm) + @IsBoolean() + confirm: boolean; + + @Exclude() + index: number; +} diff --git a/src/modules/user-related/user-privilege/infrastructure/user-privilege-configuration.controller.ts b/src/modules/user-related/user-privilege/infrastructure/user-privilege-configuration.controller.ts new file mode 100644 index 0000000..681d9ac --- /dev/null +++ b/src/modules/user-related/user-privilege/infrastructure/user-privilege-configuration.controller.ts @@ -0,0 +1,35 @@ +import { Body, Controller, Get, Param, Put, Query } from '@nestjs/common'; +import { ApiTags } from '@nestjs/swagger'; +import { Public } from 'src/core/guards'; +import { MODULE_NAME } from 'src/core/strings/constants/module.constants'; +import { UserPrivilegeConfigurationDataOrchestrator } from '../domain/usecases/user-privilege-configuration/user-privilege-configuration-data.orchestrator'; +import { UserPrivilegeConfigurationDto } from './dto/user-privilege-configuration.dto'; +import { UserPrivilegeConfigurationEntity } from '../domain/entities/user-privilege-configuration.entity'; +import { Pagination } from 'src/core/response'; +import { FilterUserPrivilegeConfigurationDto } from './dto/filter-user-privilege-configuration.dto'; +import { PaginationResponse } from 'src/core/response/domain/ok-response.interface'; + +@ApiTags( + `${MODULE_NAME.USER_PRIVILEGE_CONFIGURATION.split('-').join(' ')} - data`, +) +@Controller(MODULE_NAME.USER_PRIVILEGE_CONFIGURATION) +@Public(false) +export class UserPrivilegeConfigurationController { + constructor( + private orchestrator: UserPrivilegeConfigurationDataOrchestrator, + ) {} + + @Put() + async update( + @Body() data: UserPrivilegeConfigurationDto, + ): Promise { + return await this.orchestrator.update(data); + } + + @Get() + async index( + @Query() params: FilterUserPrivilegeConfigurationDto, + ): Promise> { + return await this.orchestrator.index(params); + } +} diff --git a/src/modules/user-related/user-privilege/infrastructure/user-privilege-data.controller.ts b/src/modules/user-related/user-privilege/infrastructure/user-privilege-data.controller.ts index df7d8da..50c909c 100644 --- a/src/modules/user-related/user-privilege/infrastructure/user-privilege-data.controller.ts +++ b/src/modules/user-related/user-privilege/infrastructure/user-privilege-data.controller.ts @@ -1,102 +1,79 @@ -import { Body, Controller, Delete, Param, Patch, Post, Put } from "@nestjs/common"; -import { UserPrivilegeDataOrchestrator } from "../domain/usecases/user-privilege-data.orchestrator"; -import { CreateUserPrivilegeDto } from "./dto/create-user-privilege.dto"; -import { MODULE_NAME } from "src/core/strings/constants/module.constants"; -import { ApiTags } from "@nestjs/swagger"; -import { Unprotected } from "src/core/guards"; -import * as Nano from 'nano' -import { UserPrivilegeEntity } from "../domain/entities/user-privilege.entity"; +import { + Body, + Controller, + Delete, + Param, + Patch, + Post, + Put, +} from '@nestjs/common'; +import { UserPrivilegeDataOrchestrator } from '../domain/usecases/user-privilege/user-privilege-data.orchestrator'; +import { CreateUserPrivilegeDto } from './dto/create-user-privilege.dto'; +import { MODULE_NAME } from 'src/core/strings/constants/module.constants'; +import { ApiTags } from '@nestjs/swagger'; +import { UserPrivilegeEntity } from '../domain/entities/user-privilege.entity'; +import { BatchResult } from 'src/core/response/domain/ok-response.interface'; +import { BatchIdsDto } from 'src/core/modules/infrastructure/dto/base-batch.dto'; +import { Public } from 'src/core/guards'; @ApiTags(`${MODULE_NAME.USER_PRIVILEGE.split('-').join(' ')} - data`) @Controller(MODULE_NAME.USER_PRIVILEGE) -@Unprotected() +@Public(false) export class UserPrivilegeDataController { - constructor( - private orchestrator: UserPrivilegeDataOrchestrator - ) {} + constructor(private orchestrator: UserPrivilegeDataOrchestrator) {} - @Post() - async create( - @Body() data: CreateUserPrivilegeDto, - ): Promise { - return await this.orchestrator.create(data); - } + @Post() + async create( + @Body() data: CreateUserPrivilegeDto, + ): Promise { + return await this.orchestrator.create(data); + } - @Put(':id') - async update( - @Param('id') dataId: string, - @Body() data: CreateUserPrivilegeDto, - ): Promise { - return await this.orchestrator.update(dataId, data); - } + @Put('/batch-delete') + async batchDeleted(@Body() body: BatchIdsDto): Promise { + return await this.orchestrator.batchDelete(body.ids); + } - @Delete(':id') - async delete( - @Param('id') dataId: string, - ): Promise { - return await this.orchestrator.delete(dataId); - } + @Patch(':id/active') + async active(@Param('id') dataId: string): Promise { + return await this.orchestrator.active(dataId); + } - @Patch(':id/active') - async active( - @Param('id') dataId: string, - ): Promise { - return await this.orchestrator.active(dataId); - } - - @Patch(':id/confirm') - async confirm( - @Param('id') dataId: string, - ): Promise { - return await this.orchestrator.confirm(dataId); - } + @Put('/batch-active') + async batchActive(@Body() body: BatchIdsDto): Promise { + return await this.orchestrator.batchActive(body.ids); + } - @Patch(':id/inactive') - async inactive( - @Param('id') dataId: string, - ): Promise { - return await this.orchestrator.inactive(dataId); - } + @Patch(':id/confirm') + async confirm(@Param('id') dataId: string): Promise { + return await this.orchestrator.confirm(dataId); + } + @Put('/batch-confirm') + async batchConfirm(@Body() body: BatchIdsDto): Promise { + return await this.orchestrator.batchConfirm(body.ids); + } - // @Post('pouch') - // async createDoc( - // @Body() entity: CreateUserPrivilegeDto - // ) { - // try { - // let n = Nano('http://admin:secret@127.0.0.1:5984') - // let db = await n.db.create('people') - // } catch (error) { - // console.log(error, 'dsa') - // } - // } + @Patch(':id/inactive') + async inactive(@Param('id') dataId: string): Promise { + return await this.orchestrator.inactive(dataId); + } - // @Post('pouch/doc') - // async createDocs( - // @Body() entity: CreateUserPrivilegeDto - // ) { - // try { - // let n = Nano('http://admin:secret@127.0.0.1:5984') - // const people = n.use('people'); - // const data = { - // id: '1212', - // name: 'dsadas' - // } - // return await people.insert({'_id': 'dsa', '_rev': JSON.stringify({'dsa': 'dsa'})}) - // } catch (error) { - // console.log(error, 'dsa') - // } - // } + @Put('/batch-inactive') + async batchInactive(@Body() body: BatchIdsDto): Promise { + return await this.orchestrator.batchInactive(body.ids); + } - // @Get('pouch') - // async getDoc( - // ) { - // try { - // let n = Nano('http://admin:secret@127.0.0.1:5984') - // const people = n.use('people'); - // // return people.get(); - // } catch (error) { - // console.log(error, 'dsa') - // } - // } -} \ No newline at end of file + @Put(':id') + async update( + @Param('id') dataId: string, + @Body() data: CreateUserPrivilegeDto, + ): Promise { + return await this.orchestrator.update(dataId, data); + } + + @Delete(':id') + async delete(@Param('id') dataId: string): Promise { + return await this.orchestrator.delete(dataId); + } +} diff --git a/src/modules/user-related/user-privilege/infrastructure/user-privilege-read.controller.ts b/src/modules/user-related/user-privilege/infrastructure/user-privilege-read.controller.ts index 9be723f..92918f5 100644 --- a/src/modules/user-related/user-privilege/infrastructure/user-privilege-read.controller.ts +++ b/src/modules/user-related/user-privilege/infrastructure/user-privilege-read.controller.ts @@ -1,34 +1,30 @@ -import { Controller, Get, Param, Query, Req } from "@nestjs/common"; -import { FilterUserPrivilegeDto } from "./dto/filter-user-privilege.dto"; -import { Pagination } from "src/core/response"; -import { PaginationResponse } from "src/core/response/domain/ok-response.interface"; -import { UserPrivilegeEntity } from "../domain/entities/user-privilege.entity"; -import { UserPrivilegeReadOrchestrator } from "../domain/usecases/user-privilege-read.orchestrator"; -import { ApiTags } from "@nestjs/swagger"; -import { MODULE_NAME } from "src/core/strings/constants/module.constants"; -import { Unprotected } from "src/core/guards"; +import { Controller, Get, Param, Query } from '@nestjs/common'; +import { FilterUserPrivilegeDto } from './dto/filter-user-privilege.dto'; +import { Pagination } from 'src/core/response'; +import { PaginationResponse } from 'src/core/response/domain/ok-response.interface'; +import { UserPrivilegeEntity } from '../domain/entities/user-privilege.entity'; +import { UserPrivilegeReadOrchestrator } from '../domain/usecases/user-privilege/user-privilege-read.orchestrator'; +import { ApiTags } from '@nestjs/swagger'; +import { MODULE_NAME } from 'src/core/strings/constants/module.constants'; +import { ExcludePrivilege, Public } from 'src/core/guards'; @ApiTags(`${MODULE_NAME.USER_PRIVILEGE.split('-').join(' ')} - read`) @Controller(MODULE_NAME.USER_PRIVILEGE) -@Unprotected() +@Public(false) export class UserPrivilegeReadController { - constructor( - private orchestrator: UserPrivilegeReadOrchestrator - ) {} + constructor(private orchestrator: UserPrivilegeReadOrchestrator) {} - @Get() - @Pagination() - async index( - @Query() params: FilterUserPrivilegeDto - ): Promise> { - return await this.orchestrator.index(params); - } + @Get() + @Pagination() + @ExcludePrivilege() + async index( + @Query() params: FilterUserPrivilegeDto, + ): Promise> { + return await this.orchestrator.index(params); + } - - @Get(':id') - async detail( - @Param('id') id: string, - ): Promise { - return await this.orchestrator.detail(id); - } -} \ No newline at end of file + @Get(':id') + async detail(@Param('id') id: string): Promise { + return await this.orchestrator.detail(id); + } +} diff --git a/src/modules/user-related/user-privilege/user-privilege.module.ts b/src/modules/user-related/user-privilege/user-privilege.module.ts index 0c7146d..5b82d7c 100644 --- a/src/modules/user-related/user-privilege/user-privilege.module.ts +++ b/src/modules/user-related/user-privilege/user-privilege.module.ts @@ -1,49 +1,68 @@ -import { Module } from "@nestjs/common"; -import { UserPrivilegeModel } from "./data/model/user-privilege.model"; -import { ConfigModule } from "@nestjs/config"; -import { TypeOrmModule } from "@nestjs/typeorm"; -import { CONNECTION_NAME } from "src/core/strings/constants/base.constants"; -import { UserPrivilegeDataService } from "./data/service/user-privilege-data.service"; -import { UserPrivilegeReadService } from "./data/service/user-privilege-read.service"; -import { UserPrivilegeReadController } from "./infrastructure/user-privilege-read.controller"; -import { UserPrivilegeReadOrchestrator } from "./domain/usecases/user-privilege-read.orchestrator"; -import { UserPrivilegeDataController } from "./infrastructure/user-privilege-data.controller"; -import { UserPrivilegeDataOrchestrator } from "./domain/usecases/user-privilege-data.orchestrator"; -import { CreateUserPrivilegeManager } from "./domain/usecases/managers/create-user-privilege.manager"; -import { CqrsModule } from "@nestjs/cqrs"; -import { IndexUserPrivilegeManager } from "./domain/usecases/managers/index-user-privilege.manager"; -import { DeleteUserPrivilegeManager } from "./domain/usecases/managers/delete-user-privilege.manager"; -import { UpdateUserPrivilegeManager } from "./domain/usecases/managers/update-user-privilege.manager"; -import { ActiveUserPrivilegeManager } from "./domain/usecases/managers/active-user-privilege.manager"; -import { ConfirmUserPrivilegeManager } from "./domain/usecases/managers/confirm-user-privilege.manager"; -import { InactiveUserPrivilegeManager } from "./domain/usecases/managers/inactive-user-privilege.manager"; -import { DetailUserPrivilegeManager } from "./domain/usecases/managers/detail-user-privilege.manager"; +import { Module } from '@nestjs/common'; +import { ConfigModule } from '@nestjs/config'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { CONNECTION_NAME } from 'src/core/strings/constants/base.constants'; +import { UserPrivilegeDataService } from './data/service/user-privilege-data.service'; +import { UserPrivilegeReadService } from './data/service/user-privilege-read.service'; +import { UserPrivilegeReadController } from './infrastructure/user-privilege-read.controller'; +import { UserPrivilegeReadOrchestrator } from './domain/usecases/user-privilege/user-privilege-read.orchestrator'; +import { UserPrivilegeDataController } from './infrastructure/user-privilege-data.controller'; +import { UserPrivilegeDataOrchestrator } from './domain/usecases/user-privilege/user-privilege-data.orchestrator'; +import { CreateUserPrivilegeManager } from './domain/usecases/user-privilege/managers/create-user-privilege.manager'; +import { CqrsModule } from '@nestjs/cqrs'; +import { IndexUserPrivilegeManager } from './domain/usecases/user-privilege/managers/index-user-privilege.manager'; +import { DeleteUserPrivilegeManager } from './domain/usecases/user-privilege/managers/delete-user-privilege.manager'; +import { UpdateUserPrivilegeManager } from './domain/usecases/user-privilege/managers/update-user-privilege.manager'; +import { ActiveUserPrivilegeManager } from './domain/usecases/user-privilege/managers/active-user-privilege.manager'; +import { ConfirmUserPrivilegeManager } from './domain/usecases/user-privilege/managers/confirm-user-privilege.manager'; +import { InactiveUserPrivilegeManager } from './domain/usecases/user-privilege/managers/inactive-user-privilege.manager'; +import { DetailUserPrivilegeManager } from './domain/usecases/user-privilege/managers/detail-user-privilege.manager'; +import { BatchDeleteUserPrivilegeManager } from './domain/usecases/user-privilege/managers/batch-delete-user-privilege.manager'; +import { BatchActiveUserPrivilegeManager } from './domain/usecases/user-privilege/managers/batch-active-user-privilege.manager'; +import { BatchConfirmUserPrivilegeManager } from './domain/usecases/user-privilege/managers/batch-confirm-user-privilege.manager'; +import { BatchInactiveUserPrivilegeManager } from './domain/usecases/user-privilege/managers/batch-inactive-user-privilege.manager'; +import { UserPrivilegeConfigurationService } from './data/service/user-privilege-configuration.service'; +import { UpdateUserPrivilegeConfigurationManager } from './domain/usecases/user-privilege-configuration/managers/update-user-privilege-configuration.manager'; +import { UserPrivilegeConfigurationController } from './infrastructure/user-privilege-configuration.controller'; +import { UserPrivilegeConfigurationDataOrchestrator } from './domain/usecases/user-privilege-configuration/user-privilege-configuration-data.orchestrator'; +import { IndexUserPrivilegeConfigurationManager } from './domain/usecases/user-privilege-configuration/managers/index-user-privilege-configuration.manager'; +import { UserPrivilegeModels } from './constants'; @Module({ - imports: [ - ConfigModule.forRoot(), - TypeOrmModule.forFeature([UserPrivilegeModel], CONNECTION_NAME.DEFAULT), - CqrsModule, - ], - controllers: [ - UserPrivilegeDataController, - UserPrivilegeReadController - ], - providers: [ - IndexUserPrivilegeManager, - DetailUserPrivilegeManager, - CreateUserPrivilegeManager, - DeleteUserPrivilegeManager, - UpdateUserPrivilegeManager, - ActiveUserPrivilegeManager, - ConfirmUserPrivilegeManager, - InactiveUserPrivilegeManager, + imports: [ + ConfigModule.forRoot(), + TypeOrmModule.forFeature(UserPrivilegeModels, CONNECTION_NAME.DEFAULT), + CqrsModule, + ], + controllers: [ + UserPrivilegeDataController, + UserPrivilegeReadController, + UserPrivilegeConfigurationController, + ], + providers: [ + IndexUserPrivilegeManager, + DetailUserPrivilegeManager, + CreateUserPrivilegeManager, + DeleteUserPrivilegeManager, + UpdateUserPrivilegeManager, + ActiveUserPrivilegeManager, + ConfirmUserPrivilegeManager, + InactiveUserPrivilegeManager, + BatchDeleteUserPrivilegeManager, + BatchActiveUserPrivilegeManager, + BatchConfirmUserPrivilegeManager, + BatchInactiveUserPrivilegeManager, - UserPrivilegeDataService, - UserPrivilegeReadService, + IndexUserPrivilegeConfigurationManager, + UpdateUserPrivilegeConfigurationManager, - UserPrivilegeDataOrchestrator, - UserPrivilegeReadOrchestrator, - ], - }) - export class UserPrivilegeModule {} \ No newline at end of file + UserPrivilegeDataService, + UserPrivilegeReadService, + UserPrivilegeConfigurationService, + + UserPrivilegeDataOrchestrator, + UserPrivilegeReadOrchestrator, + UserPrivilegeConfigurationDataOrchestrator, + ], +}) +export class UserPrivilegeModule {}