示例#1
0
        public string CreateGroupList(string userName, string name, string description)
        {
            try
            {
                EveShoppingContext contexto = new EveShoppingContext();

                UserProfile up = contexto.UserProfiles.Where(u => u.UserName == userName).FirstOrDefault();
                if (up == null)
                {
                    throw new ApplicationException(Messages.err_usuarioNoExiste);
                }

                eshGroupShoppingList group =
                    new eshGroupShoppingList();
                group.dateCreation = DateTime.Now;
                group.dateUpdate   = DateTime.Now;
                group.name         = name;
                group.description  = description;
                group.publicID     = Guid.NewGuid().ToString();
                group.tradeHubID   = 30000142;
                group.userID       = up.UserId;

                contexto.eshGroupShoppingLists.Add(group);
                contexto.SaveChanges();

                return(group.publicID);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
示例#2
0
        public void RemoveListFromGroup(string groupPublicID, string listPublicID, string userName)
        {
            EveShoppingContext contexto = new EveShoppingContext();

            eshGroupShoppingList sl;
            eshSnapshot          snap;

            CommonTestGetForGroupShoppingListUpdate(groupPublicID, listPublicID, userName, contexto, out sl);

            LogicaSnapshots logicaSnap = new LogicaSnapshots();

            snap = logicaSnap.SelectStaticListByPublicID(listPublicID);
            if (snap == null)
            {
                throw new ApplicationException(Messages.err_staticShoppingListNoExiste);
            }


            eshGroupShoppingListSnapshot gsls = contexto.eshGroupShoppingListSnapshots.Where(gs => gs.snapshotID == snap.snapshotID && gs.groupShoppingListID == sl.groupShoppingListID).FirstOrDefault();

            if (gsls == null)
            {
                throw new ApplicationException();
            }

            contexto.eshGroupShoppingListSnapshots.Remove(gsls);
            contexto.SaveChanges();
        }
示例#3
0
        public IEnumerable <EVFitting> SelectFitsInShoppingList(string publicID, IImageResolver imageResolver)
        {
            EveShoppingContext contexto =
                new EveShoppingContext();
            List <EVFitting>       fittings  = new List <EVFitting>();
            IEnumerable <QFitting> qfittings =
                (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 it in contexto.invTypes on f.shipTypeID equals it.typeID
                 join p in contexto.eshPrices on new { sl.tradeHubID, it.typeID } equals new { tradeHubID = p.solarSystemID, p.typeID }
                 where sl.publicID == publicID
                 select new QFitting
            {
                Description = f.description,
                PublicID = f.publicID,
                FittingID = f.fittingID,
                Name = f.name,
                ShipID = f.shipTypeID.Value,
                ShipName = f.invType.typeName,
                ShipVolume = f.shipVolume,
                Units = slf.units,
                ShipPrice = p.avg,
                Price = p.avg * slf.units,
                Volume = f.shipVolume * slf.units,
                InvType = it
            });
            int tradeHubID = contexto.eshShoppingLists.Where(s => s.publicID == publicID).FirstOrDefault().tradeHubID;

            LogicaFittings logicaFittings = new LogicaFittings();

            return(logicaFittings.MountFittingCommon(contexto, qfittings, imageResolver, tradeHubID));
        }
示例#4
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);
        }
示例#5
0
        public void SaveListInMyLists(string publicID, string userName)
        {
            EveShoppingContext contexto = new EveShoppingContext();
            eshShoppingList    list     = contexto.eshShoppingLists.Where(sl => sl.publicID == publicID).FirstOrDefault();

            if (list == null)
            {
                throw new ApplicationException(Messages.err_shoppingLisNoExiste);
            }

            //si la shopping list ya tiene un propietario no lo cambiamos.
            if (list.userID.HasValue)
            {
                return;
            }

            UserProfile user = contexto.UserProfiles.Where(up => up.UserName == userName).FirstOrDefault();

            if (user == null)
            {
                throw new ApplicationException(Messages.err_usuarioNoExiste);
            }

            foreach (var slf in list.eshShoppingListFittings)
            {
                if (slf.eshFitting != null && !slf.eshFitting.userID.HasValue)
                {
                    slf.eshFitting.userID = user.UserId;
                }
            }

            list.userID = user.UserId;
            contexto.SaveChanges();
        }
