示例#1
0
        public List <Test> GetTests(long eventId, long roleId)
        {
            IEventTestRepository eventTestRepository = new EventTestRepository();
            var eventTests = eventTestRepository.GetTestsForEventByRole(eventId, roleId);
            var tests      = eventTests.Select(et => et.Test).ToList();

            return(tests); //AdjustAndSortTests(tests);
        }
示例#2
0
        public OrderedPair <List <Package>, List <Test> > GetPackagesAndTests(long eventId, long roleId)
        {
            IEventPackageRepository packageRepository = new EventPackageRepository();
            var eventPackages =
                packageRepository.GetPackagesForEventByRole(eventId, roleId).OrderByDescending(p => p.Price);
            var packages = eventPackages.Select(ep => ep.Package).ToList();

            IEventTestRepository eventTestRepository = new EventTestRepository();
            var eventTests = eventTestRepository.GetTestsForEventByRole(eventId, roleId);
            var tests      = eventTests.Select(et => et.Test).ToList();

            var packagesAndTests = new OrderedPair <List <Package>, List <Test> >(packages, tests);

            return(packagesAndTests);
        }
示例#3
0
        public bool ChangePackage(long eventId, long customerId, IEnumerable <long> testIds)
        {
            var patientOrder = GetOrder(customerId, eventId);

            if (patientOrder != null && !patientOrder.OrderDetails.IsEmpty())
            {
                var creatorOrganizationRoleUser = GetCreatorOrganizationRoleUser();

                var forOrganizationRoleUser = GetForOrganizationRoleUser(customerId);

                var orderDetail = _orderController.GetActiveOrderDetail(patientOrder);

                var eventTestOrderDetails = patientOrder.OrderDetails.Where(od => od.OrderItem.OrderItemType == OrderItemType.EventTestItem && od.IsCompleted && (od.SourceId.HasValue && od.SourceId.Value != (long)OrderSource.Medicare)).Select(od => od).ToArray();

                var packageId = 0L;
                if (orderDetail.OrderItem.OrderItemType == OrderItemType.EventPackageItem)
                {
                    var eventPackage = _eventPackageRepository.GetById(orderDetail.OrderItem.ItemId);
                    packageId = eventPackage.PackageId;
                }

                var orderables      = new List <IOrderable>();
                var selectedTestIds = testIds.ToList();

                if (packageId > 0)
                {
                    IEventPackageRepository eventPackageRepository = new EventPackageRepository();
                    var eventPackage = eventPackageRepository.GetByEventAndPackageIds(eventId, packageId);
                    orderables.Add(eventPackage);

                    RemoveTestsAlreadyInPackage(eventId, packageId, selectedTestIds);
                }

                IEventTestRepository eventTestRepository = new EventTestRepository();
                if (!eventTestOrderDetails.IsNullOrEmpty())
                {
                    var eventTestIds          = eventTestOrderDetails.Select(od => od.OrderItem.ItemId).ToArray();
                    var nonMedicareEventTests = eventTestRepository.GetbyIds(eventTestIds);
                    orderables.AddRange(nonMedicareEventTests);
                    var nonMedicareEventTestIds = nonMedicareEventTests.Select(et => et.TestId).ToArray();
                    selectedTestIds = selectedTestIds.Where(x => !nonMedicareEventTestIds.Contains(x)).ToList();
                }

                if (!selectedTestIds.IsNullOrEmpty())
                {
                    var eventTests = eventTestRepository.GetByEventAndTestIds(eventId, selectedTestIds);

                    if (packageId > 0)
                    {
                        foreach (var eventTest in eventTests)
                        {
                            eventTest.Price = eventTest.WithPackagePrice;
                        }
                    }
                    orderables.AddRange(eventTests);
                }

                var eventCustomer = UpdateEventCustomer(orderDetail, false);
                if (eventCustomer == null)
                {
                    return(false);
                }

                bool indentedLineItemsAdded = false;

                foreach (var orderable in orderables)
                {
                    if (!indentedLineItemsAdded && (orderable.OrderItemType == OrderItemType.EventPackageItem || orderable.OrderItemType == OrderItemType.EventTestItem))
                    {
                        _orderController.AddItem(orderable, 1, forOrganizationRoleUser.Id, creatorOrganizationRoleUser.Id, null, null, null, OrderStatusState.FinalSuccess, (long)OrderSource.Medicare);
                        indentedLineItemsAdded = true;
                    }
                    else
                    {
                        _orderController.AddItem(orderable, 1, forOrganizationRoleUser.Id, creatorOrganizationRoleUser.Id, OrderStatusState.FinalSuccess, (long)OrderSource.Medicare);
                    }
                }

                _orderController.PlaceOrder(patientOrder);
            }
            return(true);
        }