public ListModelBase <DisqualifiedTestReportViewModel, DisqualifiedTestReportFilter> GetDisqualifiedTestReport(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var modelFilter = filter as DisqualifiedTestReportFilter; var disqualifiedTests = _disqualifiedTestRepository.GetByFilter(modelFilter, pageNumber, pageSize, out totalRecords); if (disqualifiedTests.IsNullOrEmpty()) { return new DisqualifiedTestReportListModel { Collection = new List <DisqualifiedTestReportViewModel>() } } ; var customerIds = disqualifiedTests.Select(x => x.CustomerId).Distinct().ToArray(); var customers = _customerRepository.GetCustomersWoithoutLoginAndAddressDetails(customerIds); var eventIds = disqualifiedTests.Select(x => x.EventId).Distinct().ToArray(); var pagedDisqualifiedTestList = _disqualifiedTestRepository.GetAllByEventIdCustomerId(customerIds, eventIds); var testIds = disqualifiedTests.Select(x => x.TestId).Distinct().ToArray(); var tests = _testRepository.GetTestByIds(testIds); var tags = customers.Where(x => !string.IsNullOrEmpty(x.Tag)).Select(x => x.Tag).Distinct().ToArray(); var tagHealthPlanNamePairs = _corporateAccountRepository.HealthPlanNamesCorrepondingToTag(tags); var questionIds = pagedDisqualifiedTestList.Select(x => x.QuestionId).ToArray(); var questions = _preQualificationQuestionRepository.GetByQuestionIds(questionIds); var listModel = _eventCustomerQuestionAnswerFactory.Create(disqualifiedTests, customers, tests, tagHealthPlanNamePairs, questions, pagedDisqualifiedTestList); return(listModel); }