コード例 #1
0
        public void ClearAllDeltaFromSummary(string publicID)
        {
            EveShoppingContext contexto = new EveShoppingContext();
            eshShoppingList    list     = contexto.eshShoppingLists.Where(sl => sl.publicID == publicID).FirstOrDefault();

            ClearAllDeltaFromSummary(list, contexto);
        }
コード例 #2
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);
        }
コード例 #3
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();
        }
コード例 #4
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);
        }
コード例 #5
0
        public void CrearShoppingList(eshShoppingList lista)
        {
            lista.dateCreation = System.DateTime.Now;
            lista.dateUpdate   = System.DateTime.Now;

            this.Contexto.eshShoppingLists.Add(lista);
            this.Contexto.SaveChanges();
        }
コード例 #6
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);
        }
コード例 #7
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();
            }
        }
コード例 #8
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);
        }
コード例 #9
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();
        }
コード例 #10
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();
        }
コード例 #11
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);
        }
コード例 #12
0
        public void UpdateMarketItemToShoppingList(string publicID, int itemID, int units)
        {
            RepositorioShoppingLists repo = new RepositorioShoppingLists();
            eshShoppingList          list = repo.SelectShopingListPorPublicID(publicID);

            if (units < 1)
            {
                units = 1;
            }
            eshShoppingListInvType slit = repo.UpdateMarketItemEnShoppingList(list.shoppingListID, itemID, units);

            repo.ShoppingListUpdated(list.shoppingListID);
        }
コード例 #13
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();
            }
        }
コード例 #14
0
        /// <summary>
        /// si el id no existe no se hace nada
        /// </summary>
        /// <param name="fittingID"></param>
        public void DeleteFitFromShoppingLIST(string publicID, int fittingID)
        {
            EveShoppingContext context = new EveShoppingContext();

            eshShoppingList sl = context.eshShoppingLists.Where(s => s.publicID == publicID).FirstOrDefault();

            if (sl == null)
            {
                throw new ApplicationException(Messages.err_shoppingLisNoExiste);
            }
            if (sl != null)
            {
                DeleteFitFromShoppingLIST(sl.shoppingListID, fittingID, context);
            }
        }
コード例 #15
0
        public string GetPublidIDPorPublidIDRead(string publicIDRead)
        {
            EveShoppingContext contexto =
                new EveShoppingContext();
            eshShoppingList list = contexto.eshShoppingLists.Where(s => s.readOnlypublicID == publicIDRead).FirstOrDefault();

            if (list == null)
            {
                list = contexto.eshShoppingLists.Where(s => s.publicID == publicIDRead).FirstOrDefault();
            }
            if (list == null)
            {
                throw new ApplicationException(Messages.err_shoppingLisNoExiste);
            }
            return(list.publicID);
        }
コード例 #16
0
        public int SaveAnalisedFit(string listPublicId, FittingAnalyzed fitAnalysed, string userName = null)
        {
            EveShoppingContext contexto = new EveShoppingContext();

            eshShoppingList lista = null;
            eshFitting      fit   = null;

            using (TransactionScope scope = new TransactionScope())
            {
                fit = MountFittingFromFittingAnalysed(fitAnalysed);

                RepositorioShoppingLists repo = new RepositorioShoppingLists(contexto);
                if (!string.IsNullOrEmpty(listPublicId))
                {
                    lista = repo.SelectShopingListPorPublicID(listPublicId);
                    eshShoppingListFitting relation = new eshShoppingListFitting();
                    fit.eshShoppingListFittings.Add(relation);
                    relation.eshShoppingList = lista;
                    relation.units           = 1;
                    repo.ShoppingListUpdated(lista.shoppingListID);
                }

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

                repo.CrearFitting(fit);

                scope.Complete();
            }
            return(fit.fittingID);
        }
コード例 #17
0
        public bool IsShoppingListOwner(string publicID, string userName = null)
        {
            EveShoppingContext contexto =
                new EveShoppingContext();
            eshShoppingList list = contexto.eshShoppingLists.Where(sl => sl.publicID == publicID).FirstOrDefault();

            if (!list.userID.HasValue)
            {
                return(true);
            }

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

            if (user == null)
            {
                return(false);
            }
            if (list.userID.Value == user.UserId)
            {
                return(true);
            }

            return(false);
        }
コード例 #18
0
        public void UseFitInList(string publicID, int fitID)
        {
            EveShoppingContext contexto = new EveShoppingContext();
            eshShoppingList    sl       = contexto.eshShoppingLists.Where(s => s.publicID == publicID).FirstOrDefault();

            if (sl == null)
            {
                throw new ApplicationException(Messages.err_shoppingLisNoExiste);
            }
            if (contexto.eshShoppingListFittings.Where(slf => slf.shoppingListID == sl.shoppingListID && slf.fittingID == fitID).Count() > 0)
            {
                throw new ApplicationException(Messages.err_fittigAlreadyUsed);
            }
            eshShoppingListFitting slft = new eshShoppingListFitting();

            slft.shoppingListID = sl.shoppingListID;
            slft.fittingID      = fitID;
            slft.units          = 1;
            contexto.eshShoppingListFittings.Add(slft);
            RepositorioShoppingLists repo = new RepositorioShoppingLists();

            repo.ShoppingListUpdated(sl.shoppingListID, contexto);
            contexto.SaveChanges();
        }
コード例 #19
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);
        }
コード例 #20
0
 internal void ClearAllDeltaFromSummary(eshShoppingList sl, EveShoppingContext contexto)
 {
     sl.eshShoppingListSummInvTypes.Clear();
     contexto.SaveChanges();
 }
コード例 #21
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);
        }
コード例 #22
0
        private void UpdateDeltaToSummary(string publicID, int itemID, int units, bool isSet, EveShoppingContext contexto, eshShoppingList list)
        {
            ChangesSummaryItem changes = new ChangesSummaryItem();

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

            eshShoppingListSummInvType summEntry = contexto.eshShoppingListSummInvTypes.Where(si => si.shoppingListID == list.shoppingListID && si.typeID == itemID).FirstOrDefault();

            //check if we are setting it or adding it to the value of the current delta
            if (!isSet)
            {
                if (summEntry != null)
                {
                    units += summEntry.delta;
                }
            }

            if (units != 0)
            {
                if (summEntry == null)
                {
                    summEntry                = new eshShoppingListSummInvType();
                    summEntry.typeID         = itemID;
                    summEntry.shoppingListID = list.shoppingListID;
                    contexto.eshShoppingListSummInvTypes.Add(summEntry);
                }
                summEntry.delta = units;
            }
            else
            {
                if (summEntry != null)
                {
                    contexto.eshShoppingListSummInvTypes.Remove(summEntry);
                }
            }
            list.dateUpdate = DateTime.Now;
            list.dateAccess = DateTime.Now;

            contexto.SaveChanges();
        }