public OrderPlaceEditModel SaveSelectedPackage(string guid, long selectedEventPackageId) { var onlineRequestValidationModel = _tempcartService.ValidateOnlineRequest(guid); var model = new OrderPlaceEditModel { RequestValidationModel = onlineRequestValidationModel }; if (onlineRequestValidationModel.RequestStatus != OnlineRequestStatus.Valid) { return(model); } var tempCart = onlineRequestValidationModel.TempCart; if (tempCart.AppointmentId > 0) { _onlinePackageService.ReleaseSlotsOnScreeningtimeChanged(tempCart, selectedEventPackageId, tempCart.TestId); } tempCart.EventPackageId = selectedEventPackageId; _onlinePackageService.UpdateTestPurchased(tempCart); _tempcartService.SaveTempCart(tempCart); if (tempCart.EventId.HasValue && tempCart.EventId > 0 && !string.IsNullOrEmpty(tempCart.Gender)) { model.UpsellTestAvailable = _onlinePackageService.IsUpsellTestAvailable(tempCart); var allAdditionalTests = _onlinePackageService.GetAdditionalTest(tempCart); model.IsAdditionalTestAvailable = allAdditionalTests != null && allAdditionalTests.Any(); } return(model); }
public OrderPlaceEditModel GetEventPackage(TempCart tempCart, long eventId, Roles role) { var model = new OrderPlaceEditModel(); model = GetEventPackage(model, eventId, role, (tempCart != null && tempCart.CustomerId.HasValue ? tempCart.CustomerId.Value : 0), tempCart); //var defaultShippingId = model.AllShippingOptions != null && model.AllShippingOptions.Count() > 0 // ? model.AllShippingOptions.OrderByDescending(m => m.Price).Last(). // ShippingOptionId : 0; long defaultShippingId = model.AllShippingOptions != null && model.AllShippingOptions.Count() > 0 ? -1 : 0; if (tempCart != null) { model.SelectedPackageId = tempCart.EventPackageId.HasValue ? tempCart.EventPackageId.Value : 0; model.SelectedShippingOptionId = tempCart.ShippingId.HasValue ? tempCart.ShippingId.Value : defaultShippingId; model.SelectedTestIds = !string.IsNullOrEmpty(tempCart.TestId) ? tempCart.TestId.Split(new[] { ',' }).Select(t => Convert.ToInt64(t.Trim())) : new long[0]; model.SelectedProductIds = !string.IsNullOrEmpty(tempCart.ProductId) ? tempCart.ProductId.Split(new[] { ',' }).Select(t => Convert.ToInt64(t.Trim())) : new long[0]; } else { model.SelectedShippingOptionId = defaultShippingId; } return(model); }
private OrderPlaceEditModel UpdatePanelTests(OrderPlaceEditModel model) { if (model == null) { return(model); } var eventPackages = model.AllEventPackages; if (eventPackages != null && eventPackages.Any()) { var mensBloodPanel = _testRepository.GetByIds(TestGroup.MensBloodPanelTestIds); var womenBloodPanel = _testRepository.GetByIds(TestGroup.WomenBloodPanelTestIds); foreach (var eventPackageOrderItemViewModel in eventPackages) { var mensBloodPanelTest = eventPackageOrderItemViewModel.Tests.FirstOrDefault(x => x.TestId == (long)TestType.MenBloodPanel); if (mensBloodPanelTest != null) { mensBloodPanelTest.Tests = mensBloodPanel; } var womenBloodPanelTest = eventPackageOrderItemViewModel.Tests.FirstOrDefault(x => x.TestId == (long)TestType.WomenBloodPanel); if (womenBloodPanelTest != null) { womenBloodPanelTest.Tests = womenBloodPanel; } } } model.AllEventPackages = eventPackages; return(model); }
public OrderPlaceEditModel GetAdditionalTest(string guid) { var onlineRequestValidationModel = _tempcartService.ValidateOnlineRequest(guid); var model = new OrderPlaceEditModel() { RequestValidationModel = onlineRequestValidationModel }; if (onlineRequestValidationModel.RequestStatus != OnlineRequestStatus.Valid) { return(model); } var tempCart = onlineRequestValidationModel.TempCart; model.AllEventTests = _onlinePackageService.GetAdditionalTest(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); model.UpsellTestAvailable = _onlinePackageService.IsUpsellTestAvailable(tempCart); if (model.UpsellTestAvailable) { var panelTestId = gender == Gender.Male ? TestType.MenBloodPanel : TestType.WomenBloodPanel; var test = upsellTests.Where(x => x.TestId == (long)panelTestId); if (test != null && test.Any()) { var panelEventTestId = test.First().EventTestId; model.BloodPanelTestName = test.First().Name; model.BloodPanelTestId = test.First().TestId; if (!String.IsNullOrEmpty(tempCart.TestId)) { var testIds = new List <long>(); testIds = tempCart.TestId.Split(',').Select(long.Parse).ToList(); if (testIds.Contains(panelEventTestId)) { model.IsBloodPanelTestTaken = true; } } } } } 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); }
public EventCustomerOrderSummaryModel GetEventCustomerOrderSummaryModel(TempCart tempCart, OrderPlaceEditModel orderPlaceEditModel, SourceCodeApplyEditModel sourceCodeModel) { if (tempCart == null) { return(new EventCustomerOrderSummaryModel()); } Event theEvent = null; Host eventHost = null; if (tempCart.EventId.HasValue) { theEvent = _eventRepository.GetById(tempCart.EventId.Value); eventHost = _hostRepository.GetHostForEvent(tempCart.EventId.Value); } EventSchedulingSlot appointment = null; if (tempCart.AppointmentId.HasValue) { appointment = _slotRepository.GetbyId(tempCart.AppointmentId.Value); } EventPackage eventPackage = null; if (orderPlaceEditModel.SelectedPackageId > 0) { eventPackage = _eventPackageRepository.GetById(orderPlaceEditModel.SelectedPackageId); } IEnumerable <EventTest> eventTests = null; if (orderPlaceEditModel.SelectedTestIds != null && orderPlaceEditModel.SelectedTestIds.Count() > 0) { eventTests = _eventTestRepository.GetbyIds(orderPlaceEditModel.SelectedTestIds); } IEnumerable <ElectronicProduct> products = null; if (orderPlaceEditModel.SelectedProductIds != null && orderPlaceEditModel.SelectedProductIds.Count() > 0) { products = _productRepository.GetByIds(orderPlaceEditModel.SelectedProductIds); } ShippingOption shippingOption = null; if (orderPlaceEditModel.SelectedShippingOptionId > 0) { shippingOption = _shippingOptionRepository.GetById(orderPlaceEditModel.SelectedShippingOptionId); } Order order = null; if (tempCart.IsCompleted) { order = _orderRepository.GetOrder(tempCart.CustomerId.Value, tempCart.EventId.Value); } return(_eventCustomerSummaryModelFactory.Create(theEvent, eventHost, appointment, eventPackage, eventTests, products, shippingOption, sourceCodeModel, order, tempCart.ShippingId)); }
public OrderPlaceEditModel GetEventPackage(OrderPlaceEditModel model, long eventId, Roles role, long customerId, TempCart tempCart) { var theEvent = _eventRepository.GetById(eventId); var userGender = !string.IsNullOrEmpty(tempCart.Gender) ? ((long)(Gender)Enum.Parse(typeof(Gender), tempCart.Gender, true)) : (long)Gender.Unspecified; var enableAlaCarte = Convert.ToBoolean(_configurationRepository.GetConfigurationValue(ConfigurationSettingName.EnableAlaCarte)); var parentRole = (Roles)GetParentRoleIdByRoleId((long)role); if (enableAlaCarte) { if (role == Roles.Customer || parentRole == Roles.Customer) { enableAlaCarte = theEvent.EnableAlaCarteOnline; } else if (role == Roles.CallCenterRep || role == Roles.CallCenterManager || parentRole == Roles.CallCenterRep || parentRole == Roles.CallCenterManager) { enableAlaCarte = theEvent.EnableAlaCarteCallCenter; } else if (role == Roles.Technician || parentRole == Roles.Technician) { enableAlaCarte = theEvent.EnableAlaCarteTechnician; } else if (!(theEvent.EnableAlaCarteOnline || theEvent.EnableAlaCarteCallCenter || theEvent.EnableAlaCarteTechnician)) { enableAlaCarte = false; } } var eventPackages = _eventPackageRepository.GetPackagesForEventByRole(eventId, (long)role, userGender); var eventTests = enableAlaCarte ? _eventTestRepository.GetTestsForEventByRole(eventId, (long)role, userGender) : null; if (eventTests != null && eventTests.Count() > 0) { eventTests = eventTests.Where(et => et.Test.ShowInAlaCarte).Select(et => et).ToArray(); } var products = _productRepository.GetAllProductsForEvent(eventId); var shippingOptions = _shippingOptionRepository.GetAllShippingOptionsForBuyingProcess(); var shippingOptionsToBind = new List <ShippingOption>(); if (theEvent.EventType == EventType.Retail) { var onlineShippingOption = _shippingOptionRepository.GetOnlineShippingOption(); shippingOptionsToBind.Add(onlineShippingOption); if (shippingOptions != null && shippingOptions.Count > 0) { shippingOptions.RemoveAll(so => so.Price == 0); shippingOptionsToBind.AddRange(shippingOptions); } model.EventType = EventType.Retail; } else if (theEvent.EventType == EventType.Corporate) { var onlineShippingOption = _shippingOptionRepository.GetOnlineShippingOption(); shippingOptionsToBind.Add(onlineShippingOption); shippingOptions = _shippingOptionRepository.GetAllShippingOptionForCorporate(theEvent.AccountId.HasValue ? theEvent.AccountId.Value : 0); if (shippingOptions != null && shippingOptions.Count > 0) { shippingOptionsToBind.AddRange(shippingOptions); } else { tempCart.ShippingId = onlineShippingOption.Id; } model.EventType = EventType.Corporate; } if (theEvent.EventType == EventType.Corporate) { eventPackages = eventPackages != null?eventPackages.OrderByDescending(d => d.Price).ThenBy(d => d.Package.RelativeOrder) : null; } else { eventPackages = eventPackages != null?eventPackages.OrderByDescending(d => d.Price) : null; } eventTests = eventTests != null?eventTests.OrderByDescending(d => d.Price) : null; products = products != null?products.OrderBy(d => d.Price).ToList() : null; model.AllEventPackages = Mapper.Map <IEnumerable <EventPackage>, IEnumerable <EventPackageOrderItemViewModel> >(eventPackages); model.AllEventTests = Mapper.Map <IEnumerable <EventTest>, IEnumerable <EventTestOrderItemViewModel> >(eventTests); model.AllProducts = Mapper.Map <IEnumerable <ElectronicProduct>, IEnumerable <ProductOrderItemViewModel> >(products); model.AllShippingOptions = Mapper.Map <IEnumerable <ShippingOption>, IEnumerable <ShippingOptionOrderItemViewModel> >(shippingOptionsToBind); int age = 0; if (customerId > 0) { var customer = _customerRepository.GetCustomer(customerId); age = customer.DateOfBirth.HasValue ? customer.DateOfBirth.Value.GetAge() : 0; } else if (tempCart.Dob.HasValue) { age = tempCart.Dob.Value.GetAge(); } if (age > 0) { foreach (var eventPackage in model.AllEventPackages) { foreach (var test in eventPackage.Tests) { if (test.MinAge > 0 && age < test.MinAge) { eventPackage.NotAvailable = true; eventPackage.NotAvailabilityMessage = "includes " + test.Name + " for which minimum age required is " + test.MinAge; break; } if (test.MaxAge > 0 && age > test.MaxAge) { eventPackage.NotAvailable = true; eventPackage.NotAvailabilityMessage = "includes " + test.Name + " for which maximum age required is " + test.MaxAge; break; } } } foreach (var test in model.AllEventTests) { if (test.MinAge > 0 && age < test.MinAge) { test.NotAvailable = true; test.NotAvailabilityMessage = "For this test minimum age required is " + test.MinAge; break; } if (test.MaxAge > 0 && age > test.MaxAge) { test.NotAvailable = true; test.NotAvailabilityMessage = "For this test maximum age required is " + test.MaxAge; break; } } } if (model.AllEventPackages != null && model.AllEventPackages.Any()) { EventPackageOrderItemViewModel package = null; Gender gender; Enum.TryParse(tempCart.Gender, out gender); package = EventPackageOrderItemViewModel(model.AllEventPackages, eventPackages, gender); foreach (var eventPackage in model.AllEventPackages) { eventPackage.IsRecommended = eventPackage.PackageId == package.PackageId; } } LoadPackageImagePath(eventPackages, model.AllEventPackages); model.EnableImageUpsell = IsImageUpsellEnabled(eventId); return(model); }
public OrderPlaceEditModel GetEventPackageList(TempCart tempCart) { var model = new OrderPlaceEditModel(); var userGender = !string.IsNullOrEmpty(tempCart.Gender) ? ((long)(Gender)Enum.Parse(typeof(Gender), tempCart.Gender, true)) : (long)Gender.Unspecified; if (tempCart.EventId != null) { var theEvent = _eventRepository.GetById(tempCart.EventId.Value); model.RecommendPackageForEvent = theEvent.RecommendPackage; var eventPackages = _eventPackageRepository.GetPackagesForEventByRole(tempCart.EventId.Value, (long)Roles.Customer, userGender); if (theEvent.EventType == EventType.Corporate) { eventPackages = eventPackages != null ? eventPackages.OrderByDescending(d => d.Price).ThenBy(d => d.Package.RelativeOrder) : null; } else { eventPackages = eventPackages != null?eventPackages.OrderByDescending(d => d.Price) : null; } model.AllEventPackages = Mapper.Map <IEnumerable <EventPackage>, IEnumerable <EventPackageOrderItemViewModel> >(eventPackages); var age = 0; if (tempCart.Dob.HasValue) { age = tempCart.Dob.Value.GetAge(); } if (age > 0) { foreach (var eventPackage in model.AllEventPackages) { foreach (var test in eventPackage.Tests) { if (test.MinAge > 0 && age < test.MinAge) { eventPackage.NotAvailable = true; eventPackage.NotAvailabilityMessage = "includes " + test.Name + " for which minimum age required is " + test.MinAge; break; } if (test.MaxAge > 0 && age > test.MaxAge) { eventPackage.NotAvailable = true; eventPackage.NotAvailabilityMessage = "includes " + test.Name + " for which maximum age required is " + test.MaxAge; break; } } } } if (model.AllEventPackages != null && model.AllEventPackages.Any()) { EventPackageOrderItemViewModel package = null; Gender gender; Enum.TryParse(tempCart.Gender, out gender); package = EventPackageOrderItemViewModel(model.AllEventPackages, eventPackages, gender); foreach (var eventPackage in model.AllEventPackages) { eventPackage.IsRecommended = package != null && eventPackage.PackageId == package.PackageId; } int sequence = 1; //if (tempCart.EventPackageId > 0) //{ // var selectedPackage = model.AllEventPackages.Where(ep => ep.EventPackageId == tempCart.EventPackageId); // if (selectedPackage.Any()) // { // selectedPackage.First().DisplaySequence = sequence; // sequence = sequence + 1; // } //} var bestValuePackage = model.AllEventPackages.Where(ep => ep.BestValue); //if (tempCart.EventPackageId > 0) //{ // bestValuePackage = model.AllEventPackages.Where(ep => ep.BestValue && ep.EventPackageId != tempCart.EventPackageId); //} if (bestValuePackage.Any()) { bestValuePackage.First().DisplaySequence = sequence; sequence = sequence + 1; } var mostPopularPackage = model.AllEventPackages.Where(ep => ep.MostPopular); //if (tempCart.EventPackageId > 0) //{ // mostPopularPackage = model.AllEventPackages.Where(ep => ep.MostPopular && ep.EventPackageId != tempCart.EventPackageId); //} if (mostPopularPackage.Any()) { mostPopularPackage.First().DisplaySequence = sequence; sequence = sequence + 1; } //var lowestpricePackage = model.AllEventPackages.OrderBy(s => s.Price).First(); //if (lowestpricePackage != null) //{ // lowestpricePackage.IsLowestPrice = true; // lowestpricePackage.DisplaySequence = sequence; // sequence = sequence + 1; //} var highestpricePackage = model.AllEventPackages.OrderByDescending(s => s.Price).First(); if (highestpricePackage != null) { highestpricePackage.IsHighestPrice = true; } foreach (var packageItem in model.AllEventPackages.OrderByDescending(s => s.Price).Where(x => x.IsLowestPrice == false && x.MostPopular == false && x.BestValue == false)) //&& (!(tempCart.EventPackageId > 0) || x.EventPackageId != tempCart.EventPackageId) { packageItem.DisplaySequence = sequence; sequence = sequence + 1; } model.AllEventPackages = model.AllEventPackages.OrderBy(d => d.DisplaySequence); } _eventPackageSelectorService.LoadPackageImagePath(eventPackages, model.AllEventPackages); } return(UpdatePanelTests(model)); }