示例#6
0
        public IList <EVShoppingListHeader> SelectShoppingListsByUserName(string userName)
        {
            EveShoppingContext contexto =
                new EveShoppingContext();

            UserProfile user = contexto.UserProfiles.Where(u => u.UserName.ToLower() == userName.ToLower()).FirstOrDefault();

            if (user == null)
            {
                throw new ApplicationException(Messages.err_usuarioNoExiste);
            }

            var query = from u in contexto.UserProfiles
                        join sl in contexto.eshShoppingLists on u.UserId equals sl.userID.Value
                        where u.UserName == userName
                        select new EVShoppingListHeader
            {
                dateCreation = sl.dateCreation,
                dateUpdate   = sl.dateUpdate,
                name         = sl.name,
                publicID     = sl.publicID,
                staticCount  = sl.eshSnapshots.Count
            };

            return(query.ToList());

            //return user.eshShoppingLists.OrderByDescending(sl => sl.dateAccess).ToList();
        }
示例#7
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);
        }
示例#8
0
        public void DeleteStaticShoppingList(string staticPublicID, string userName)
        {
            EveShoppingContext contexto = new EveShoppingContext();
            eshSnapshot        snap     = contexto.eshSnapshots.Where(s => s.publicID == staticPublicID).FirstOrDefault();

            DeleteStaticShoppingList(snap, userName, contexto);
        }
示例#9
0
        public void AddFittingHardwaresToFitting(EveShoppingContext contexto, IImageResolver imageResolver, int tradeHubID, EVFitting fit)
        {
            var qfittingHardwares =
                (from f in contexto.eshFittings
                 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 { 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 = p.avg,
                Slot = fh.slotID,
                SlotName = fh.eshFittingSlot.name,
                Units = fh.units,
                Volume = fh.units * it.volume.Value
            });

            foreach (var item in qfittingHardwares)
            {
                item.ImageUrl32 = imageResolver != null?imageResolver.GetImageURL(item.ItemID) : string.Empty;

                fit.FittingHardwares.Add(item);
                fit.TotalPrice += item.TotalPrice * fit.Units;
                fit.Volume     += item.Volume * fit.Units;
            }
        }
示例#10
0
        public void ClearAllDeltaFromSummary(string publicID)
        {
            EveShoppingContext contexto = new EveShoppingContext();
            eshShoppingList    list     = contexto.eshShoppingLists.Where(sl => sl.publicID == publicID).FirstOrDefault();

            ClearAllDeltaFromSummary(list, contexto);
        }
示例#11
0
        public void UpdateDeltaToSummary(string publicID, int itemID, int units, bool isSet = true)
        {
            EveShoppingContext contexto = new EveShoppingContext();
            eshShoppingList    list     = contexto.eshShoppingLists.Where(sl => sl.publicID == publicID).FirstOrDefault();

            UpdateDeltaToSummary(publicID, itemID, units, isSet, contexto, list);
        }
示例#12
0
        public IEnumerable <EVFitting> SelectFitsByMarketGroup(string userName, int marketGroupID, IImageResolver imageResolver, int tradeHubID)
        {
            EveShoppingContext contexto =
                new EveShoppingContext();
            var qfittings =
                (from f in contexto.eshFittings
                 join it in contexto.invTypes on f.shipTypeID equals it.typeID
                 join mg in contexto.invMarketGroups on it.marketGroupID equals mg.marketGroupID
                 join p in contexto.eshPrices on new { tradeHubID, it.typeID } equals new { tradeHubID = p.solarSystemID, p.typeID }
                 join u in contexto.UserProfiles on f.userID equals u.UserId
                 where u.UserName == userName && it.marketGroupID == marketGroupID
                 select new QFitting
            {
                Description = f.description,
                PublicID = f.publicID,
                FittingID = f.fittingID,
                Name = f.name,
                ShipID = f.shipTypeID.Value,
                ShipName = f.invType.typeName,
                ShipVolume = f.shipVolume,
                Units = 1,
                ShipPrice = p.avg,
                Price = p.avg,
                Volume = f.shipVolume,
                InvType = it
            });

            return(MountFittingCommon(contexto, qfittings, imageResolver, tradeHubID));
        }
示例#13
0
        private IDictionary <int, IList <int> > CreateShipGroupsDictionary(int initialGroupId = 4)
        {
            TreeNode <int> tree = new TreeNode <int>();

            tree.Value = initialGroupId;

            List <TreeNode <int> > finalNodeList = new List <TreeNode <int> >();


            FillNextLevel(tree, finalNodeList);

            List <int> finalNodeIdList = new List <int>();

            foreach (var item in finalNodeList)
            {
                finalNodeIdList.Add(item.Value);
            }


            EveShoppingContext contexto = new EveShoppingContext();
            var query = (from it in contexto.invTypes
                         where finalNodeIdList.Contains(it.marketGroupID.Value)
                         select it).ToList();


            Dictionary <int, IList <int> > dicc = new Dictionary <int, IList <int> >();

            foreach (var item in query)
            {
                IList <int> listaGroups = GetListOfGroupsToTop(item, finalNodeList);
                dicc.Add(item.typeID, listaGroups);
            }

            return(dicc);
        }
