Ejemplo n.º 1
0
        public MarketItem SelectMarketItemByID(string publicID, int id, IImageResolver imageResolver)
        {
            EveShoppingContext context = new EveShoppingContext();


            var query =
                (from sl in context.eshShoppingLists
                 join slit in context.eshShoppingListInvTypes on sl.shoppingListID equals slit.shoppingListID
                 join it in context.invTypes on slit.typeID equals it.typeID
                 join p in context.eshPrices on new { sl.tradeHubID, slit.typeID } equals new { tradeHubID = p.solarSystemID, p.typeID }
                 where sl.publicID == publicID && slit.typeID == id
                 select new
            {
                ItemID = slit.typeID,
                Name = it.typeName,
                Units = slit.units,
                TotalPrice = p.avg * slit.units,
                Volume = it.volume.Value * slit.units,
                ItemType = it
            });
            var        qmi = query.FirstOrDefault();
            MarketItem mi  = new MarketItem()
            {
                ItemID     = qmi.ItemID,
                Name       = qmi.Name,
                Units      = qmi.Units,
                TotalPrice = qmi.TotalPrice,
                UnitPrice  = qmi.TotalPrice / qmi.Units,
                Volume     = RepositorioItems.GetVolume(qmi.ItemType) * qmi.Units,
                ImageUrl32 = imageResolver != null?imageResolver.GetImageURL(qmi.ItemID) : string.Empty
            };

            return(mi);
        }
Ejemplo n.º 2
0
        private static void AddFittingHardwareToFittingSummary(IImageResolver imageResolver, EveShoppingContext contexto, EVFitting fit)
        {
            var qfittingHardwares =
                (from sl in contexto.eshShoppingLists
                 join slf in contexto.eshShoppingListFittings on sl.shoppingListID equals slf.shoppingListID
                 join f in contexto.eshFittings on slf.fittingID equals f.fittingID
                 join fh in contexto.eshFittingHardwares on f.fittingID equals fh.fittingID
                 join it in contexto.invTypes on fh.typeID equals it.typeID
                 join mg in contexto.invMarketGroups on it.marketGroupID equals mg.marketGroupID
                 join p in contexto.eshPrices on new { sl.tradeHubID, it.typeID } equals new { tradeHubID = p.solarSystemID, p.typeID }
                 where f.fittingID == fit.ItemID
                 orderby fh.slotID, fh.positionInSlot, fh.invType.typeName
                 select new EVFittingHardware
            {
                ItemID = fh.typeID,
                GroupName = mg.marketGroupName,
                Name = it.typeName,
                TotalPrice = fh.units * p.avg,
                UnitPrice = fh.units,
                Slot = fh.slotID,
                SlotName = fh.eshFittingSlot.name,
                Units = fh.units,
                Volume = fh.units * it.volume.Value
            });

            foreach (var item in qfittingHardwares)
            {
                item.ImageUrl32 = imageResolver.GetImageURL(item.ItemID);
                fit.FittingHardwares.Add(item);
                fit.TotalPrice += item.TotalPrice * fit.Units;
                fit.Volume     += item.Volume * fit.Units;
            }
        }
Ejemplo n.º 3
0
        public EVFitting SelectFitSummaryByPublicID(string fittingPublicId, IImageResolver imageResolver, int tradeHubID)
        {
            EveShoppingContext contexto = new EveShoppingContext();

            EVFitting fit =
                (from f in contexto.eshFittings
                 join it in contexto.invTypes on f.shipTypeID equals it.typeID
                 join p in contexto.eshPrices on new { tradeHubID = tradeHubID, it.typeID } equals new { tradeHubID = tradeHubID, p.typeID }
                 where f.publicID == fittingPublicId
                 select new EVFitting
            {
                Description = f.description,
                ItemID = f.fittingID,
                Name = f.name,
                ShipID = f.shipTypeID.Value,
                ShipName = f.invType.typeName,
                ShipVolume = f.shipVolume,
                Units = 1,
                ShipPrice = p.avg,
                TotalPrice = p.avg,
                Volume = f.shipVolume,
                PublicID = f.publicID
            }).FirstOrDefault();

            fit.ImageUrl32 = imageResolver.GetImageURL(fit.ShipID);

            LogicaFittings logicaFits = new LogicaFittings();

            logicaFits.AddFittingHardwaresToFitting(contexto, imageResolver, tradeHubID, fit);

            //AddFittingHardwareToFittingSummary(imageResolver, contexto, fit);

            return(fit);
        }
