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