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); }
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); }
public static CustomerRole ToEntity(this CustomerRoleModel model, CustomerRole destination) { return Mapper.Map(model, destination); }
/// <summary> /// Authorize permission /// </summary> /// <param name="permissionRecordSystemName">Permission record system name</param> /// <param name="customerRole">Customer role</param> /// <returns>true - authorized; otherwise, false</returns> protected virtual bool Authorize(string permissionRecordSystemName, CustomerRole customerRole) { if (String.IsNullOrEmpty(permissionRecordSystemName)) return false; string key = string.Format(PERMISSIONS_ALLOWED_KEY, customerRole.Id, permissionRecordSystemName); return _cacheManager.Get(key, () => { foreach (var permission1 in customerRole.PermissionRecords) if (permission1.SystemName.Equals(permissionRecordSystemName, StringComparison.InvariantCultureIgnoreCase)) return true; return false; }); }
/// <summary> /// Install permissions /// </summary> /// <param name="permissionProvider">Permission provider</param> public virtual void InstallPermissions(IPermissionProvider permissionProvider) { //install new permissions var permissions = permissionProvider.GetPermissions(); foreach (var permission in permissions) { var permission1 = GetPermissionRecordBySystemName(permission.SystemName); if (permission1 == null) { //new permission (install it) permission1 = new PermissionRecord() { Name = permission.Name, SystemName = permission.SystemName, Category = permission.Category, }; //default customer role mappings var defaultPermissions = permissionProvider.GetDefaultPermissions(); foreach (var defaultPermission in defaultPermissions) { var customerRole = _customerService.GetCustomerRoleBySystemName(defaultPermission.CustomerRoleSystemName); if (customerRole == null) { //new role (save it) customerRole = new CustomerRole() { Name = defaultPermission.CustomerRoleSystemName, Active = true, SystemName = defaultPermission.CustomerRoleSystemName }; _customerService.InsertCustomerRole(customerRole); } var defaultMappingProvided = (from p in defaultPermission.PermissionRecords where p.SystemName == permission1.SystemName select p).Any(); var mappingExists = (from p in customerRole.PermissionRecords where p.SystemName == permission1.SystemName select p).Any(); if (defaultMappingProvided && !mappingExists) { permission1.CustomerRoles.Add(customerRole); } } //save new permission InsertPermissionRecord(permission1); } } }
/// <summary> /// Updates the customer role /// </summary> /// <param name="customerRole">Customer role</param> public virtual void UpdateCustomerRole(CustomerRole customerRole) { if (customerRole == null) throw new ArgumentNullException("customerRole"); _customerRoleRepository.Update(customerRole); _cacheManager.RemoveByPattern(CUSTOMERROLES_PATTERN_KEY); //event notification _eventPublisher.EntityUpdated(customerRole); }
/// <summary> /// Delete a customer role /// </summary> /// <param name="customerRole">Customer role</param> public virtual void DeleteCustomerRole(CustomerRole customerRole) { if (customerRole == null) throw new ArgumentNullException("customerRole"); if (customerRole.IsSystemRole) throw new NasException("System role could not be deleted"); _customerRoleRepository.Delete(customerRole); _cacheManager.RemoveByPattern(CUSTOMERROLES_PATTERN_KEY); //event notification _eventPublisher.EntityDeleted(customerRole); }
public void Shipping_should_be_free_when_customer_is_in_role_with_free_shipping() { var sci1 = new ShoppingCartItem() { AttributesXml = "", Quantity = 3, ProductVariant = new ProductVariant() { Weight = 1.5M, Height = 2.5M, Length = 3.5M, Width = 4.5M, IsFreeShipping = false, IsShipEnabled = true, } }; var sci2 = new ShoppingCartItem() { AttributesXml = "", Quantity = 4, ProductVariant = new ProductVariant() { Weight = 11.5M, Height = 12.5M, Length = 13.5M, Width = 14.5M, IsFreeShipping = false, IsShipEnabled = true, } }; var cart = new List<ShoppingCartItem>() { sci1, sci2 }; var customer = new Customer(); var customerRole1 = new CustomerRole() { Active = true, FreeShipping = true, }; var customerRole2 = new CustomerRole() { Active = true, FreeShipping = false, }; customer.CustomerRoles.Add(customerRole1); customer.CustomerRoles.Add(customerRole2); cart.ForEach(sci => sci.Customer = customer); cart.ForEach(sci => sci.CustomerId = customer.Id); _orderTotalCalcService.IsFreeShipping(cart).ShouldEqual(true); }