Ejemplo n.º 4
0
        public EVListSummary SelectGroupListSummaryPorPublicID(string publicID, IImageResolver imageResolver)
        {
            EveShoppingContext   contexto     = new EveShoppingContext();
            eshGroupShoppingList shoppingList = contexto.eshGroupShoppingLists.Where(sl => sl.publicID == publicID).FirstOrDefault();

            if (shoppingList == null)
            {
                return(null);
            }

            EVListSummary summary =
                new EVListSummary();

            summary.Description      = shoppingList.description;
            summary.Name             = shoppingList.name;
            summary.PublicID         = shoppingList.publicID;
            summary.ReadOnlyPublicID = null;
            summary.ShoppingListID   = shoppingList.groupShoppingListID;

            Dictionary <int, EVFittingHardware> diccHwd = new Dictionary <int, EVFittingHardware>();

            //por cada snapshot que tenemos asociado
            foreach (var snapshot in shoppingList.eshGroupShoppingListSnapshots)
            {
                summary.TotalVolume += snapshot.eshSnapshot.totalVolume;
                foreach (var item in snapshot.eshSnapshot.eshSnapshotInvTypes)
                {
                    EVFittingHardware efth = null;
                    if (diccHwd.ContainsKey(item.typeID))
                    {
                        efth             = diccHwd[item.typeID];
                        efth.Volume     += item.volume.Value;
                        efth.TotalPrice += item.unitPrice * item.units;
                        efth.Units      += item.units;
                    }
                    else
                    {
                        efth = new EVFittingHardware()
                        {
                            Name       = item.invType.typeName,
                            ItemID     = item.typeID,
                            Units      = item.units,
                            Volume     = item.volume.Value,
                            UnitVolume = item.volume.Value / item.units,
                            TotalPrice = item.unitPrice * item.units,
                            UnitPrice  = item.unitPrice,
                            ImageUrl32 = imageResolver.GetImageURL(item.typeID)
                        };
                        diccHwd.Add(efth.ItemID, efth);
                    }
                }
            }

            foreach (var item in diccHwd.Values)
            {
                summary.Items.Add(item);
            }
            return(summary);
        }
Ejemplo n.º 5
0
        public IList <MarketItem> SelectMarketItemsEnShoppingList(string publicID, IImageResolver imageResolver)
        {
            EveShoppingContext context = new EveShoppingContext();

            IList <MarketItem> miList = new List <MarketItem>();

            var qlistaItems =
                (from sl in context.eshShoppingLists
                 join slit in context.eshShoppingListInvTypes on sl.shoppingListID equals slit.shoppingListID
                 join it in context.invTypes on slit.typeID equals it.typeID
                 join p in context.eshPrices on new { sl.tradeHubID, slit.typeID } equals new { tradeHubID = p.solarSystemID, p.typeID }
                 where sl.publicID == publicID
                 select new
            {
                ItemID = slit.typeID,
                Name = it.typeName,
                Units = slit.units,
                TotalPrice = p.avg * slit.units,
                invType = it
            });

            foreach (var item in qlistaItems)
            {
                MarketItem mi =
                    new MarketItem()
                {
                    ItemID     = item.ItemID,
                    Name       = item.Name,
                    Units      = item.Units,
                    TotalPrice = item.TotalPrice,
                    UnitPrice  = item.TotalPrice / item.Units,
                    Volume     = RepositorioItems.GetVolume(item.invType) * item.Units,
                    ImageUrl32 = imageResolver != null?imageResolver.GetImageURL(item.ItemID) : string.Empty
                };
                miList.Add(mi);
            }

            return(miList);
        }
