private static EVFitting MontarEVFiting(eshFitting item, short units) { EVFitting fit = new EVFitting(); fit.Description = item.description; fit.PublicID = item.publicID; fit.Name = item.name; fit.ShipName = item.invType.typeName; fit.ShipVolume = item.shipVolume; fit.Volume = item.volume; fit.ItemID = item.fittingID; fit.ImageUrl32 = GetImageUrl32(item.invType.typeID); fit.Units = units; foreach (var itemHwd in item.eshFittingHardwares) { EVFittingHardware hwd = new EVFittingHardware(); hwd.Name = itemHwd.invType.typeName; hwd.Units = itemHwd.units; hwd.Volume = itemHwd.volume; hwd.ItemID = itemHwd.fittingHardwareID; hwd.ImageUrl32 = string.Format("http://image.eveonline.com/Type/{0}_32.png", itemHwd.invType.typeID); hwd.Slot = itemHwd.slotID; fit.FittingHardwares.Add(hwd); } return(fit); }
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); }
public static string Convert(EVFittingHardware data) { return(string.Format("[\"{0}\",\"{1}\",\"{2}\",\"{3}\", \"{4}\",\"{5}\"]", data.ImageUrl32, data.Name, data.TotalPrice, data.Volume, data.Units, data.ItemID )); }
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); }