Beispiel #1
0
        public ActionResult DisplayWorkshopEvents(string sortOrder, string currentFilter, string searchString, int?page)
        {
            var session   = Session["LoginWorkshop"] as SessionModel;
            var viewModel = new List <DisplayEventModel>();

            if (session != null)
            {
                using (var db = new MechAppProjectEntities())
                {
                    var workshopEvents = db.ServiceEvents.Where(x => x.WorkshopService.WorkshopId == session.WorkshopId).ToList();

                    workshopEvents.ForEach(x =>
                    {
                        viewModel.Add(new DisplayEventModel()
                        {
                            StartDate      = x.StartDate,
                            EndDate        = x.EndDate,
                            WorkshopName   = x.WorkshopService.Workshop.WorkshopName,
                            Status         = EventsHelper.ConvertEventStatus(x.OrderStatus),
                            CustomerName   = x.Customer.Name,
                            StatusId       = (OrderStatus)x.OrderStatus,
                            ServiceEventId = x.ServiceEventId
                        });
                    });
                }
            }

            ViewBag.CurrentSort  = sortOrder;
            ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";

            if (searchString != null)
            {
                page = 1;
            }
            else
            {
                searchString = currentFilter;
            }

            ViewBag.CurrentFilter = searchString;

            var eventsView = from w in viewModel
                             select w;

            if (!String.IsNullOrEmpty(searchString))
            {
                eventsView = eventsView.Where(w => w.WorkshopName.Contains(searchString));
            }

            switch (sortOrder)
            {
            case "name_desc":
                eventsView = eventsView.OrderByDescending(w => w.Status);
                break;

            default:      // Name ascending
                eventsView = eventsView.OrderBy(w => w.Status);
                break;
            }

            int pageSize   = 3;
            int pageNumber = (page ?? 1);

            return(View(eventsView.ToPagedList(pageNumber, pageSize)));
        }