public TechnicalLimitedScreeningCustomerListModel Create(IEnumerable <EventCustomerResult> eventCustomerResults, IEnumerable <Event> events, IEnumerable <Pod> pods, IEnumerable <Customer> customers, IEnumerable <OrderedPair <long, string> > ecAndPackagePair,
                                                                 IEnumerable <OrderedPair <long, string> > ecAndTestPair, IEnumerable <TestUnabletoScreenViewModel> unableToScreenViewModel, bool isNewResultFlow)
        {
            var listModel         = new TechnicalLimitedScreeningCustomerListModel();
            var customerViewModel = new List <TechnicalLimitedScreeningCustomerViewModel>();

            foreach (EventCustomerResult eventCustomerResult in eventCustomerResults)
            {
                var theEvent    = events.Where(e => e.Id == eventCustomerResult.EventId).Single();
                var customer    = customers.Where(c => c.CustomerId == eventCustomerResult.CustomerId).Single();
                var podNames    = string.Join(", ", pods.Where(p => theEvent.PodIds.Contains(p.Id)).Select(p => p.Name));
                var packagename = ecAndPackagePair.Where(p => p.FirstValue == eventCustomerResult.Id).Select(p => p.SecondValue).SingleOrDefault();
                var tests       = string.Join(", ", ecAndTestPair.Where(p => p.FirstValue == eventCustomerResult.Id).Select(p => p.SecondValue).ToArray());
                var phone       = ((customer.HomePhoneNumber ?? customer.OfficePhoneNumber) ?? customer.MobilePhoneNumber);

                if (string.IsNullOrEmpty(packagename))
                {
                    packagename = tests;
                }
                else if (!string.IsNullOrEmpty(tests))
                {
                    packagename += " + " + tests;
                }

                var viewModel = new TechnicalLimitedScreeningCustomerViewModel
                {
                    Address = Mapper.Map <Address, AddressViewModel>(customer.Address),
                    EventCustomerResultId = eventCustomerResult.Id,
                    EventId                                                        = theEvent.Id,
                    EventName                                                      = theEvent.Name,
                    CustomerId                                                     = customer.CustomerId,
                    EventDate                                                      = theEvent.EventDate,
                    Pod                                                            = podNames,
                    CustomerOrder                                                  = packagename,
                    CustomerName                                                   = customer.NameAsString,
                    Email                                                          = customer.Email != null?customer.Email.ToString() : "",
                                                       Phone                       = phone != null?phone.ToString() : "",
                                                                              Test = unableToScreenViewModel.Where(uv => uv.EventCustomerResultId == eventCustomerResult.Id).OrderBy(uv => uv.TestId).ToArray()
                };
                if (isNewResultFlow)
                {
                    viewModel.CurrentState = ((NewTestResultStateNumber)eventCustomerResult.ResultState).GetNewPresentationfromResultState(eventCustomerResult.IsPartial, eventCustomerResult.SignedOffBy.HasValue);
                }
                else
                {
                    viewModel.CurrentState = ((TestResultStateNumber)eventCustomerResult.ResultState).GetPresentationfromResultState(eventCustomerResult.IsPartial);
                }


                customerViewModel.Add(viewModel);
            }

            listModel.Collection = customerViewModel;
            return(listModel);
        }
Esempio n. 2
0
        public ActionResult TechnicalLimitedScreening(TechnicalLimitedScreeningCustomerListModelFilter filter = null, int pageNumber = 1)
        {
            int totalRecords;

            if (filter == null)
            {
                filter = new TechnicalLimitedScreeningCustomerListModelFilter();
            }
            var model = _testResultService.GetCustomerwithTechnicallimitedScreening(pageNumber, _pageSize, filter, out totalRecords);

            if (model == null)
            {
                model = new TechnicalLimitedScreeningCustomerListModel();
            }
            model.Filter = filter;

            var currentAction          = ControllerContext.RouteData.Values["action"].ToString();
            Func <int, string> urlFunc = pn => Url.Action(currentAction, new { pageNumber = pn, filter.CustomerName, filter.Test, filter.FromDate, filter.ToDate, filter.ResultState });

            model.PagingModel = new PagingModel(pageNumber, _pageSize, (int)totalRecords, urlFunc);
            return(View(model));
        }