private List <DisplayDetailHelper> MapToHelper(List <Offering> offeringIQ) { DisplayDetailHelper = new List <DisplayDetailHelper>(); foreach (var offering in offeringIQ) { DisplayDetailHelper listItem = new DisplayDetailHelper(); listItem.VendorName = offering.Vendor.VendorName; listItem.VendorAddress = offering.Vendor.VendorAddress1; listItem.VendorAddress2 = offering.Vendor.VendorAddress2; listItem.PricePerUnit = offering.ProductPricePerWeight; List <double> archivedprices = GetPricesFromArchives(offering.OfferingID); double average = 0; if (archivedprices.Count > 0) { average = ReturnAverage(archivedprices); average = Math.Round(average, 2); listItem.Average = average; } else { listItem.Average = null; } listItem.asOfDate = offering.AsOfDate; DisplayDetailHelper.Add(listItem); } return(DisplayDetailHelper); }
public async Task <IActionResult> OnGetAsync(Guid?productId, string sortOrder) { CurrentSort = sortOrder; PriceSort = String.IsNullOrEmpty(sortOrder) ? "price_desc" : ""; AverageSort = sortOrder == "Average" ? "average_desc" : "Average"; IQueryable <Offering> offeringIQ = from o in _context.Offering.Where(o => o.ProductID == productId).Include(v => v.Vendor) select o; Offerings = await offeringIQ.AsNoTracking().ToListAsync(); DisplayDetailHelper = MapToHelper(Offerings); switch (sortOrder) { case "price_desc": DisplayDetailHelper = DisplayDetailHelper.OrderByDescending(d => d.PricePerUnit).ToList(); break; case "Average": DisplayDetailHelper = DisplayDetailHelper.OrderBy(d => d.Average).ToList(); break; case "average_desc": DisplayDetailHelper = DisplayDetailHelper.OrderByDescending(d => d.Average).ToList(); break; default: DisplayDetailHelper = DisplayDetailHelper.OrderBy(d => d.PricePerUnit).ToList(); break; } if (productId == null) { return(NotFound()); } Product = await _context.Product .Include(p => p.ProductCategory) .Include(o => o.Offering) .ThenInclude(v => v.Vendor) .AsNoTracking() .FirstOrDefaultAsync(m => m.ProductID == productId); if (Product == null) { return(NotFound()); } return(Page()); }