示例#1
0
        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;
        }
示例#2
0
        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);
        }