Ejemplo n.º 6
0
        public EVFitting SelectFitSummary(string publicID, int fittingID, IImageResolver imageResolver)
        {
            EveShoppingContext contexto = new EveShoppingContext();

            eshShoppingList shlist = contexto.eshShoppingLists.Where(s => s.publicID == publicID).FirstOrDefault();

            EVFitting fit =
                (from slf in contexto.eshShoppingListFittings
                 join f in contexto.eshFittings on slf.fittingID equals f.fittingID
                 join it in contexto.invTypes on f.shipTypeID equals it.typeID
                 join p in contexto.eshPrices on new { tradeHubID = slf.eshShoppingList.tradeHubID, it.typeID } equals new { tradeHubID = p.solarSystemID, p.typeID }
                 where slf.eshShoppingList.publicID == publicID && slf.fittingID == fittingID
                 select new EVFitting
            {
                Description = f.description,
                ItemID = f.fittingID,
                Name = f.name,
                ShipID = f.shipTypeID.Value,
                ShipName = f.invType.typeName,
                ShipVolume = f.shipVolume,
                Units = slf.units,
                ShipPrice = p.avg,
                TotalPrice = p.avg * slf.units,
                Volume = f.shipVolume * slf.units,
                PublicID = f.publicID
            }).FirstOrDefault();

            fit.ImageUrl32 = imageResolver.GetImageURL(fit.ShipID);

            //AddFittingHardwareToFittingSummary(imageResolver, contexto, fit);
            LogicaFittings logicafit = new LogicaFittings();

            logicafit.AddFittingHardwaresToFitting(contexto, imageResolver, shlist.tradeHubID, fit);

            return(fit);
        }
Ejemplo n.º 7
0
        internal IEnumerable <EVFitting> MountFittingCommon(EveShoppingContext contexto, IEnumerable <QFitting> qfittings, IImageResolver imageResolver, int tradeHubID)
        {
            List <EVFitting> fittings = new List <EVFitting>();

            foreach (var qfit in qfittings)
            {
                if (string.IsNullOrEmpty(qfit.PublicID))
                {
                    qfit.PublicID = Guid.NewGuid().ToString();
                }
                EVFitting fit = new EVFitting
                {
                    Description = qfit.Description,
                    PublicID    = qfit.PublicID,
                    ItemID      = qfit.FittingID,
                    Name        = qfit.Name,
                    ShipID      = qfit.ShipID,
                    ShipName    = qfit.ShipName,
                    ShipVolume  = qfit.ShipVolume,
                    Units       = qfit.Units,
                    ShipPrice   = qfit.ShipPrice,
                    TotalPrice  = qfit.Price,
                };

                fit.ImageUrl32 = imageResolver != null?imageResolver.GetImageURL(qfit.ShipID) : string.Empty;;
                fit.ShipVolume = RepositorioItems.GetVolume(qfit.InvType);
                fit.Volume     = fit.ShipVolume * fit.Units;
                fittings.Add(fit);



                AddFittingHardwaresToFitting(contexto, imageResolver, tradeHubID, fit);
            }

            return(fittings);
        }