示例#14
0
        public string CrearShoppingList(string name, string description, string userName = null)
        {
            string             publicID = Guid.NewGuid().ToString();
            EveShoppingContext contexto = new EveShoppingContext();

            int?userId = null;

            if (userName != null)
            {
                UserProfile up = contexto.UserProfiles.Where(p => p.UserName == userName).FirstOrDefault();
                if (up == null)
                {
                    throw new ApplicationException(Messages.err_usuarioNoExiste);
                }
                userId = up.UserId;
            }

            eshShoppingList sl = new eshShoppingList();

            sl.name             = name;
            sl.description      = description;
            sl.publicID         = publicID;
            sl.readOnlypublicID = Guid.NewGuid().ToString();
            sl.dateCreation     = System.DateTime.Now;
            sl.dateUpdate       = System.DateTime.Now;
            sl.dateAccess       = System.DateTime.Now;
            sl.tradeHubID       = 30000142;
            sl.userID           = userId;
            contexto.eshShoppingLists.Add(sl);
            contexto.SaveChanges();
            return(publicID);
        }
示例#15
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);
        }
示例#16
0
        public eshShoppingList SelectShoppingListByPublicID(string publicID)
        {
            EveShoppingContext contexto =
                new EveShoppingContext();

            return(contexto.eshShoppingLists.Include("eshShoppingListFittings.eshFitting.eshFittingHardwares.invType")
                   .Include("eshShoppingListInvTypes.invType").Where(sl => sl.publicID == publicID).FirstOrDefault());
        }
示例#17
0
 public RepositorioBase(EveShoppingContext _contexto)
 {
     if (_contexto == null)
     {
         _contexto = new EveShoppingContext();
     }
     Contexto = _contexto;
 }
示例#18
0
        public void DeleteItemFromShoppingList(string publicID, int itemID)
        {
            EveShoppingContext contexto = new EveShoppingContext();

            RepositorioShoppingLists repo = new RepositorioShoppingLists(contexto);
            eshShoppingList          list = repo.SelectShopingListPorPublicID(publicID);

            DeleteItemFromShoppingList(list.shoppingListID, itemID, contexto);
        }
示例#19
0
        internal void DeleteItemFromShoppingList(int id, int itemID, EveShoppingContext contexto = null)
        {
            RepositorioShoppingLists repo = new RepositorioShoppingLists(contexto);
            eshShoppingListInvType   item = repo.SelectMarketItemEnShoppingListPorID(id, itemID);

            contexto.eshShoppingListInvTypes.Remove(item);
            repo.ShoppingListUpdated(id, contexto);
            contexto.SaveChanges();
        }
示例#20
0
        public int GetFitMarketGroupID(int fitID)
        {
            EveShoppingContext contexto = new EveShoppingContext();
            var groupID =
                (from f in contexto.eshFittings
                 where f.fittingID == fitID
                 select f.invType.marketGroupID).FirstOrDefault();

            return(groupID.Value);
        }
示例#21
0
        public int GetFittingCountByUser(string userName)
        {
            EveShoppingContext contexto = new EveShoppingContext();
            var count =
                (from f in contexto.eshFittings
                 join u in contexto.UserProfiles on f.userID equals u.UserId
                 where u.UserName == userName
                 select f.fittingID).Count();

            return(count);
        }
示例#22
0
        public void GenerateTinyUrlNumbers(int from, int to)
        {
            EveShoppingContext contexto  = new EveShoppingContext();
            NumberGenerator    generator = new NumberGenerator();

            IEnumerable <int> numbers = generator.Generate(from, to);

            foreach (var n in numbers)
            {
            }
        }
示例#23
0
        public string CrearShoppingList(eshShoppingList lista)
        {
            string publicID = Guid.NewGuid().ToString();

            lista.publicID = publicID;
            EveShoppingContext contexto = new EveShoppingContext();

            contexto.eshShoppingLists.Add(lista);
            contexto.SaveChanges();
            return(publicID);
        }
示例#24
0
        public void ShoppingListUpdated(string publicId, EveShoppingContext context = null)
        {
            if (context == null)
            {
                context = new EveShoppingContext();
            }
            eshShoppingList sl = context.eshShoppingLists.Where(s => s.publicID == publicId).FirstOrDefault();

            sl.dateUpdate = System.DateTime.Now;
            context.SaveChanges();
        }
