//在TicketGroupsList頁面中Ajax調用這個方法取得活動分頁 public ActionResult GetTicketGroupsPages(int page = 1, string orderMode = "pricedown", int minPrice = 0, int maxPrice = int.MaxValue, int priceFilter = 0) { int currentPage = page < 1 ? 1 : page; int pageSize = 4; //ViewBag紀錄此Action方法,才能執行正確的換頁 ViewBag.ActionName = "GetTicketGroupsPages"; //ViewBag紀錄此OrderMode,因為換頁時也會呼叫此方法 ViewBag.OrderMode = orderMode; List <TicketGroups> ticketgroups = db.TicketGroups.Where(t => t.Status == true).ToList(); if (priceFilter == 1) { ViewBag.PriceFilter = 1; ViewBag.MinPrice = minPrice; ViewBag.MaxPrice = maxPrice; ticketgroups = ticketgroups.Where(g => Math.Round(g.TicketGroupDetail.Select( tgd => { return(tgd.Activity.Tickets.Count() == 0 ? 0 : tgd.Activity.Tickets.Min(a => a.Price)); }).Sum() * (1 - g.TicketGroupDiscount), 0) >= minPrice && Math.Round(g.TicketGroupDetail.Select( tgd => { return(tgd.Activity.Tickets.Count() == 0 ? 0 : tgd.Activity.Tickets.Min(a => a.Price)); }).Sum() * (1 - g.TicketGroupDiscount), 0) <= maxPrice).ToList(); } ticketgroups = OrderTicketGroupsByOrderMode(ticketgroups, orderMode); VMTicketGroupsList vm = new VMTicketGroupsList() { ticketGroups = ticketgroups }; IPagedList <TicketGroups> pagedList = vm.ticketGroups.ToPagedList(currentPage, pageSize); return(PartialView(pagedList)); }
// 首頁按下套票後呼叫的Controller public ActionResult TicketGroupsList() { List <TicketGroups> ticketgroups = db.TicketGroups.Where(t => t.Status == true).ToList(); //if (ticketgroups.Count() == 0) return View("ProductNotFound","_Layout"); // todo取出套票中各個活動最便宜的票價,然後加總乘以套票的優惠折扣,其中最貴的套票的價錢 int max = (int)ticketgroups.Max(ticketGroup => Math.Round(ticketGroup.TicketGroupDetail.Select( tgd => { return(tgd.Activity.Tickets.Count() == 0 ? 0 : tgd.Activity.Tickets.Min(t => t.Price)); }).Sum() * (1 - ticketGroup.TicketGroupDiscount), 0)); VMTicketGroupsList vm = new VMTicketGroupsList() { ticketGroups = ticketgroups, maxPriceOfAll = max }; return(View(vm)); }