Ejemplo n.º 8
0
        public EVListSummary SelectListSummaryPorPublicID(string publicID, IImageResolver imageResolver, bool includeEmpty = true)
        {
            EveShoppingContext contexto     = new EveShoppingContext();
            eshShoppingList    shoppingList = contexto.eshShoppingLists.Where(sl => sl.publicID == publicID).FirstOrDefault();

            if (shoppingList == null)
            {
                return(null);
            }

            EVListSummary summary =
                new EVListSummary();

            summary.Description      = shoppingList.description;
            summary.Name             = shoppingList.name;
            summary.PublicID         = shoppingList.publicID;
            summary.ReadOnlyPublicID = shoppingList.readOnlypublicID;
            summary.ShoppingListID   = shoppingList.shoppingListID;


            IEnumerable <EVFitting> fittings = this.SelectFitsInShoppingList(publicID, imageResolver);

            Dictionary <int, EVFittingHardware> diccHwd = new Dictionary <int, EVFittingHardware>();

            //add ships
            foreach (var fit in fittings)
            {
                EVFittingHardware fw = null;
                if (diccHwd.ContainsKey(fit.ShipID))
                {
                    fw             = diccHwd[fit.ShipID];
                    fw.Units      += fit.Units;
                    fw.Volume     += fit.Units * fit.ShipVolume;
                    fw.TotalPrice += fit.ShipPrice * fit.Units;
                }
                else
                {
                    fw = new EVFittingHardware
                    {
                        Name       = fit.ShipName,
                        ItemID     = fit.ShipID,
                        Units      = fit.Units,
                        Volume     = fit.ShipVolume * fit.Units,
                        UnitVolume = fit.ShipVolume,
                        TotalPrice = fit.ShipPrice * fit.Units,
                        UnitPrice  = fit.ShipPrice,
                        ImageUrl32 = imageResolver != null?imageResolver.GetImageURL(fit.ShipID) : string.Empty
                    };
                    diccHwd.Add(fw.ItemID, fw);
                }
            }
            //add fitted hardware
            foreach (var fit in fittings)
            {
                foreach (var fw in fit.FittingHardwares)
                {
                    if (diccHwd.ContainsKey(fw.ItemID))
                    {
                        EVFittingHardware fwd = diccHwd[fw.ItemID];
                        fwd.Units      += fw.Units * fit.Units;
                        fwd.Volume     += fw.Volume * fit.Units;
                        fwd.TotalPrice += fw.TotalPrice * fit.Units;
                        //fw.UnitPrice = fw.TotalPrice;
                    }
                    else
                    {
                        fw.Units      *= fit.Units;
                        fw.Volume     *= fit.Units;
                        fw.TotalPrice *= fit.Units;
                        if (fit.Units != 0)
                        {
                            fw.UnitVolume = fw.Volume / fw.Units;
                            fw.UnitPrice  = fw.TotalPrice / fw.Units;
                        }
                        else
                        {
                            fw.UnitVolume = fw.Volume;
                            fw.UnitPrice  = fw.TotalPrice;
                        }
                        diccHwd.Add(fw.ItemID, fw);
                    }
                }
            }
            //add market items
            IEnumerable <MarketItem> marketItems = this.SelectMarketItemsEnShoppingList(publicID, imageResolver);

            foreach (var mi in marketItems)
            {
                if (diccHwd.ContainsKey(mi.ItemID))
                {
                    EVFittingHardware fwd = diccHwd[mi.ItemID];
                    fwd.Units      += mi.Units;
                    fwd.Volume     += mi.Volume;
                    fwd.TotalPrice += mi.TotalPrice;
                }
                else
                {
                    EVFittingHardware fwd = new EVFittingHardware();
                    fwd.ImageUrl32 = mi.ImageUrl32;
                    fwd.ItemID     = mi.ItemID;
                    fwd.Name       = mi.Name;
                    fwd.TotalPrice = mi.TotalPrice;
                    fwd.UnitPrice  = mi.UnitPrice;
                    fwd.Units      = mi.Units;
                    fwd.Volume     = mi.Volume;
                    fwd.UnitVolume = mi.Volume / mi.Units;
                    diccHwd.Add(fwd.ItemID, fwd);
                }
            }

            // Update summary changes
            IEnumerable <eshShoppingListSummInvType> summInvs =
                contexto.eshShoppingListSummInvTypes.Where(sls => sls.shoppingListID == summary.ShoppingListID);

            foreach (var summInv in summInvs)
            {
                if (!diccHwd.ContainsKey(summInv.typeID))
                {
                    //if the item is not in the items dictionary, it doesnt exist anymore in the list, so we delete the delta
                    contexto.eshShoppingListSummInvTypes.Remove(summInv);
                }
                else
                {
                    EVFittingHardware fwd = diccHwd[summInv.typeID];
                    if ((summInv.delta < 0) && (summInv.delta * -1 > fwd.Units))
                    {
                        summInv.delta = (short)(fwd.Units * -1);
                    }
                    fwd.TotalPrice += summInv.delta * fwd.UnitPrice;
                    fwd.Volume     += (fwd.Volume / fwd.Units) * summInv.delta;
                    fwd.Units      += summInv.delta;
                    fwd.Delta       = summInv.delta;
                }
            }

            foreach (var item in diccHwd.Values)
            {
                if (includeEmpty || (item.Units > 0))
                {
                    summary.Items.Add(item);
                    summary.TotalPrice  += item.TotalPrice;
                    summary.TotalVolume += item.Volume;
                }
            }

            contexto.SaveChanges();



            return(summary);
        }