public async Task<ActionResult> GameList() { var viewModel = new DateFilteredListViewModel<GameListRowViewModel> { Items = await db.Games .Select( g => new GameListRowViewModel { Game = g, QuantitySold = db.WebOrders .SelectMany( wo => wo.OrderItems .Where(oi => g.GameSKUs.Contains(oi.Product))) .Select(oi => oi.Quantity) .DefaultIfEmpty(0).Sum() } ).OrderByDescending(g => g.QuantitySold).ToListAsync() }; return View(viewModel); }
public async Task<ActionResult> GameList(DateTime start, DateTime? end) { end = SetToEndOfDayIfInPast(end); var viewModel = new DateFilteredListViewModel<GameListRowViewModel> { StartDate = start, EndDate = end, Items = await db.Games .Select( g => new GameListRowViewModel { Game = g, QuantitySold = db.WebOrders .Where(o => o.OrderDate >= start && o.OrderDate <= end) .SelectMany( wo => wo.OrderItems .Where(oi => g.GameSKUs.Contains(oi.Product))) .Select(oi => oi.Quantity) .DefaultIfEmpty(0).Sum() } ).OrderByDescending(g => g.QuantitySold).ToListAsync() }; return View(viewModel); }
public async Task<ActionResult> MemberList(DateTime start, DateTime? optionalEnd) { DateTime end = SetToEndOfDayIfInPast(optionalEnd); var viewModel = new DateFilteredListViewModel<MemberListItemViewModel> { StartDate = start, EndDate = end, Items = await db.Users. Where(u => u.Member != null). Select( u => new MemberListItemViewModel { UserName = u.UserName, FullName = u.FirstName + " " + u.LastName, OrderCount = db.WebOrders.Count( wo => wo.MemberId == u.Id && wo.OrderDate >= start && wo.OrderDate <= end), TotalSpentOnOrders = db.WebOrders. Where(wo => wo.MemberId == u.Id && wo.OrderDate >= start && wo.OrderDate <= end). Select(wo => wo.OrderSubtotal + wo.ShippingCost + wo.TaxAmount). DefaultIfEmpty(0). Sum(), AverageOrderTotal = db.WebOrders. Where(wo => wo.MemberId == u.Id && wo.OrderDate >= start && wo.OrderDate <= end). Select(wo => wo.OrderSubtotal + wo.ShippingCost + wo.TaxAmount). DefaultIfEmpty(0). Average() } ). OrderByDescending(mli => mli.TotalSpentOnOrders). ThenByDescending(mli => mli.AverageOrderTotal). ThenByDescending(mli => mli.OrderCount). ToListAsync() }; return View(viewModel); }
public async Task<ActionResult> MemberList() { var viewModel = new DateFilteredListViewModel<MemberListItemViewModel> { Items = await db.Users. Where(u => u.Member != null). Select(u => new MemberListItemViewModel { UserName = u.UserName, FullName = u.FirstName + " " + u.LastName, OrderCount = db.WebOrders.Count(wo => wo.MemberId == u.Id), TotalSpentOnOrders = db.WebOrders. Where(wo => wo.MemberId == u.Id). Select(wo => wo.OrderSubtotal + wo.ShippingCost + wo.TaxAmount). DefaultIfEmpty(0). Sum(), AverageOrderTotal = db.WebOrders. Where(wo => wo.MemberId == u.Id). Select(wo => wo.OrderSubtotal + wo.ShippingCost + wo.TaxAmount). DefaultIfEmpty(0). Average() } ). OrderByDescending(mli => mli.TotalSpentOnOrders). ThenByDescending(mli => mli.AverageOrderTotal). ToListAsync() }; return View(viewModel); }