From e68524380ac63d6b5b7cae2513487c14d3ae2b50 Mon Sep 17 00:00:00 2001 From: Aswin Ashar Abdullah Date: Fri, 26 Jul 2024 15:03:37 +0700 Subject: [PATCH] fix(SPG-652) Item Tipe Bundling - Item yang sudah berrelasi atau dipakai pada bundling tidak dapat di delete atau di inactivekan sampai di lepas dari bundling nya --- .../usecase/managers/base-create.manager.ts | 2 +- .../managers/batch-delete-item.manager.ts | 23 +++++++++++++++++-- .../usecases/managers/delete-item.manager.ts | 23 +++++++++++++++++-- 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/src/core/modules/domain/usecase/managers/base-create.manager.ts b/src/core/modules/domain/usecase/managers/base-create.manager.ts index 92f0019..79bded9 100644 --- a/src/core/modules/domain/usecase/managers/base-create.manager.ts +++ b/src/core/modules/domain/usecase/managers/base-create.manager.ts @@ -97,7 +97,7 @@ export abstract class BaseCreateManager extends BaseManager { this.eventBus.publishAll([ new topic.topic({ - id: data?.['id'] ?? topic?.data?.['id'], + id: this.result['id'], old: null, data: data ?? topic.data, user: this.user, diff --git a/src/modules/item-related/item/domain/usecases/managers/batch-delete-item.manager.ts b/src/modules/item-related/item/domain/usecases/managers/batch-delete-item.manager.ts index 03c5563..d5182aa 100644 --- a/src/modules/item-related/item/domain/usecases/managers/batch-delete-item.manager.ts +++ b/src/modules/item-related/item/domain/usecases/managers/batch-delete-item.manager.ts @@ -7,7 +7,11 @@ import { import { ItemModel } from '../../../data/models/item.model'; import { ItemDeletedEvent } from '../../entities/event/item-deleted.event'; import { BatchResult } from 'src/core/response/domain/ok-response.interface'; -import { Injectable } from '@nestjs/common'; +import { + HttpStatus, + Injectable, + UnprocessableEntityException, +} from '@nestjs/common'; @Injectable() export class BatchDeleteItemManager extends BaseBatchDeleteManager { @@ -16,6 +20,21 @@ export class BatchDeleteItemManager extends BaseBatchDeleteManager { } async validateData(data: ItemEntity): Promise { + const haveRelation = await this.dataService.getOneByOptions({ + where: { + bundling_items: { + id: data.id, + }, + }, + }); + + if (haveRelation) { + throw new UnprocessableEntityException({ + statusCode: HttpStatus.UNPROCESSABLE_ENTITY, + message: `Failed! this data already connected to bunding item`, + error: 'Unprocessable Entity', + }); + } return; } @@ -24,7 +43,7 @@ export class BatchDeleteItemManager extends BaseBatchDeleteManager { } get validateRelations(): validateRelations[] { - return [{ relation: 'bundling_items' }]; + return []; } get entityTarget(): any { diff --git a/src/modules/item-related/item/domain/usecases/managers/delete-item.manager.ts b/src/modules/item-related/item/domain/usecases/managers/delete-item.manager.ts index 51db838..49b8e83 100644 --- a/src/modules/item-related/item/domain/usecases/managers/delete-item.manager.ts +++ b/src/modules/item-related/item/domain/usecases/managers/delete-item.manager.ts @@ -1,4 +1,8 @@ -import { Injectable } from '@nestjs/common'; +import { + HttpStatus, + Injectable, + UnprocessableEntityException, +} from '@nestjs/common'; import { BaseDeleteManager } from 'src/core/modules/domain/usecase/managers/base-delete.manager'; import { ItemEntity } from '../../entities/item.entity'; import { @@ -15,6 +19,21 @@ export class DeleteItemManager extends BaseDeleteManager { } async validateProcess(): Promise { + const haveRelation = await this.dataService.getOneByOptions({ + where: { + bundling_items: { + id: this.dataId, + }, + }, + }); + + if (haveRelation) { + throw new UnprocessableEntityException({ + statusCode: HttpStatus.UNPROCESSABLE_ENTITY, + message: `Failed! this data already connected to bunding item`, + error: 'Unprocessable Entity', + }); + } return; } @@ -27,7 +46,7 @@ export class DeleteItemManager extends BaseDeleteManager { } get validateRelations(): validateRelations[] { - return [{ relation: 'bundling_items' }]; + return []; } get entityTarget(): any {