示例#25
0
        private string GetShipName(int id)
        {
            EveShoppingContext contexto = new EveShoppingContext();
            invType            ship     = contexto.invTypes.Where(i => i.typeID == id).FirstOrDefault();

            if (ship == null)
            {
                throw new FittingFormatNotRecognisedException(Messages.err_notRecognisedItemInFitting);
            }
            return(ship.typeName);
        }
示例#26
0
        public void DeleteShoppingList(string publicID, string userName)
        {
            EveShoppingContext contexto = new EveShoppingContext();

            using (TransactionScope scope = new TransactionScope())
            {
                eshShoppingList sl = contexto.eshShoppingLists.Where(s => s.publicID == publicID).FirstOrDefault();
                if (sl == null)
                {
                    throw new ApplicationException(Messages.err_shoppingLisNoExiste);
                }

                if (sl.userID.HasValue && userName == null)
                {
                    throw new ApplicationException(Messages.err_notOwner);
                }

                UserProfile user = contexto.UserProfiles.Where(u => u.UserName == userName).FirstOrDefault();

                if (sl.userID.HasValue && sl.userID.Value != user.UserId)
                {
                    throw new ApplicationException(Messages.err_notOwner);
                }

                //passed the user right test, the shopping list can be deleted based on the owner.

                //At this moment we dont make any further test regarding if the list used or not, it is possible to delete only based on the ownership.

                //Delete the related static lists
                LogicaSnapshots    logicaSnaps   = new LogicaSnapshots();
                List <eshSnapshot> listSnapshots = sl.eshSnapshots.ToList();
                foreach (var snp in listSnapshots)
                {
                    logicaSnaps.DeleteStaticShoppingList(snp, userName, contexto);
                }
                List <eshShoppingListFitting> listFittings = sl.eshShoppingListFittings.ToList();
                foreach (var fit in listFittings)
                {
                    this.DeleteFitFromShoppingLIST(sl.shoppingListID, fit.fittingID, contexto);
                }
                List <eshShoppingListInvType> listInvtTypes = sl.eshShoppingListInvTypes.ToList();
                foreach (var it in listInvtTypes)
                {
                    this.DeleteItemFromShoppingList(sl.shoppingListID, it.typeID, contexto);
                }

                ClearAllDeltaFromSummary(sl, contexto);

                contexto.eshShoppingLists.Remove(sl);

                contexto.SaveChanges();
                scope.Complete();
            }
        }
示例#27
0
        public bool IsShoppingListFree(string publicID)
        {
            EveShoppingContext contexto =
                new EveShoppingContext();
            eshShoppingList list = contexto.eshShoppingLists.Where(sl => sl.publicID == publicID).FirstOrDefault();

            if (list == null)
            {
                throw new ApplicationException(Messages.err_shoppingLisNoExiste);
            }
            return(!list.userID.HasValue);
        }
示例#28
0
        public void ActualizarShoppingListHeader(string publicID, string slName, string slDescription)
        {
            EveShoppingContext contexto = new EveShoppingContext();
            eshShoppingList    sl       = null;

            sl             = contexto.eshShoppingLists.Where(s => s.publicID == publicID).FirstOrDefault();
            sl.name        = slName;
            sl.description = slDescription;
            sl.dateUpdate  = DateTime.Now;
            sl.dateAccess  = DateTime.Now;
            contexto.SaveChanges();
        }
示例#29
0
        public void ActualizarGroupListHeader(string publicID, string userName, string name, string description)
        {
            EveShoppingContext contexto = new EveShoppingContext();

            eshGroupShoppingList gsl;

            CommonTestGetForGroupShoppingListUpdate(publicID, userName, contexto, out gsl);

            gsl.name        = name;
            gsl.description = description;
            gsl.dateUpdate  = DateTime.Now;
            contexto.SaveChanges();
        }
示例#30
0
        public void UpdateAllDeltaToSummary(string publicId, IEnumerable <KeyValuePair <int, int> > deltas, bool isSet = true)
        {
            EveShoppingContext contexto = new EveShoppingContext();

            using (contexto)
            {
                foreach (var item in deltas)
                {
                    eshShoppingList list = contexto.eshShoppingLists.Where(sl => sl.publicID == publicId).FirstOrDefault();
                    UpdateDeltaToSummary(publicId, item.Key, item.Value, isSet, contexto, list);
                }
                contexto.SaveChanges();
            }
        }