From 7524edb3d201c5b58190722fdb8ecfb5fb5c6dc0 Mon Sep 17 00:00:00 2001 From: Ahmed Bouhuolia Date: Sun, 29 Nov 2020 13:16:12 +0200 Subject: [PATCH] fix: delete item category has associated items. --- .../ItemCategories/ItemCategoriesService.ts | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/server/src/services/ItemCategories/ItemCategoriesService.ts b/server/src/services/ItemCategories/ItemCategoriesService.ts index 3626bf88b..ce613de3c 100644 --- a/server/src/services/ItemCategories/ItemCategoriesService.ts +++ b/server/src/services/ItemCategories/ItemCategoriesService.ts @@ -224,7 +224,11 @@ export default class ItemCategoriesService implements IItemCategoriesService { */ public async deleteItemCategory(tenantId: number, itemCategoryId: number, authorizedUser: ISystemUser) { this.logger.info('[item_category] trying to delete item category.', { tenantId, itemCategoryId }); + + // Retrieve item category or throw not found error. await this.getItemCategoryOrThrowError(tenantId, itemCategoryId); + + // Unassociate items with item category. await this.unassociateItemsWithCategories(tenantId, itemCategoryId); const { ItemCategory } = this.tenancy.models(tenantId); @@ -276,11 +280,14 @@ export default class ItemCategoriesService implements IItemCategoriesService { * @param {number|number[]} itemCategoryId - * @return {Promise} */ - private async unassociateItemsWithCategories(tenantId: number, itemCategoryId: number|number[]): Promise { + private async unassociateItemsWithCategories( + tenantId: number, + itemCategoryId: number | number[], + ): Promise { const { Item } = this.tenancy.models(tenantId); const ids = Array.isArray(itemCategoryId) ? itemCategoryId : [itemCategoryId]; - await Item.query().whereIn('id', ids).patch({ category_id: null }); + await Item.query().whereIn('category_id', ids).patch({ category_id: null }); } /** @@ -288,7 +295,11 @@ export default class ItemCategoriesService implements IItemCategoriesService { * @param {number} tenantId * @param {number[]} itemCategoriesIds */ - public async deleteItemCategories(tenantId: number, itemCategoriesIds: number[], authorizedUser: ISystemUser) { + public async deleteItemCategories( + tenantId: number, + itemCategoriesIds: number[], + authorizedUser: ISystemUser, + ) { this.logger.info('[item_category] trying to delete item categories.', { tenantId, itemCategoriesIds }); const { ItemCategory } = this.tenancy.models(tenantId);