public async Task <ActionResult> ItemTypeInfoOpenMarketWindowForItemType(ItemTypeInfoPageViewModel model) { AuthDTO auth = GetAuth(_ESIClient); _Log.LogDebug(String.Format("Logged in to retrieve Character Info for Character Id: {0}", auth.CharacterId)); await _ESIClient.UserInterface.OpenMarketDetailsV1Async(auth, model.OpenMarketModel.ItemTypeId); return(RedirectToAction("ItemTypeInfo", new { id = model.OpenMarketModel.ItemTypeId })); }
public async Task <IActionResult> ItemTypeInfo(int id) { ItemType_V_Row itemType = _DBService.GetItemType(id); // TODO: SDE views don't handle this right now var itemTypeApi = await _ESIClient.Universe.GetTypeInfoV3Async(id); EVEStandard.Models.Type itemTypeApiModel = itemTypeApi.Model; MarketAveragePrices_Row averagePrice = _DBService.GetAveragePriceForTypeId(id); #region Best Sell/Buy Prices List <RegionMarketOrdersModel> bestSellPrices = new List <RegionMarketOrdersModel>(); List <RegionMarketOrdersRow> bestSellPricesResult = _DBService.GetBestSellPricesForTypeId(id); List <RegionMarketOrdersModel> bestBuyPrices = new List <RegionMarketOrdersModel>(); List <RegionMarketOrdersRow> bestBuyPricesResult = _DBService.GetBestBuyPricesForTypeId(id); List <int> systemIds = bestSellPricesResult.Select(x => x.SystemId).ToList(); systemIds.AddRange(bestBuyPricesResult.Select(x => x.SystemId)); List <SolarSystem_V_Row> systems = _DBService.GetSolarSystems(systemIds); for (int x = 0; x < bestSellPricesResult.Count; x++) { RegionMarketOrdersRow r = bestSellPricesResult[x]; int systemId = r.SystemId; string systemName = systems.Where(a => a.Id == systemId).Select(a => a.Name).FirstOrDefault(); string range = r.Range; // Format range string int rangeInt = -1; Int32.TryParse(range, out rangeInt); if (rangeInt > 0) { range = String.Format("{0} Jumps", rangeInt); } else { range = range.FirstCharToUpper(); } RegionMarketOrdersModel orderModel = new RegionMarketOrdersModel() { SystemId = r.SystemId, SystemName = systemName, Range = range, Price = r.Price }; bestSellPrices.Add(orderModel); } for (int x = 0; x < bestBuyPricesResult.Count; x++) { RegionMarketOrdersRow r = bestBuyPricesResult[x]; int systemId = r.SystemId; string systemName = systems.Where(a => a.Id == systemId).Select(a => a.Name).FirstOrDefault(); string range = r.Range; // Format range string int rangeInt = -1; Int32.TryParse(range, out rangeInt); if (rangeInt > 0) { range = String.Format("{0} Jumps", rangeInt); } else { range = range.FirstCharToUpper(); } RegionMarketOrdersModel orderModel = new RegionMarketOrdersModel() { SystemId = r.SystemId, SystemName = systemName, Range = range, Price = r.Price }; bestBuyPrices.Add(orderModel); } #endregion // TODO: Find a better way to manage this. Since "None" is committed to the view for use with filters, this causes issues List <ItemTypeAttribute> attrs = itemType.Attributes; attrs = attrs.Where(x => !String.IsNullOrWhiteSpace(x.DisplayName) && x.DisplayName != "None").ToList(); itemType.Attributes = attrs; List <ItemTypeEffect> effects = itemType.Effects; effects = effects.Where(x => !String.IsNullOrWhiteSpace(x.DisplayName) && x.DisplayName != "None").ToList(); itemType.Effects = effects; Blueprint_V_Row blueprint = _DBService.GetBlueprintByItemId(id); var model = new ItemTypeInfoPageViewModel { ItemTypeId = id, ItemType = itemType, ItemType_API = itemTypeApiModel, AveragePrice = averagePrice, BestSellPrices = bestSellPrices, BestBuyPrices = bestBuyPrices, Blueprint = blueprint, OpenMarketModel = new ItemTypeInfoOpenMarketModel(), OpenInfoModel = new ItemTypeInfoOpenInfoModel() }; return(View(model)); }