コード例 #1
0
        public IEnumerable <BloodworksLabelViewModel> GetBloodworksLabel(long eventId)
        {
            var eventCustomers = _eventCustomerRepository.GetbyEventId(eventId);

            eventCustomers = eventCustomers.Where(ec => ec.AppointmentId.HasValue).Select(ec => ec);
            if (eventCustomers.IsNullOrEmpty())
            {
                return(null);
            }

            var orderIdEventCustomerIdPairs = _orderRepository.GetOrderEventCustomerIdPairforEventCustomerIds(eventCustomers.Select(ec => ec.Id).ToArray()).ToArray();

            var orderIdEventTestIdPairs = _eventTestRepository.GetEventTestIdForOrders(orderIdEventCustomerIdPairs.Select(pair => pair.FirstValue).ToArray()).ToArray();

            var eventTests = _eventTestRepository.GetbyIds(orderIdEventTestIdPairs.Select(pair => pair.SecondValue).ToArray());

            var eventTestIds = eventTests.Where(et => et.TestId == (long)TestType.Liver || et.TestId == (long)TestType.Lipid).Select(et => et.Id).ToArray();

            var eventCustomerIdsFromTest = (from oet in orderIdEventTestIdPairs
                                            join oec in orderIdEventCustomerIdPairs on oet.FirstValue equals oec.FirstValue
                                            where eventTestIds.Contains(oet.SecondValue)
                                            select oec.SecondValue).ToArray();

            var orderIdEventPackageIdPairs = _eventPackageRepository.GetEventPackageIdsForOrder(orderIdEventCustomerIdPairs.Select(pair => pair.FirstValue).ToArray());

            var eventPackages = _eventPackageRepository.GetByIds(orderIdEventPackageIdPairs.Select(pair => pair.SecondValue).ToArray()).ToArray();

            var eventPackageIds = eventPackages.Where(ep => ep.Tests.Where(t => t.TestId == (long)TestType.Liver || t.TestId == (long)TestType.Lipid ||
                                                                           t.TestId == (long)TestType.Crp || t.TestId == (long)TestType.Thyroid || t.TestId == (long)TestType.Psa || t.TestId == (long)TestType.Testosterone).Count() > 0).Select(ep => ep.Id).ToArray();

            var eventCustomerIdsFromPackage = (from oep in orderIdEventPackageIdPairs
                                               join oec in orderIdEventCustomerIdPairs on oep.FirstValue equals
                                               oec.FirstValue
                                               where eventPackageIds.Contains(oep.SecondValue)
                                               select oec.SecondValue).ToArray();

            eventCustomers =
                eventCustomers.Where(
                    ec => eventCustomerIdsFromTest.Contains(ec.Id) || eventCustomerIdsFromPackage.Contains(ec.Id)).
                Select(ec => ec).ToArray();

            var customers = _customerRepository.GetCustomers(eventCustomers.Select(ec => ec.CustomerId).ToArray());

            var eventData = _eventRepository.GetById(eventId);

            return(_bloodworksLabelViewModelFactory.Create(customers, eventData));
        }
コード例 #2
0
        public EventScreeningAuthorizationEditModel GetCustomersForAuthorization(long physicianId)
        {
            var eventData = _eventRepository.GetEventForAuthorization(physicianId);

            if (eventData == null)
            {
                return(null);
            }
            var host = _hostRepository.GetHostForEvent(eventData.Id);

            var eventTests    = _eventTestRepository.GetTestsForEvent(eventData.Id);
            var eventPackages = _eventPackageRepository.GetPackagesForEvent(eventData.Id);

            var eventCustomers = _eventCustomerRepository.GetEventCustomersForAuthorization(eventData.Id);

            if (eventCustomers == null || eventCustomers.Count() < 1)
            {
                return(null);
            }

            var eventCustomerIds = eventCustomers.Select(ec => ec.Id).ToArray();

            var assignments = _physicianAssignmentService.GetPhysicianAssignmentsByEventcustomerIds(eventCustomerIds);

            if (!assignments.Any(a => a.Primary.PhysicianId == physicianId))
            {
                return(null);
            }

            eventCustomerIds = assignments.Where(a => a.Primary.PhysicianId == physicianId).Select(a => a.EventCustomerId).ToArray();

            eventCustomers = eventCustomers.Where(ec => eventCustomerIds.Contains(ec.Id)).ToArray();

            var orderIdEventCustomerIdPairs = _orderRepository.GetOrderEventCustomerIdPairforEventCustomerIds(eventCustomerIds);
            var orderIds = orderIdEventCustomerIdPairs.Select(p => p.FirstValue).ToArray();

            var orderIdTestIdPairs    = _eventTestRepository.GetEventTestIdForOrders(orderIds);
            var orderIdpackageIdPairs = _eventPackageRepository.GetEventPackageIdsForOrder(orderIds);

            var ecIdTestIdPairs    = (from ec in orderIdEventCustomerIdPairs join ot in orderIdTestIdPairs on ec.FirstValue equals ot.FirstValue select new OrderedPair <long, long>(ec.SecondValue, ot.SecondValue)).ToArray();
            var ecIdpackageIdPairs = (from ec in orderIdEventCustomerIdPairs join op in orderIdpackageIdPairs on ec.FirstValue equals op.FirstValue select new OrderedPair <long, long>(ec.SecondValue, op.SecondValue)).ToArray();

            var customers = _customerRepository.GetCustomers(eventCustomers.Select(ec => ec.CustomerId).ToArray());

            return(_eventScreeningAuthorizationEditModelFactory.Create(eventData, eventTests, eventCustomers, customers, eventPackages, ecIdpackageIdPairs, ecIdTestIdPairs, host));
        }