public UpsellTestEditModel GetUpsellTest(string guid) { var onlineRequestValidationModel = _tempcartService.ValidateOnlineRequest(guid); var upsellTestEditModel = new UpsellTestEditModel { RequestValidationModel = onlineRequestValidationModel }; if (onlineRequestValidationModel.RequestStatus != OnlineRequestStatus.Valid) { return(upsellTestEditModel); } var tempCart = onlineRequestValidationModel.TempCart; if (tempCart.EventId.HasValue && tempCart.EventId > 0 && !string.IsNullOrEmpty(tempCart.Gender) && tempCart.EventPackageId.HasValue) { Gender gender; System.Enum.TryParse(tempCart.Gender, out gender); var upsellTests = _onlinePackageService.UpsaleTest(tempCart.EventId.Value, tempCart.EventPackageId.Value, gender); upsellTestEditModel.EventTestOrderItemList = upsellTests; } if (tempCart.EventId.HasValue && tempCart.EventId > 0 && tempCart.EventPackageId.HasValue) { var allAdditionalTests = _onlinePackageService.GetAdditionalTest(tempCart); upsellTestEditModel.IsAdditionalTestAvailable = allAdditionalTests != null && allAdditionalTests.Any(); } return(upsellTestEditModel); }
public bool SaveUpsellTestIds(UpsellTestEditModel model) { var tempCart = model.RequestValidationModel.TempCart; if (tempCart.EventId.HasValue && tempCart.EventId > 0 && !string.IsNullOrEmpty(tempCart.Gender) && tempCart.EventPackageId.HasValue) { Gender gender; Enum.TryParse(tempCart.Gender, out gender); var upsellTests = UpsaleTest(tempCart.EventId.Value, tempCart.EventPackageId.Value, gender); var testIds = new List <long>(); if (!string.IsNullOrWhiteSpace(tempCart.TestId)) { var panelTestId = (long)(gender == Gender.Male ? TestType.MenBloodPanel : TestType.WomenBloodPanel); var panelTestGroup = (panelTestId == (long)TestType.MenBloodPanel ? TestGroup.MensBloodPanelTestIds : TestGroup.WomenBloodPanelTestIds); var theEvent = _eventRepository.GetById(tempCart.EventId.Value); var eventTests = theEvent.EnableAlaCarteOnline ? _eventTestRepository.GetTestsForEventByRole(tempCart.EventId.Value, (long)Roles.Customer, (long)gender) : null; testIds = tempCart.TestId.Split(',').Select(long.Parse).ToList(); if (!eventTests.IsNullOrEmpty() && !testIds.IsNullOrEmpty()) { var panelTest = eventTests.FirstOrDefault(x => x.TestId == panelTestId); if (panelTest != null && model.SelectedEventTestIds.Any(x => x == panelTest.Id)) { var panelEventTestGroup = eventTests.Where(et => panelTestGroup.Contains(et.TestId)).Select(x => x.Id).ToList(); if (!panelEventTestGroup.IsNullOrEmpty()) { testIds = testIds.Where(x => !panelEventTestGroup.Contains(x)).ToList(); } } } var upsellTestList = upsellTests.Select(x => x.EventTestId).Distinct().ToList(); testIds = testIds.Where(x => !upsellTestList.Contains(x)).ToList(); } if (model.SelectedEventTestIds != null && model.SelectedEventTestIds.Any()) { testIds.AddRange(model.SelectedEventTestIds); } tempCart.TestId = null; if (testIds.Any()) { tempCart.TestId = string.Join(",", testIds); } _tempcartService.SaveTempCart(tempCart); } return(true); }
public UpsellTestEditModel PostUpsellTest(UpsellTestEditModel model) { var onlineRequestValidationModel = _tempcartService.ValidateOnlineRequest(model.Guid); model.RequestValidationModel = onlineRequestValidationModel; if (onlineRequestValidationModel.RequestStatus != OnlineRequestStatus.Valid) { return(model); } _onlinePackageService.SaveUpsellTestIds(model); var tempCart = model.RequestValidationModel.TempCart; if (tempCart.AppointmentId > 0) { _onlinePackageService.ReleaseSlotsOnScreeningtimeChanged(tempCart, tempCart.EventPackageId.Value, tempCart.TestId); } return(model); }
public OrderPlaceEditModel SaveSelectedTest(UpsellTestEditModel upsellTest) { var onlineRequestValidationModel = _tempcartService.ValidateOnlineRequest(upsellTest.Guid); var model = new OrderPlaceEditModel { RequestValidationModel = onlineRequestValidationModel }; if (onlineRequestValidationModel.RequestStatus != OnlineRequestStatus.Valid) { return(model); } var tempCart = onlineRequestValidationModel.TempCart; var selectedEventTestIds = (upsellTest.SelectedEventTestIds != null && upsellTest.SelectedEventTestIds.Any()) ? string.Join(",", upsellTest.SelectedEventTestIds.ToList()) : string.Empty; _onlinePackageService.SaveaAlacarteTestIds(tempCart, selectedEventTestIds, upsellTest.SaveBloodPanelTest); if (tempCart.AppointmentId > 0) { _onlinePackageService.ReleaseSlotsOnScreeningtimeChanged(tempCart, tempCart.EventPackageId.Value, tempCart.TestId); } return(model); }