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);
        }