//Should this method be part of IEventReportingService. private EventVolumeListModel GetEventVolumeModel(IEnumerable <Event> events) { if (events.IsNullOrEmpty()) { return(null); } var eventIds = events.Select(e => e.Id).ToList(); var hosts = _hostRepository.GetEventHosts(eventIds); var eventAppointmentStatsModels = _eventAppointmentStatsService.Get(events); var pods = _podRepository.GetPodsForEvents(eventIds); var primaryPhysicians = _physicianEventAssignmentRepository.GetPrimaryPhysicianForEvents(eventIds); var overReadPhysicians = _physicianEventAssignmentRepository.GetOverReadPhysicianForEvents(eventIds); var eventIdHospitalPartnerIdPairs = _hospitalPartnerRepository.GetEventAndHospitalPartnerOrderedPair(eventIds); //var eventIdCorporateAccountPairs = _corporateAccountRepository.GetEventIdCorporateAccountPairForSponsoredBy(eventIds); var organizationIds = new List <long>(); organizationIds.AddRange(eventIdHospitalPartnerIdPairs.Select(ehp => ehp.SecondValue).Distinct().ToArray()); //organizationIds.AddRange(eventIdCorporateAccountPairs.Select(ehp => ehp.SecondValue).Distinct().ToArray()); var organizations = _organizationRepository.GetOrganizations(organizationIds.ToArray()); var eventIdHospitalPartnerNamePairs = (from ehp in eventIdHospitalPartnerIdPairs join org in organizations on ehp.SecondValue equals org.Id select new OrderedPair <long, string>(ehp.FirstValue, org.Name)).ToArray(); var eventIdCorporateNamePairs = _corporateAccountRepository.GetEventIdCorporateAccountNamePair(eventIds); var customersAttended = _eventRepository.GetAttendedCustomers(eventIds); var eventStaffCollection = _eventStaffAssignmentRepository.GetForEvents(eventIds); IEnumerable <OrderedPair <long, string> > staffIdNamePairs = null; if (eventStaffCollection != null && eventStaffCollection.Any()) { var orgRoleUserIds = eventStaffCollection.Select(esc => (esc.ActualStaffOrgRoleUserId != null ? esc.ActualStaffOrgRoleUserId.Value : esc.ScheduledStaffOrgRoleUserId)).ToArray(); staffIdNamePairs = _organizationRoleUserRepository.GetNameIdPairofUsers(orgRoleUserIds); } return(_eventVolumeFactory.Create(events, hosts, pods, eventAppointmentStatsModels, primaryPhysicians, overReadPhysicians, eventIdHospitalPartnerNamePairs, customersAttended, eventIdCorporateNamePairs, eventStaffCollection, staffIdNamePairs)); }
public ListModelBase <TestNotPerformedViewModel, TestNotPerformedListModelFilter> GetTestNotPerformed(int pageNumber, int pageSize, ModelFilterBase filter, out int totalRecords) { var testNotPerformFilter = filter as TestNotPerformedListModelFilter; var testNotPerformed = _testNotPerformedRepository.GetTestNotPerformedForHealthPlan(testNotPerformFilter, pageNumber, pageSize, out totalRecords); if (testNotPerformed == null || !testNotPerformed.Any()) { return(null); } var customerEventScreeningTestIds = testNotPerformed.Select(x => x.CustomerEventScreeningTestId).ToArray(); var customerEventScreeningTests = _eventCustomerResultRepository.GetCustomerEventScreeningTestsByIds(customerEventScreeningTestIds); var customerEventTestStates = _customerEventTestStateRepository.GetCustomerEventTestState(customerEventScreeningTestIds); var orgRoleUserIds = customerEventTestStates.Where(cets => cets.ConductedByOrgRoleUserId.HasValue).Select(cets => cets.ConductedByOrgRoleUserId.Value).Distinct().ToArray(); var idNamePairs = _organizationRoleUserRepository.GetNameIdPairofUsers(orgRoleUserIds); var eventCustomerResults = _eventCustomerResultRepository.GetByIds(customerEventScreeningTests.Select(ces => ces.EventCustomerResultId).Distinct().ToArray()); var eventIds = eventCustomerResults.Select(ecr => ecr.EventId).Distinct().ToArray(); var events = _eventRepository.GetEventswithPodbyIds(eventIds); var hosts = _hostRepository.GetEventHosts(events.Select(x => x.Id)); IEnumerable <OrderedPair <long, long> > staffOrgRoleUserEventsPair = null; IEnumerable <OrderedPair <long, string> > staffNamePair = null; var npRoles = _eventRoleRepository.GetByName(_awvNpEventStaffRole); if (npRoles != null && npRoles.Any()) { var eventStaffs = _eventStaffAssignmentRepository.GetForEvents(eventIds); var npRoleIds = npRoles.Select(x => x.Id); if (eventStaffs != null && eventStaffs.Any()) { eventStaffs = eventStaffs.Where(x => npRoleIds.Contains(x.StaffEventRoleId)).ToArray(); } staffOrgRoleUserEventsPair = eventStaffs.Select(p => new OrderedPair <long, long>(p.ScheduledStaffOrgRoleUserId, p.EventId)).ToArray(); staffNamePair = _organizationRoleUserRepository.GetNameIdPairofUsers(staffOrgRoleUserEventsPair.Select(x => x.FirstValue).ToArray()); } var customers = _customerRepository.GetCustomers(eventCustomerResults.Select(ecr => ecr.CustomerId).Distinct().ToArray()); //var tags = customers.Select(x => x.Tag).Distinct().ToArray(); //var corporateAccount = _corporateAccountRepository.GetByTags(tags); var accountIds = events.Where(x => x.AccountId.HasValue && x.AccountId > 0).Select(x => x.AccountId.Value).Distinct().ToArray(); var corporateAccount = _corporateAccountRepository.GetByIds(accountIds); if (corporateAccount != null && corporateAccount.Any()) { corporateAccount = corporateAccount.Where(x => x.IsHealthPlan); } var tests = ((IUniqueItemRepository <Test>)_testRepository).GetByIds(customerEventScreeningTests.Select(ces => ces.TestId).Distinct().ToArray()); var customersPreApprovedTest = _preApprovedTestRepository.GetPreApprovedTestIdsByCustomerIds(eventCustomerResults.Select(x => x.Id)); var pods = _podRepository.GetByIds(events.SelectMany(e => e.PodIds).Distinct()); var eventCustomers = _eventCustomerRepository.GetByIds(customerEventScreeningTests.Select(ces => ces.EventCustomerResultId).Distinct().ToArray()); return(_testNotPerformedFactory.Create(testNotPerformed, customerEventScreeningTests, eventCustomerResults, events, customers, tests, customersPreApprovedTest, corporateAccount, pods, customerEventTestStates, idNamePairs, staffOrgRoleUserEventsPair, staffNamePair, hosts, eventCustomers)); }