public TestsBookedListModel Create(IEnumerable <OrderedPair <long, long> > eventCustomerTestOrderedPairs, IEnumerable <EventCustomer> eventCustomers, IEnumerable <Event> events, IEnumerable <Customer> customers, IEnumerable <Pod> pods, IEnumerable <Test> tests) { var model = new TestsBookedListModel(); var appointmentsBookedModels = new List <TestsBookedModel>(); var eventIds = eventCustomers.Select(ec => ec.EventId).Distinct().ToArray(); var hosts = _hostRepository.GetEventHosts(eventIds); eventCustomerTestOrderedPairs.ToList().ForEach(ect => { var ec = eventCustomers.FirstOrDefault(o => o.Id == ect.FirstValue); var theEvent = events.FirstOrDefault(o => o.Id == ec.EventId); var customer = customers.FirstOrDefault(c => c.CustomerId == ec.CustomerId); var testNames = tests.Where(x => x.Id == ect.SecondValue).First().Name; var podNames = (theEvent.PodIds != null && theEvent.PodIds.Count() > 0) ? string.Join(", ", pods.Where(p => theEvent.PodIds.Contains(p.Id)).Select(p => p.Name)) : string.Empty; var host = hosts.First(h => h.Id == theEvent.HostId); var testModel = new TestsBookedModel { CustomerId = ec.CustomerId, CustomerName = customer.NameAsString, EventName = host.OrganizationName, EventDate = theEvent.EventDate, EventId = ec.EventId, TestName = testNames, PodName = podNames }; appointmentsBookedModels.Add(testModel); }); model.Collection = appointmentsBookedModels; return(model); }
public ActionResult TestsBooked(TestsBookedListModelFilter filter = null, int pageNumber = 1) { int totalRecords; if (filter == null) { filter = new TestsBookedListModelFilter { FromDate = DateTime.Now.Date }; } filter.FromDate = filter.FromDate.HasValue ? filter.FromDate.Value : DateTime.Now.Date; if (filter != null && filter.FromDate < DateTime.Today) { return(View(new TestsBookedListModel { Filter = filter, FeedbackMessage = FeedbackMessageModel.CreateFailureMessage("From date can not be past date.") })); } var model = _eventCustomerReportingService.GetTestsBooked(pageNumber, _pageSize, filter, out totalRecords); if (model == null) { model = new TestsBookedListModel(); } model.Filter = filter; var currentAction = ControllerContext.RouteData.Values["action"].ToString(); Func <int, string> urlFunc = pn => Url.Action(currentAction, new { pageNumber = pn, filter.FromDate, filter.ToDate, filter.EventId }); model.PagingModel = new PagingModel(pageNumber, _pageSize, totalRecords, urlFunc); return(View(model)); }