public async Task DereaseProductQuantity(int id, int value) { using var context = new HomeAppDbContext(myDbOptions); var quantity = context.ProductQuantities.Include(x => x.ProductId).FirstOrDefault(p => p.Id == id); if (quantity.ProductId.MeasurementValues == null) { var values = new MeasurementClassObject { Values = new List <MeasurementAmount> { new MeasurementAmount { Amount = quantity.QuantityTypeVolume, Type = quantity.UnitQuantityType } } }; quantity.ProductId.MeasurementValues = JsonConvert.SerializeObject(values); await context.SaveChangesAsync(); return; } var measurementClass = JsonConvert.DeserializeObject <MeasurementClassObject>(quantity.ProductId.MeasurementValues); measurementClass.Add(new MeasurementAmount { Amount = quantity.QuantityTypeVolume * -1, Type = quantity.UnitQuantityType }); //if (measurementClass.Values.Any(v => v.Type == quantity.UnitQuantityType)) //{ // measurementClass.Values.First(v => v.Type == quantity.UnitQuantityType).Amount += quantity.QuantityTypeVolume; // quantity.ProductId.MeasurementValues = JsonConvert.SerializeObject(measurementClass); // await context.SaveChangesAsync(); // return; //} //measurementClass.Values.Add(new MeasurementAmount //{ // Amount = quantity.QuantityTypeVolume, // Type = quantity.UnitQuantityType //}); quantity.ProductId.MeasurementValues = JsonConvert.SerializeObject(measurementClass); await context.SaveChangesAsync(); return; }
public List <ShoppingListItemDetailsModel> GetItemsForShoppingList(Guid shoppingListId) { List <ShoppingListItemModel> allProducts = myShoppingListDataAdapter.GetItemsForShoppingList(shoppingListId); var detailItems = new List <ShoppingListItemDetailsModel>(); foreach (ShoppingListItemModel sItem in allProducts) { ProductDetails product = myProductDataAdapter.GetProductById(sItem.ProductId); //List<ShoppingListItemInfoModel> infoItems = myShoppingListDataAdapter.GetInfoItemsForShoppingListItem(sItem.Id); ShoppingListItemDetailsModel details = new ShoppingListItemDetailsModel(); var measurementType = sItem.InfoItems.First().MeasurementType; MeasurementClassObject amountObject = new MeasurementClassObject(); sItem.InfoItems.Where(i => i.RecipeItem == null).ToList().ForEach(a => { details.StaticItems.Add(a); amountObject.Values.Add(new MeasurementAmount { Amount = a.MeasurementAmount, Type = a.MeasurementType }); }); MeasurementClassObject amountDynamicObject = new MeasurementClassObject(); sItem.InfoItems.Where(i => i.RecipeItem != null).ToList().ForEach(a => { if (a.RecipeItem.IsOnlyUnavailable) { details.StaticItems.Add(a); amountObject.Values.Add( new MeasurementAmount { Amount = a.MeasurementAmount, Type = a.MeasurementType }); return; } details.DynamicItems.Add(a); amountDynamicObject.Values.Add( new MeasurementAmount { Amount = a.MeasurementAmount, Type = a.MeasurementType }); }); double totalDynamicAmount = amountDynamicObject.GetTotalAmount(measurementType); double totalStaticAmount = amountObject.GetTotalAmount(measurementType); details.DynamicAmountRequested = totalDynamicAmount; details.StaticAmount = totalStaticAmount; details.MeasurementType = measurementType; details.ProductId = sItem.ProductId; details.ProductName = sItem.ProductName; details.Id = sItem.Id; details.IsChecked = sItem.IsChecked; if (product.MeasurementAmounts != null) { details.DynamicAmountAvailable = product.MeasurementAmounts.GetTotalAmount(measurementType); } detailItems.Add(details); } return(detailItems); }