Пример #1
0
        //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));
        }
Пример #2
0
        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));
        }