private void _addOrUpdateProductProductionDateWithAmount(ProductStorageEntity productStorage, ProductForBillCreationDto newProduct, ProductForBillCreationDto oldProduct) { if (newProduct.DetailAmountList != null && newProduct.DetailAmountList.Count > 0) { var oldProductProductionDateList = JsonConvert.DeserializeObject <List <ProductProductionDateDto> >(productStorage.ProductProductionDateList); foreach (var newProductDetailAmount in newProduct.DetailAmountList) { if (newProductDetailAmount.Amount <= 0) { continue; } var oldProductProductionDate = oldProductProductionDateList.SingleOrDefault(p => p.ProductionWeekYear == newProductDetailAmount.ProductionWeekYear); if (oldProductProductionDate == null) { // add new product production date var newProductProductionDate = new ProductProductionDateDto() { ProductionWeekYear = newProductDetailAmount.ProductionWeekYear, ProductionDate = DateTimeHelper.ConvertWeekYearToDateTime(newProductDetailAmount.ProductionWeekYear), Inventory = 0 - newProductDetailAmount.Amount }; oldProductProductionDateList.Add(newProductProductionDate); } else { double oldAmount = 0; if (oldProduct != null) { var oldDetailAmount = oldProduct.DetailAmountList.SingleOrDefault(d => d.ProductionWeekYear == newProductDetailAmount.ProductionWeekYear); oldAmount = oldDetailAmount.Amount; } oldProductProductionDate.Inventory += oldAmount - newProductDetailAmount.Amount; } productStorage.ProductProductionDateList = JsonConvert.SerializeObject(oldProductProductionDateList); } _context.ProductStorages.Update(productStorage); } }
private void _addOrUpdateProductProductionDate(ProductStorageEntity productStorage, ProductForBillCreationDto product, bool isDecreaseInventory) { if (product.DetailAmountList != null && product.DetailAmountList.Count > 0) { var productProductionDateList = JsonConvert.DeserializeObject <List <ProductProductionDateDto> >(productStorage.ProductProductionDateList); foreach (var detailAmount in product.DetailAmountList) { var productProductionDate = productProductionDateList.SingleOrDefault(p => p.ProductionWeekYear == detailAmount.ProductionWeekYear); if (productProductionDate == null) { // add new product production date var newProductProductionDate = new ProductProductionDateDto() { ProductionWeekYear = detailAmount.ProductionWeekYear, ProductionDate = DateTimeHelper.ConvertWeekYearToDateTime(detailAmount.ProductionWeekYear), Inventory = 0 - detailAmount.Amount }; productProductionDateList.Add(newProductProductionDate); } else { if (isDecreaseInventory) { productProductionDate.Inventory -= detailAmount.Amount; } else { productProductionDate.Inventory += detailAmount.Amount; } } productStorage.ProductProductionDateList = JsonConvert.SerializeObject(productProductionDateList); } _context.ProductStorages.Update(productStorage); } }