From 975cace0818d96958211b1c0b39de19c742dd34f Mon Sep 17 00:00:00 2001 From: mfadiln2018 Date: Thu, 1 Sep 2022 16:44:13 +0700 Subject: [PATCH] fix: update status product at upload product --- src/product/product.service.ts | 41 +++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/src/product/product.service.ts b/src/product/product.service.ts index e9e8f82..c4f9fc8 100644 --- a/src/product/product.service.ts +++ b/src/product/product.service.ts @@ -63,6 +63,7 @@ export class ProductService { await mapSeries(data, async (it) => { let dataHistoryPrice; let partnerData; + let productStatusPartner; const subCategories = await this.productSubCategoriesService.findOneForCSVParser(it[2]); @@ -76,15 +77,34 @@ export class ProductService { supplier: supplierData, }); + const productStatus = await this.productHistoryStatus.findOne({ + product: productData, + partner: null, + }); + if (productData) { //TODO : Handle Update Product productData.name = it[1]; productData.status = it[5] == 'active' ? 'ACTIVE' : 'NOT ACTIVE'; + await this.productRepository.save(productData); //TODO : Handle History Price if (it[6] != '-' && it[6] != '') { partnerData = await this.partnerService.findOne(it[6]); + productStatusPartner = await this.productHistoryStatus.findOne({ + product: productData, + partner: partnerData.id, + }); + + if (productStatusPartner === undefined) { + await this.productHistoryStatus.insert({ + product: productData, + partner: it[6] != '-' ? partnerData : null, + status: it[5] == 'active' ? 'ACTIVE' : 'NOT ACTIVE', + }); + } + dataHistoryPrice = await this.productHistoryPrice.findOne({ where: { product: productData.id, @@ -93,6 +113,16 @@ export class ProductService { }, }); } else { + if (productStatus != undefined) { + productStatus.status = it[5] == 'active' ? 'ACTIVE' : 'NOT ACTIVE'; + await this.productHistoryStatus.save(productStatus); + } else { + await this.productHistoryStatus.insert({ + product: productData, + partner: it[6] != '-' ? partnerData : null, + status: it[5] == 'active' ? 'ACTIVE' : 'NOT ACTIVE', + }); + } dataHistoryPrice = await this.productHistoryPrice.findOne({ product: productData, partner: IsNull(), @@ -106,12 +136,11 @@ export class ProductService { }); } - await this.productHistoryStatus.insert({ - product: productData, - partner: it[6] != '-' ? partnerData : null, - status: it[5] == 'active' ? 'ACTIVE' : 'NOT ACTIVE', - - }); + if (productStatusPartner) { + await this.productHistoryStatus.update(productStatusPartner.id, { + status: it[5] == 'active' ? 'ACTIVE' : 'NOT ACTIVE', + }); + } await this.productHistoryPrice.insert({ product: productData,