public void PopulateEmailModel(SubscriptionBrasseler subscriptionOrder, dynamic emailModel, IQueryable <CustomerOrder> repository) { var customerOrder = repository.Where(x => x.Id == subscriptionOrder.CustomerOrderId).FirstOrDefault(); Currency currency = (Insite.Data.Entities.Currency)null; if (customerOrder.CurrencyId.HasValue) { currency = this.UnitOfWork.GetTypedRepository <ICurrencyRepository>().Get(customerOrder.CurrencyId.Value); } List <ExpandoObject> expandoObjectList = new List <ExpandoObject>(); emailModel.ShippingDate = string.Format("{0:D}", subscriptionOrder.NextDelieveryDate); emailTo = subscriptionOrder.CreatedBy; //BUSA-1120 User received an SS email though he didn't opt for SmartSupply. emailModel.OrderNumber = customerOrder.OrderNumber; emailModel.SubscriptionShippingNotificationDays = SubscriptionShippingNotificationDays; companyName = (customerOrder.STCompanyName.IsBlank() ? string.Concat(customerOrder.STFirstName, " ", customerOrder.STLastName).Trim() : customerOrder.STCompanyName); emailModel.STDisplayName = companyName; emailModel.STAddress1 = customerOrder.STAddress1; emailModel.STAddress2 = customerOrder.STAddress2; emailModel.STAddress3 = customerOrder.STAddress3; emailModel.STCity = customerOrder.STCity; emailModel.STState = customerOrder.STState; emailModel.STZip = customerOrder.STPostalCode; emailModel.STPostalCode = customerOrder.STPostalCode; emailModel.CustomerNumber = customerOrder.CustomerNumber; if (customerOrder != null && !string.IsNullOrEmpty(customerOrder.ShipTo.CustomerSequence)) { emailModel.CustomerShipToNumber = customerOrder.ShipTo.CustomerSequence; } else { emailModel.CustomerShipToNumber = string.Empty; } foreach (OrderLine orderLine in (IEnumerable <OrderLine>)customerOrder.OrderLines) { dynamic obj1 = new ExpandoObject(); obj1.ProductName = orderLine.Product.Name; obj1.Description = orderLine.Description; obj1.QtyOrdered = decimal.Round(orderLine.QtyOrdered, 2); obj1.QtyOrderedDisplay = obj1.QtyOrdered.ToString("0.##"); obj1.ActualPrice = this.CurrencyFormatProvider.GetString(orderLine.UnitNetPrice, currency); obj1.ExtPrice = this.CurrencyFormatProvider.GetString(this.OrderLineUtilities.GetTotalNetPrice(orderLine), currency); expandoObjectList.Add(obj1); } emailModel.OrderLines = expandoObjectList; }
protected SubscriptionBrasseler CreateSubscriptionBrasseler(SubscriptionBrasseler subscriptionBraseler, CustomerOrder cart) { SubscriptionBrasseler subscriptionBrasseler1 = new SubscriptionBrasseler(); subscriptionBrasseler1.CustomerOrderId = cart.Id; subscriptionBrasseler1.Frequency = subscriptionBraseler.Frequency; subscriptionBrasseler1.PaymentMethod = subscriptionBraseler.PaymentMethod; subscriptionBrasseler1.NextDelieveryDate = subscriptionBraseler.NextDelieveryDate; subscriptionBrasseler1.ActivationDate = subscriptionBraseler.ActivationDate; subscriptionBrasseler1.DeActivationDate = subscriptionBraseler.DeActivationDate; subscriptionBrasseler1.ParentCustomerOrderId = subscriptionBraseler.CustomerOrderId;//BUSA-759 : SS- Unable to identify the parent order ID when user places multiple smart supply orders. subscriptionBrasseler1.ShipNow = shipNow; if (subscriptionBrasseler1 != null) { this.UnitOfWork.GetRepository<SubscriptionBrasseler>().Insert(subscriptionBrasseler1); } return subscriptionBrasseler1; }
protected void ConvertCartToSubscriptionOrder(IUnitOfWork unitOfWork, CustomerOrder subscriptionOrder, UpdateCartParameter parameter, UpdateCartResult result) { SubscriptionBrasseler subscriptionBrasseler = new SubscriptionBrasseler(); subscriptionBrasseler.CustomerOrderId = subscriptionOrder.Id; subscriptionBrasseler.ActivationDate = subscriptionOrder.OrderDate; subscriptionBrasseler.DeActivationDate = DateTimeOffset.Parse(subscriptionOrder.OrderDate.AddYears(5).ToString()); subscriptionBrasseler.ParentCustomerOrderId = subscriptionOrder.Id;// BUSA-759 : SS- Unable to identify the parent order ID when user places multiple smart supply orders //save subscriptionOrder payment Method Starts if (parameter.TermsCode.EqualsIgnoreCase("CK")) { subscriptionBrasseler.PaymentMethod = "CK"; subscriptionOrder.TermsCode = "CK"; } else if (parameter.IsPaymentProfile && !string.IsNullOrEmpty(parameter.PaymentProfileId)) { UserPaymentProfile userPaymentProfile = unitOfWork.GetRepository <UserPaymentProfile>().GetTable().FirstOrDefault(p => p.CardIdentifier == parameter.PaymentProfileId); if (userPaymentProfile != null) { subscriptionBrasseler.PaymentMethod = userPaymentProfile.Id.ToString(); subscriptionOrder.TermsCode = "CC"; } } subscriptionOrder.ShippingCalculationNeededAsOf = (DateTimeOffset)DateTimeProvider.Current.Now; subscriptionOrder.RecalculateTax = true; this.PromotionEngine.Value.ClearPromotions(subscriptionOrder); subscriptionOrder.RecalculatePromotions = true; this.PricingPipeline.GetCartPricing(new Insite.Core.Plugins.Pipelines.Pricing.Parameters.GetCartPricingParameter(subscriptionOrder)); //this.CartHelper.Value.RecalculateCart(unitOfWork, subscriptionOrder, (OrderLine)null, true); if (subscriptionOrder.CustomProperties.Where(x => x.Name == "subscriptionFrequencyOpted").Count() > 0) { var Frequency = subscriptionOrder.CustomProperties.FirstOrDefault(x => x.Name == "subscriptionFrequencyOpted").Value; subscriptionBrasseler.Frequency = int.Parse(Frequency); //BUSA-781 logic to calculate next ship date when user selects date from calendar var isNextShipDate = subscriptionOrder.CustomProperties.FirstOrDefault(x => x.Name == "checkoutNextShipDate")?.Value; if (!string.IsNullOrEmpty(isNextShipDate)) { subscriptionBrasseler.NextDelieveryDate = new DateTimeOffset(Convert.ToDateTime(isNextShipDate), TimeSpan.Zero); } else { //subscriptionBrasseler.NextDelieveryDate = new DateTimeOffset(DateTimeProvider.Current.Now.AddDays(double.Parse(Frequency)), TimeSpan.Zero); kkk subscriptionBrasseler.NextDelieveryDate = (DateTimeOffset)DateTimeProvider.Current.Now.AddDays(double.Parse(Frequency)); //(DateTimeOffset.Now.AddDays(double.Parse(Frequency))); } //BUSA-781 end } if (subscriptionBrasseler != null) { unitOfWork.GetRepository <SubscriptionBrasseler>().Insert(subscriptionBrasseler); } CustomerOrder cart = result.GetCartResult.Cart; this.SetCustomerOrderNumber(unitOfWork, cart); SendSubscriptionCreationEmail(unitOfWork, subscriptionOrder); }
protected void CreateSubscriptionOrderLine(IUnitOfWork unitOfWork, CustomerOrder cart, UpdateCartParameter parameter, UpdateCartResult result) { if (cart == null || cart.OrderLines.Count <= 0) { return; } CustomerOrder subscriptionOrder = this.CreateSubscriptionOrder(unitOfWork, cart); SubscriptionBrasseler subscriptionBrasseler = new SubscriptionBrasseler(); subscriptionBrasseler.CustomerOrderId = subscriptionOrder.Id; subscriptionBrasseler.ActivationDate = subscriptionOrder.OrderDate; subscriptionBrasseler.DeActivationDate = DateTimeOffset.Parse(subscriptionOrder.OrderDate.AddYears(5).ToString()); subscriptionBrasseler.ParentCustomerOrderId = subscriptionOrder.Id;// BUSA-759 : SS- Unable to identify the parent order ID when user places multiple smart supply orders foreach (var ol in cart.OrderLines) { //BUSA-463 Subscription - Exclude subscription promotional product in susbcription order if (!ol.IsPromotionItem) { var isSubscriptionOpted = ol.GetProperty("IsSubscriptionOpted", "false"); if (!isSubscriptionOpted.EqualsIgnoreCase("true")) { continue; } //save subscriptionOrder payment Method Starts if (parameter.TermsCode.EqualsIgnoreCase("CK")) { subscriptionBrasseler.PaymentMethod = "CK"; subscriptionOrder.TermsCode = "CK"; } else if (parameter.IsPaymentProfile && !string.IsNullOrEmpty(parameter.PaymentProfileId)) { UserPaymentProfile userPaymentProfile = unitOfWork.GetRepository <UserPaymentProfile>().GetTable().FirstOrDefault(p => p.CardIdentifier == parameter.PaymentProfileId); if (userPaymentProfile != null) { subscriptionBrasseler.PaymentMethod = userPaymentProfile.Id.ToString(); subscriptionOrder.TermsCode = "CC"; } } else if (parameter.StorePaymentProfile) { var CCResponse = result.GetCartResult.Cart.CreditCardTransactions.FirstOrDefault(); if (CCResponse != null) { var CCidentifier = CCResponse.PNRef.ToString().Split('|').FirstOrDefault(); var userPaymentProfile = unitOfWork.GetRepository <UserPaymentProfile>().GetTable().FirstOrDefault(x => x.CardIdentifier == CCidentifier); if (userPaymentProfile != null) { subscriptionBrasseler.PaymentMethod = userPaymentProfile.Id.ToString(); } } subscriptionOrder.TermsCode = cart.TermsCode; } //else //{ // subscriptionBrasseler.PaymentMethod = "CK"; //} //save subscriptionOrder payment Method Ends //this.CustomerOrderUtilities.AddOrderLine(subscriptionOrder, this.OrderLineUtilities.Copy(ol)); Insite.Cart.Services.Pipelines.Results.AddCartLineResult addCartLineResult = this.CartPipeline.AddCartLine(new Insite.Cart.Services.Pipelines.Parameters.AddCartLineParameter() { Cart = subscriptionOrder, Product = ol.Product, QtyOrdered = ol.QtyOrdered, UnitOfMeasure = ol.UnitOfMeasure, CostCode = ol.CostCode, Notes = ol.Notes, CustomProperties = ol.CustomProperties.ToList() }); addCartLineResult.CartLine.SmartPart = ol.SmartPart; for (int index = subscriptionOrder.OrderLines.Count - 1; index >= 0; --index) { OrderLine orderLine = subscriptionOrder.OrderLines.ElementAt <OrderLine>(index); if (!this.ProductUtilities.Value.IsQuoteRequired(orderLine.Product) || cart.Status == "QuoteProposed") { this.ProcessInventory(orderLine); } orderLine.PromotionResultId = null; } } } subscriptionOrder.ShippingCalculationNeededAsOf = (DateTimeOffset)DateTimeProvider.Current.Now; subscriptionOrder.RecalculateTax = true; this.PromotionEngine.Value.ClearPromotions(subscriptionOrder); subscriptionOrder.RecalculatePromotions = true; PricingPipeline.GetCartPricing(new GetCartPricingParameter(subscriptionOrder)); //this.CartHelper.Value.RecalculateCart(unitOfWork, subscriptionOrder, (OrderLine)null, true); kkk if (subscriptionOrder.CustomProperties.Where(x => x.Name == "subscriptionFrequencyOpted").Count() > 0) { var Frequency = subscriptionOrder.CustomProperties.FirstOrDefault(x => x.Name == "subscriptionFrequencyOpted").Value; subscriptionBrasseler.Frequency = int.Parse(Frequency); //BUSA-871 : Shipping SS order on future date provided by user //subscriptionBrasseler.NextDelieveryDate = new DateTimeOffset(DateTimeProvider.Current.Now.AddDays(double.Parse(Frequency)), TimeSpan.Zero); subscriptionBrasseler.NextDelieveryDate = (DateTimeOffset.Now.AddDays(double.Parse(Frequency))); } if (subscriptionBrasseler != null) { unitOfWork.GetRepository <SubscriptionBrasseler>().Insert(subscriptionBrasseler); } SendSubscriptionCreationEmail(unitOfWork, subscriptionOrder); }