public virtual IList<ExternalAuthenticationRecord> GetExternalIdentifiersFor(Customer customer) { if (customer == null) throw new ArgumentNullException("customer"); return customer.ExternalAuthenticationRecords.ToList(); }
/// <summary> /// Filter tier prices for a customer /// </summary> /// <param name="source">Tier prices</param> /// <param name="customer">Customer</param> /// <returns>Filtered tier prices</returns> public static IList<TierPrice> FilterForCustomer(this IList<TierPrice> source, Customer customer) { if (source == null) throw new ArgumentNullException("source"); var result = new List<TierPrice>(); foreach (var tierPrice in source) { //check customer role requirement if (tierPrice.CustomerRole != null) { if (customer == null) continue; var customerRoles = customer.CustomerRoles.Where(cr => cr.Active).ToList(); if (customerRoles.Count == 0) continue; bool roleIsFound = false; foreach (var customerRole in customerRoles) if (customerRole == tierPrice.CustomerRole) roleIsFound = true; if (!roleIsFound) continue; } result.Add(tierPrice); } return result; }
public virtual void AssociateExternalAccountWithUser(Customer customer, OpenAuthenticationParameters parameters) { if (customer == null) throw new ArgumentNullException("customer"); //find email string email = null; if (parameters.UserClaims != null) foreach (var userClaim in parameters.UserClaims .Where(x => x.Contact != null && !String.IsNullOrEmpty(x.Contact.Email))) { //found email = userClaim.Contact.Email; break; } var externalAuthenticationRecord = new ExternalAuthenticationRecord() { CustomerId = customer.Id, Email = email, ExternalIdentifier = parameters.ExternalIdentifier, ExternalDisplayIdentifier = parameters.ExternalDisplayIdentifier, OAuthToken = parameters.OAuthToken, OAuthAccessToken = parameters.OAuthAccessToken, ProviderSystemName = parameters.ProviderSystemName, }; _externalAuthenticationRecordRepository.Insert(externalAuthenticationRecord); }
public void Can_check_whether_customer_is_admin() { var customer = new Customer(); customer.CustomerRoles.Add(new CustomerRole() { Active = true, Name = "Registered", SystemName = SystemCustomerRoleNames.Registered }); customer.CustomerRoles.Add(new CustomerRole() { Active = true, Name = "Guests", SystemName = SystemCustomerRoleNames.Guests }); customer.IsAdmin().ShouldBeFalse(); customer.CustomerRoles.Add( new CustomerRole() { Active = true, Name = "Administrators", SystemName = SystemCustomerRoleNames.Administrators }); customer.IsAdmin().ShouldBeTrue(); }
/// <summary> /// Gets discount amount /// </summary> /// <param name="productVariant">Product variant</param> /// <param name="customer">The customer</param> /// <param name="additionalCharge">Additional charge</param> /// <returns>Discount amount</returns> public virtual decimal GetDiscountAmount(ProductVariant productVariant, Customer customer, decimal additionalCharge) { Discount appliedDiscount = null; return GetDiscountAmount(productVariant, customer, additionalCharge, out appliedDiscount); }
public virtual void SignIn(Customer customer, bool createPersistentCookie) { var now = DateTime.UtcNow.ToLocalTime(); var ticket = new FormsAuthenticationTicket( 1 /*version*/, _customerSettings.UsernamesEnabled ? customer.Username : customer.Email, now, now.Add(_expirationTimeSpan), createPersistentCookie, _customerSettings.UsernamesEnabled ? customer.Username : customer.Email, FormsAuthentication.FormsCookiePath); var encryptedTicket = FormsAuthentication.Encrypt(ticket); var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket); cookie.HttpOnly = true; if (ticket.IsPersistent) { cookie.Expires = ticket.Expiration; } cookie.Secure = FormsAuthentication.RequireSSL; cookie.Path = FormsAuthentication.FormsCookiePath; if (FormsAuthentication.CookieDomain != null) { cookie.Domain = FormsAuthentication.CookieDomain; } _httpContext.Response.Cookies.Add(cookie); _cachedCustomer = customer; }
public void Can_add_rewardPointsHistoryEntry() { var customer = new Customer(); customer.AddRewardPointsHistoryEntry(1, "Points for registration"); customer.RewardPointsHistory.Count.ShouldEqual(1); customer.RewardPointsHistory.First().Points.ShouldEqual(1); }
public void Can_check_taxExempt_customer() { var customer = new Customer(); customer.IsTaxExempt = true; _taxService.IsTaxExempt(null, customer).ShouldEqual(true); customer.IsTaxExempt = false; _taxService.IsTaxExempt(null, customer).ShouldEqual(false); }
public void Can_add_address() { var customer = new Customer(); var address = new Address { Id = 1 }; customer.Addresses.Add(address); customer.Addresses.Count.ShouldEqual(1); customer.Addresses.First().Id.ShouldEqual(1); }
private static void FilteredLog(ILogger logger, LogLevel level, string message, Exception exception = null, Customer customer = null) { //don't log thread abort exception if ((exception != null) && (exception is System.Threading.ThreadAbortException)) return; if (logger.IsEnabled(level)) { string fullMessage = exception == null ? string.Empty : exception.ToString(); logger.InsertLog(level, message, fullMessage, customer); } }
public CustomerRegistrationRequest(Customer customer, string email, string username, string password, PasswordFormat passwordFormat, bool isApproved = true) { this.Customer = customer; this.Email = email; this.Username = username; this.Password = password; this.PasswordFormat = passwordFormat; this.IsApproved = isApproved; }
public new void SetUp() { _activityType1 = new ActivityLogType { Id = 1, SystemKeyword = "TestKeyword1", Enabled = true, Name = "Test name1" }; _activityType2 = new ActivityLogType { Id = 2, SystemKeyword = "TestKeyword2", Enabled = true, Name = "Test name2" }; _customer1 = new Customer() { Id = 1, Email = "*****@*****.**", Username = "******", Deleted = false, }; _customer2 = new Customer() { Id = 2, Email = "*****@*****.**", Username = "******", Deleted = false, }; _activity1 = new ActivityLog() { Id = 1, ActivityLogType = _activityType1, CustomerId = _customer1.Id, Customer = _customer1 }; _activity2 = new ActivityLog() { Id = 2, ActivityLogType = _activityType1, CustomerId = _customer2.Id, Customer = _customer2 }; _cacheManager = new NasNullCache(); _workContext = MockRepository.GenerateMock<IWorkContext>(); _activityLogRepository = MockRepository.GenerateMock<IRepository<ActivityLog>>(); _activityLogTypeRepository = MockRepository.GenerateMock<IRepository<ActivityLogType>>(); _activityLogTypeRepository.Expect(x => x.Table).Return(new List<ActivityLogType>() { _activityType1, _activityType2 }.AsQueryable()); _activityLogRepository.Expect(x => x.Table).Return(new List<ActivityLog>() { _activity1, _activity2 }.AsQueryable()); _customerActivityService = new CustomerActivityService(_cacheManager, _activityLogRepository, _activityLogTypeRepository, _workContext, null, null, null); }
public void Can_add_render_attributes_withoutPrices() { string attributes = ""; //color: green attributes = _checkoutAttributeParser.AddCheckoutAttribute(attributes, ca1, cav1_1.Id.ToString()); //custom option: option 1, option 2 attributes = _checkoutAttributeParser.AddCheckoutAttribute(attributes, ca2, cav2_1.Id.ToString()); attributes = _checkoutAttributeParser.AddCheckoutAttribute(attributes, ca2, cav2_2.Id.ToString()); //custom text attributes = _checkoutAttributeParser.AddCheckoutAttribute(attributes, ca3, "Some custom text goes here"); var customer = new Customer(); string formattedAttributes = _checkoutAttributeFormatter.FormatAttributes(attributes, customer, "<br />", false, false); formattedAttributes.ShouldEqual("Color: Green<br />Custom option: Option 1<br />Custom option: Option 2<br />Custom text: Some custom text goes here"); }
/// <summary> /// Get active gift cards that are applied by a customer /// </summary> /// <param name="customer">Customer</param> /// <returns>Active gift cards</returns> public virtual IList<GiftCard> GetActiveGiftCardsAppliedByCustomer(Customer customer) { var result = new List<GiftCard>(); if (customer == null) return result; string[] couponCodes = customer.ParseAppliedGiftCardCouponCodes(); foreach (var couponCode in couponCodes) { var giftCards = GetAllGiftCards(null, null, null, true, couponCode, 0, int.MaxValue); foreach (var gc in giftCards) { if (gc.IsGiftCardValid()) result.Add(gc); } } return result; }
/// <summary> /// Authorize permission /// </summary> /// <param name="permission">Permission record</param> /// <param name="customer">Customer</param> /// <returns>true - authorized; otherwise, false</returns> public virtual bool Authorize(PermissionRecord permission, Customer customer) { if (permission == null) return false; if (customer == null) return false; //old implementation of Authorize method //var customerRoles = customer.CustomerRoles.Where(cr => cr.Active); //foreach (var role in customerRoles) // foreach (var permission1 in role.PermissionRecords) // if (permission1.SystemName.Equals(permission.SystemName, StringComparison.InvariantCultureIgnoreCase)) // return true; //return false; return Authorize(permission.SystemName, customer); }
public virtual Customer GetAuthenticatedCustomer() { if (_cachedCustomer != null) return _cachedCustomer; if (_httpContext == null || _httpContext.Request == null || !_httpContext.Request.IsAuthenticated || !(_httpContext.User.Identity is FormsIdentity)) { return null; } var formsIdentity = (FormsIdentity)_httpContext.User.Identity; var customer = GetAuthenticatedCustomerFromTicket(formsIdentity.Ticket); if (customer != null && customer.Active && !customer.Deleted && customer.IsRegistered()) _cachedCustomer = customer; return _cachedCustomer; }
public void Can_check_IsInCustomerRole() { var customer = new Customer() { /*CustomerRoles = new List<CustomerRole>() { new CustomerRole() { Active = true, Name = "Test name 1", SystemName = "Test system name 1", }, new CustomerRole() { Active = false, Name = "Test name 2", SystemName = "Test system name 2", }, }*/ }; customer.CustomerRoles.Add(new CustomerRole() { Active = true, Name = "Test name 1", SystemName = "Test system name 1", }); customer.CustomerRoles.Add(new CustomerRole() { Active = false, Name = "Test name 2", SystemName = "Test system name 2", }); customer.IsInCustomerRole("Test system name 1", false).ShouldBeTrue(); customer.IsInCustomerRole("Test system name 1", true).ShouldBeTrue(); customer.IsInCustomerRole("Test system name 2", false).ShouldBeTrue(); customer.IsInCustomerRole("Test system name 2", true).ShouldBeFalse(); customer.IsInCustomerRole("Test system name 3", false).ShouldBeFalse(); customer.IsInCustomerRole("Test system name 3", true).ShouldBeFalse(); }
public void Can_check_taxExempt_customer_in_taxExemptCustomerRole() { var customer = new Customer(); customer.IsTaxExempt = false; _taxService.IsTaxExempt(null, customer).ShouldEqual(false); var customerRole = new CustomerRole() { TaxExempt = true, Active = true }; customer.CustomerRoles.Add(customerRole); _taxService.IsTaxExempt(null, customer).ShouldEqual(true); customerRole.TaxExempt = false; _taxService.IsTaxExempt(null, customer).ShouldEqual(false); //if role is not active, weshould ignore 'TaxExempt' property customerRole.Active = false; _taxService.IsTaxExempt(null, customer).ShouldEqual(false); }
protected void TryAssociateAccountWithExternalAccount(Customer customer) { var parameters = ExternalAuthorizerHelper.RetrieveParametersFromRoundTrip(true); if (parameters == null) return; if (_openAuthenticationService.AccountExists(parameters)) return; _openAuthenticationService.AssociateExternalAccountWithUser(customer, parameters); }
protected CustomerOrderListModel PrepareCustomerOrderListModel(Customer customer) { if (customer == null) throw new ArgumentNullException("customer"); var model = new CustomerOrderListModel(); model.NavigationModel = GetCustomerNavigationModel(customer); model.NavigationModel.SelectedTab = CustomerNavigationEnum.Orders; var orders = _orderService.SearchOrders(_storeContext.CurrentStore.Id, 0, customer.Id, null, null, null, null, null, null, null, 0, int.MaxValue); foreach (var order in orders) { var orderModel = new CustomerOrderListModel.OrderDetailsModel() { Id = order.Id, CreatedOn = _dateTimeHelper.ConvertToUserTime(order.CreatedOnUtc, DateTimeKind.Utc), OrderStatus = order.OrderStatus.GetLocalizedEnum(_localizationService, _workContext), IsReturnRequestAllowed = _orderProcessingService.IsReturnRequestAllowed(order) }; var orderTotalInCustomerCurrency = _currencyService.ConvertCurrency(order.OrderTotal, order.CurrencyRate); orderModel.OrderTotal = _priceFormatter.FormatPrice(orderTotalInCustomerCurrency, true, order.CustomerCurrencyCode, false, _workContext.WorkingLanguage); model.Orders.Add(orderModel); } var recurringPayments = _orderService.SearchRecurringPayments(_storeContext.CurrentStore.Id, customer.Id, 0, null, 0, int.MaxValue); foreach (var recurringPayment in recurringPayments) { var recurringPaymentModel = new CustomerOrderListModel.RecurringOrderModel() { Id = recurringPayment.Id, StartDate = _dateTimeHelper.ConvertToUserTime(recurringPayment.StartDateUtc, DateTimeKind.Utc).ToString(), CycleInfo = string.Format("{0} {1}", recurringPayment.CycleLength, recurringPayment.CyclePeriod.GetLocalizedEnum(_localizationService, _workContext)), NextPayment = recurringPayment.NextPaymentDate.HasValue ? _dateTimeHelper.ConvertToUserTime(recurringPayment.NextPaymentDate.Value, DateTimeKind.Utc).ToString() : "", TotalCycles = recurringPayment.TotalCycles, CyclesRemaining = recurringPayment.CyclesRemaining, InitialOrderId = recurringPayment.InitialOrder.Id, CanCancel = _orderProcessingService.CanCancelRecurringPayment(customer, recurringPayment), }; model.RecurringOrders.Add(recurringPaymentModel); } return model; }
protected void PrepareCustomerInfoModel(CustomerInfoModel model, Customer customer, bool excludeProperties) { if (model == null) throw new ArgumentNullException("model"); if (customer == null) throw new ArgumentNullException("customer"); model.AllowCustomersToSetTimeZone = _dateTimeSettings.AllowCustomersToSetTimeZone; foreach (var tzi in _dateTimeHelper.GetSystemTimeZones()) model.AvailableTimeZones.Add(new SelectListItem() { Text = tzi.DisplayName, Value = tzi.Id, Selected = (excludeProperties ? tzi.Id == model.TimeZoneId : tzi.Id == _dateTimeHelper.CurrentTimeZone.Id) }); if (!excludeProperties) { model.VatNumber = customer.GetAttribute<string>(SystemCustomerAttributeNames.VatNumber); model.FirstName = customer.GetAttribute<string>(SystemCustomerAttributeNames.FirstName); model.LastName = customer.GetAttribute<string>(SystemCustomerAttributeNames.LastName); model.Gender = customer.GetAttribute<string>(SystemCustomerAttributeNames.Gender); var dateOfBirth = customer.GetAttribute<DateTime?>(SystemCustomerAttributeNames.DateOfBirth); if (dateOfBirth.HasValue) { model.DateOfBirthDay = dateOfBirth.Value.Day; model.DateOfBirthMonth = dateOfBirth.Value.Month; model.DateOfBirthYear = dateOfBirth.Value.Year; } model.Company = customer.GetAttribute<string>(SystemCustomerAttributeNames.Company); model.StreetAddress = customer.GetAttribute<string>(SystemCustomerAttributeNames.StreetAddress); model.StreetAddress2 = customer.GetAttribute<string>(SystemCustomerAttributeNames.StreetAddress2); model.ZipPostalCode = customer.GetAttribute<string>(SystemCustomerAttributeNames.ZipPostalCode); model.City = customer.GetAttribute<string>(SystemCustomerAttributeNames.City); model.CountryId = customer.GetAttribute<int>(SystemCustomerAttributeNames.CountryId); model.StateProvinceId = customer.GetAttribute<int>(SystemCustomerAttributeNames.StateProvinceId); model.Phone = customer.GetAttribute<string>(SystemCustomerAttributeNames.Phone); model.Fax = customer.GetAttribute<string>(SystemCustomerAttributeNames.Fax); //newsletter var newsletter = _newsLetterSubscriptionService.GetNewsLetterSubscriptionByEmail(customer.Email); model.Newsletter = newsletter != null && newsletter.Active; model.Signature = customer.GetAttribute<string>(SystemCustomerAttributeNames.Signature); model.Email = customer.Email; model.Username = customer.Username; } else { if (_customerSettings.UsernamesEnabled && !_customerSettings.AllowUsersToChangeUsernames) model.Username = customer.Username; } //countries and states if (_customerSettings.CountryEnabled) { model.AvailableCountries.Add(new SelectListItem() { Text = _localizationService.GetResource("Address.SelectCountry"), Value = "0" }); foreach (var c in _countryService.GetAllCountries()) { model.AvailableCountries.Add(new SelectListItem() { Text = c.GetLocalized(x => x.Name), Value = c.Id.ToString(), Selected = c.Id == model.CountryId }); } if (_customerSettings.StateProvinceEnabled) { //states var states = _stateProvinceService.GetStateProvincesByCountryId(model.CountryId).ToList(); if (states.Count > 0) { foreach (var s in states) model.AvailableStates.Add(new SelectListItem() { Text = s.GetLocalized(x => x.Name), Value = s.Id.ToString(), Selected = (s.Id == model.StateProvinceId) }); } else model.AvailableStates.Add(new SelectListItem() { Text = _localizationService.GetResource("Address.OtherNonUS"), Value = "0" }); } } model.DisplayVatNumber = _taxSettings.EuVatEnabled; model.VatNumberStatusNote = ((VatNumberStatus)customer.GetAttribute<int>(SystemCustomerAttributeNames.VatNumberStatusId)) .GetLocalizedEnum(_localizationService, _workContext); model.GenderEnabled = _customerSettings.GenderEnabled; model.DateOfBirthEnabled = _customerSettings.DateOfBirthEnabled; model.CompanyEnabled = _customerSettings.CompanyEnabled; model.CompanyRequired = _customerSettings.CompanyRequired; model.StreetAddressEnabled = _customerSettings.StreetAddressEnabled; model.StreetAddressRequired = _customerSettings.StreetAddressRequired; model.StreetAddress2Enabled = _customerSettings.StreetAddress2Enabled; model.StreetAddress2Required = _customerSettings.StreetAddress2Required; model.ZipPostalCodeEnabled = _customerSettings.ZipPostalCodeEnabled; model.ZipPostalCodeRequired = _customerSettings.ZipPostalCodeRequired; model.CityEnabled = _customerSettings.CityEnabled; model.CityRequired = _customerSettings.CityRequired; model.CountryEnabled = _customerSettings.CountryEnabled; model.StateProvinceEnabled = _customerSettings.StateProvinceEnabled; model.PhoneEnabled = _customerSettings.PhoneEnabled; model.PhoneRequired = _customerSettings.PhoneRequired; model.FaxEnabled = _customerSettings.FaxEnabled; model.FaxRequired = _customerSettings.FaxRequired; model.NewsletterEnabled = _customerSettings.NewsletterEnabled; model.UsernamesEnabled = _customerSettings.UsernamesEnabled; model.AllowUsersToChangeUsernames = _customerSettings.AllowUsersToChangeUsernames; model.CheckUsernameAvailabilityEnabled = _customerSettings.CheckUsernameAvailabilityEnabled; model.SignatureEnabled = _forumSettings.ForumsEnabled && _forumSettings.SignaturesEnabled; //external authentication foreach (var ear in _openAuthenticationService.GetExternalIdentifiersFor(customer)) { var authMethod = _openAuthenticationService.LoadExternalAuthenticationMethodBySystemName(ear.ProviderSystemName); if (authMethod == null || !authMethod.IsMethodActive(_externalAuthenticationSettings)) continue; model.AssociatedExternalAuthRecords.Add(new CustomerInfoModel.AssociatedExternalAuthModel() { Id = ear.Id, Email = ear.Email, ExternalIdentifier = ear.ExternalIdentifier, AuthMethodName = authMethod.GetLocalizedFriendlyName(_localizationService, _workContext.WorkingLanguage.Id) }); } model.NavigationModel = GetCustomerNavigationModel(customer); model.NavigationModel.SelectedTab = CustomerNavigationEnum.Info; }
protected CustomerNavigationModel GetCustomerNavigationModel(Customer customer) { var model = new CustomerNavigationModel(); model.HideAvatar = !_customerSettings.AllowCustomersToUploadAvatars; model.HideRewardPoints = !_rewardPointsSettings.Enabled; model.HideForumSubscriptions = !_forumSettings.ForumsEnabled || !_forumSettings.AllowCustomersToManageSubscriptions; model.HideReturnRequests = !_orderSettings.ReturnRequestsEnabled || _orderService.SearchReturnRequests(_storeContext.CurrentStore.Id, customer.Id, 0, null, 0, 1).Count == 0; model.HideDownloadableProducts = _customerSettings.HideDownloadableProductsTab; model.HideBackInStockSubscriptions = _customerSettings.HideBackInStockSubscriptionsTab; return model; }
public void Can_render_attributes_withoutPrices() { string attributes = ""; //color: green attributes = _productAttributeParser.AddProductAttribute(attributes, pva1_1, pvav1_1.Id.ToString()); //custom option: option 1, option 2 attributes = _productAttributeParser.AddProductAttribute(attributes, pva2_1, pvav2_1.Id.ToString()); attributes = _productAttributeParser.AddProductAttribute(attributes, pva2_1, pvav2_2.Id.ToString()); //custom text attributes = _productAttributeParser.AddProductAttribute(attributes, pva3_1, "Some custom text goes here"); //gift card attributes attributes = _productAttributeParser.AddGiftCardAttribute(attributes, "recipientName 1", "*****@*****.**", "senderName 1", "*****@*****.**", "custom message"); var productVariant = new ProductVariant() { IsGiftCard = true, GiftCardType = GiftCardType.Virtual, }; var customer = new Customer(); string formattedAttributes = _productAttributeFormatter.FormatAttributes(productVariant, attributes, customer, "<br />", false, false, true, true); formattedAttributes.ShouldEqual("Color: Green<br />Some custom option: Option 1<br />Some custom option: Option 2<br />Color: Some custom text goes here<br />From: senderName 1 <*****@*****.**><br />For: recipientName 1 <*****@*****.**>"); }
public void Can_render_virtual_gift_cart() { string attributes = _productAttributeParser.AddGiftCardAttribute("", "recipientName 1", "*****@*****.**", "senderName 1", "*****@*****.**", "custom message"); var productVariant = new ProductVariant() { IsGiftCard = true, GiftCardType = GiftCardType.Virtual, }; var customer = new Customer(); string formattedAttributes = _productAttributeFormatter.FormatAttributes(productVariant, attributes, customer, "<br />", false, false, true, true); formattedAttributes.ShouldEqual("From: senderName 1 <*****@*****.**><br />For: recipientName 1 <*****@*****.**>"); }
public void Can_get_shopping_cart_item_unitPrice() { //customer Customer customer = new Customer(); //shopping cart var productVariant1 = new ProductVariant { Id = 1, Name = "Product variant name 1", Price = 12.34M, CustomerEntersPrice = false, Published = true, Product = new Product() { Id = 1, Name = "Product name 1", Published = true } }; var sci1 = new ShoppingCartItem() { Customer = customer, CustomerId = customer.Id, ProductVariant = productVariant1, ProductVariantId = productVariant1.Id, Quantity = 2, }; _priceCalcService.GetUnitPrice(sci1, false).ShouldEqual(12.34); }
public void Can_get_final_product_price_with_tier_prices_by_customerRole() { var productVariant = new ProductVariant { Id = 1, Name = "Product variant name 1", Price = 12.34M, CustomerEntersPrice = false, Published = true, Product = new Product() { Id = 1, Name = "Product name 1", Published = true } }; //customer roles var customerRole1 = new CustomerRole() { Id = 1, Name = "Some role 1", Active = true, }; var customerRole2 = new CustomerRole() { Id = 2, Name = "Some role 2", Active = true, }; //add tier prices productVariant.TierPrices.Add(new TierPrice() { Price = 10, Quantity = 2, ProductVariant = productVariant, CustomerRole = customerRole1 }); productVariant.TierPrices.Add(new TierPrice() { Price = 9, Quantity = 2, ProductVariant = productVariant, CustomerRole = customerRole2 }); productVariant.TierPrices.Add(new TierPrice() { Price = 8, Quantity = 5, ProductVariant = productVariant, CustomerRole = customerRole1 }); productVariant.TierPrices.Add(new TierPrice() { Price = 5, Quantity = 10, ProductVariant = productVariant, CustomerRole = customerRole2 }); //set HasTierPrices property productVariant.HasTierPrices = true; //customer Customer customer = new Customer(); customer.CustomerRoles.Add(customerRole1); _priceCalcService.GetFinalPrice(productVariant, customer, 0, false, 1).ShouldEqual(12.34M); _priceCalcService.GetFinalPrice(productVariant, customer, 0, false, 2).ShouldEqual(10); _priceCalcService.GetFinalPrice(productVariant, customer, 0, false, 3).ShouldEqual(10); _priceCalcService.GetFinalPrice(productVariant, customer, 0, false, 5).ShouldEqual(8); _priceCalcService.GetFinalPrice(productVariant, customer, 0, false, 10).ShouldEqual(8); }
/// <summary> /// Sends "email a friend" message /// </summary> /// <param name="customer">Customer instance</param> /// <param name="languageId">Message language identifier</param> /// <param name="product">Product instance</param> /// <param name="customerEmail">Customer's email</param> /// <param name="friendsEmail">Friend's email</param> /// <param name="personalMessage">Personal message</param> /// <returns>Queued email identifier</returns> public virtual int SendProductEmailAFriendMessage(Customer customer, int languageId, Product product, string customerEmail, string friendsEmail, string personalMessage) { if (customer == null) throw new ArgumentNullException("customer"); if (product == null) throw new ArgumentNullException("product"); var store = _storeContext.CurrentStore; languageId = EnsureLanguageIsActive(languageId, store.Id); var messageTemplate = GetLocalizedActiveMessageTemplate("Service.EmailAFriend", languageId, store.Id); if (messageTemplate == null) return 0; //toekns var tokens = new List<Token>(); _messageTokenProvider.AddStoreTokens(tokens, store); _messageTokenProvider.AddCustomerTokens(tokens, customer); _messageTokenProvider.AddProductTokens(tokens, product); tokens.Add(new Token("EmailAFriend.PersonalMessage", personalMessage, true)); tokens.Add(new Token("EmailAFriend.Email", customerEmail)); //event notification _eventPublisher.MessageTokensAdded(messageTemplate, tokens); var emailAccount = GetEmailAccountOfMessageTemplate(messageTemplate, languageId); var toEmail = friendsEmail; var toName = ""; return SendNotification(messageTemplate, emailAccount, languageId, tokens, toEmail, toName); }
/// <summary> /// Sends a "new VAT sumitted" notification to a store owner /// </summary> /// <param name="customer">Customer</param> /// <param name="vatName">Received VAT name</param> /// <param name="vatAddress">Received VAT address</param> /// <param name="languageId">Message language identifier</param> /// <returns>Queued email identifier</returns> public virtual int SendNewVatSubmittedStoreOwnerNotification(Customer customer, string vatName, string vatAddress, int languageId) { if (customer == null) throw new ArgumentNullException("customer"); var store = _storeContext.CurrentStore; languageId = EnsureLanguageIsActive(languageId, store.Id); var messageTemplate = GetLocalizedActiveMessageTemplate("NewVATSubmitted.StoreOwnerNotification", languageId, store.Id); if (messageTemplate == null) return 0; //tokens var tokens = new List<Token>(); _messageTokenProvider.AddStoreTokens(tokens, store); _messageTokenProvider.AddCustomerTokens(tokens, customer); tokens.Add(new Token("VatValidationResult.Name", vatName)); tokens.Add(new Token("VatValidationResult.Address", vatAddress)); //event notification _eventPublisher.MessageTokensAdded(messageTemplate, tokens); var emailAccount = GetEmailAccountOfMessageTemplate(messageTemplate, languageId); var toEmail = emailAccount.Email; var toName = emailAccount.DisplayName; return SendNotification(messageTemplate, emailAccount, languageId, tokens, toEmail, toName); }
/// <summary> /// Sends a forum subscription message to a customer /// </summary> /// <param name="customer">Customer instance</param> /// <param name="forumTopic">Forum Topic</param> /// <param name="forum">Forum</param> /// <param name="languageId">Message language identifier</param> /// <returns>Queued email identifier</returns> public int SendNewForumTopicMessage(Customer customer, ForumTopic forumTopic, Forum forum, int languageId) { if (customer == null) { throw new ArgumentNullException("customer"); } var store = _storeContext.CurrentStore; var messageTemplate = GetLocalizedActiveMessageTemplate("Forums.NewForumTopic", languageId, store.Id); if (messageTemplate == null) return 0; //tokens var tokens = new List<Token>(); _messageTokenProvider.AddStoreTokens(tokens, store); _messageTokenProvider.AddForumTopicTokens(tokens, forumTopic); _messageTokenProvider.AddForumTokens(tokens, forumTopic.Forum); //event notification _eventPublisher.MessageTokensAdded(messageTemplate, tokens); var emailAccount = GetEmailAccountOfMessageTemplate(messageTemplate, languageId); var toEmail = customer.Email; var toName = customer.GetFullName(); return SendNotification(messageTemplate, emailAccount, languageId, tokens, toEmail, toName); }
/// <summary> /// Sends a welcome message to a customer /// </summary> /// <param name="customer">Customer instance</param> /// <param name="languageId">Message language identifier</param> /// <returns>Queued email identifier</returns> public virtual int SendCustomerWelcomeMessage(Customer customer, int languageId) { if (customer == null) throw new ArgumentNullException("customer"); var store = _storeContext.CurrentStore; languageId = EnsureLanguageIsActive(languageId, store.Id); var messageTemplate = GetLocalizedActiveMessageTemplate("Customer.WelcomeMessage", languageId, store.Id); if (messageTemplate == null) return 0; //tokens var tokens = new List<Token>(); _messageTokenProvider.AddStoreTokens(tokens, store); _messageTokenProvider.AddCustomerTokens(tokens, customer); //event notification _eventPublisher.MessageTokensAdded(messageTemplate, tokens); var emailAccount = GetEmailAccountOfMessageTemplate(messageTemplate, languageId); var toEmail = customer.Email; var toName = customer.GetFullName(); return SendNotification(messageTemplate, emailAccount, languageId, tokens, toEmail, toName); }