Beispiel #1
0
        private static async Task <InventoryCellarModel> ProcessCellar(CellarSummaryModel cellar)
        {
            var inventoryCellar = new InventoryCellarModel()
            {
                CellarName  = cellar.Name,
                Capacity    = cellar.Capacity,
                BottleCount = 0
            };

            inventoryCellar = await ProcessBottles(inventoryCellar, cellar);

            inventoryCellar.PctCapacity = inventoryCellar.Capacity == 0 ? "0" : (Convert.ToDouble((inventoryCellar.BottleCount) / Convert.ToDouble(inventoryCellar.Capacity))).ToString("P");
            return(inventoryCellar);
        }
Beispiel #2
0
        private static async Task <InventoryCellarModel> ProcessBottles(InventoryCellarModel InventoryCellar, CellarSummaryModel Cellar)
        {
            var vintageList            = new List <InventoryVintageModel>();
            var WineItemList           = new List <InventoryWineItemModel>();
            var VintageListItem        = new InventoryVintageModel();
            var GetInventoryReportData = await CloudData.GetCellarSummaryBottles(Cellar.CellarId);

            if (GetInventoryReportData.GetType() == typeof(List <BottleBriefDataModel>))
            {
                Cellar.Bottles = GetInventoryReportData;
            }
            foreach (var bottle in Cellar.Bottles)
            {
                InventoryCellar.BottleCount++;
                var vintageListItem = (from yearItem in vintageList
                                       where yearItem.VinetageYear == bottle.Vintage
                                       select yearItem).FirstOrDefault();
                if (vintageListItem != null && vintageListItem.WineItems != null)
                {
                    //already have a collection established for the vintage with at least
                    //one WineItem in it.
                    VintageListItem = vintageListItem;
                    WineItemList    = VintageListItem.WineItems.ToList();
                }
                else
                {
                    //need to create the Vintage List Item object
                    var newVintageItem = new InventoryVintageModel()
                    {
                        VinetageYear = bottle.Vintage,
                        WineItems    = new List <InventoryWineItemModel>().AsEnumerable()
                    };
                    VintageListItem = newVintageItem; //change scope in case of another bottle of same type
                    vintageList.Add(VintageListItem);
                    WineItemList = VintageListItem.WineItems.ToList();
                }
                var wineBottleRowKey = bottle.BottleId.RowKey.Substring(bottle.BottleId.RowKey.IndexOf("-") + 1);
                wineBottleRowKey = wineBottleRowKey.Substring(0, wineBottleRowKey.LastIndexOf("-"));
                var itemInList = (from item in WineItemList
                                  where item.WineBottleRowKey == wineBottleRowKey
                                  select item).FirstOrDefault();
                if (itemInList != null)
                {
                    //at least one other bottle exists in List
                    itemInList.Quantity++;
                    itemInList.UnitValue = itemInList.UnitValue < bottle.PricePaid ? bottle.PricePaid :
                                           itemInList.UnitValue < bottle.RetailPrice ? bottle.RetailPrice : itemInList.UnitValue;
                    itemInList.TotalValue = itemInList.UnitValue * itemInList.Quantity;
                    if (!string.IsNullOrEmpty(bottle.BarCode))
                    {
                        var barCodeList = itemInList.BarCodes.ToList();
                        barCodeList.Add(bottle.BarCode);
                        itemInList.BarCodes = barCodeList.AsEnumerable();
                    }
                }
                else
                {
                    //first bottle of this type
                    var newItem = new InventoryWineItemModel()
                    {
                        Quantity         = 1,
                        Size             = bottle.Size,
                        WineryName       = bottle.WineryName,
                        WineName         = bottle.WineName,
                        Country          = bottle.CountryOfOrigin,
                        Region           = bottle.Region,
                        Color            = bottle.Color,
                        VarietalType     = bottle.VarietalType,
                        UnitValue        = bottle.RetailPrice > 0 ? bottle.PricePaid > bottle.RetailPrice ? bottle.PricePaid : bottle.RetailPrice : 30d,
                        TotalValue       = bottle.RetailPrice > 0 ? bottle.PricePaid > bottle.RetailPrice ? bottle.PricePaid : bottle.RetailPrice : 30d,
                        WineBottleRowKey = wineBottleRowKey
                    };
                    if (!string.IsNullOrEmpty(bottle.BarCode))
                    {
                        var btlBarCodeList = new List <string>()
                        {
                            bottle.BarCode
                        };
                        newItem.BarCodes = btlBarCodeList.AsEnumerable();
                    }
                    WineItemList.Add(newItem);
                }

                VintageListItem.WineItems        = WineItemList.AsEnumerable();
                VintageListItem.VinetageValue    = WineItemList.Sum(tv => tv.TotalValue);
                InventoryCellar.Vintages         = vintageList.AsEnumerable();
                InventoryCellar.CellarTotalValue = InventoryCellar.Vintages.Sum(cv => cv.VinetageValue);
            }
            return(InventoryCellar);
        }