/// <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; }); }
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 IList<CustomerRole> CustomerRoles() { var crAdministrators = new CustomerRole { Name = "Administrators", Active = true, IsSystemRole = true, SystemName = SystemCustomerRoleNames.Administrators, }; var crForumModerators = new CustomerRole { Name = "Forum Moderators", Active = true, IsSystemRole = true, SystemName = SystemCustomerRoleNames.ForumModerators, }; var crRegistered = new CustomerRole { Name = "Registered", Active = true, IsSystemRole = true, SystemName = SystemCustomerRoleNames.Registered, }; var crGuests = new CustomerRole { Name = "Guests", Active = true, IsSystemRole = true, SystemName = SystemCustomerRoleNames.Guests, }; var entities = new List<CustomerRole> { crAdministrators, crForumModerators, crRegistered, crGuests }; this.Alter(entities); return entities; }
/// <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 SmartException("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, Product = new Product() { Weight = 1.5M, Height = 2.5M, Length = 3.5M, Width = 4.5M, IsFreeShipping = false, IsShipEnabled = true, } }; var sci2 = new ShoppingCartItem() { AttributesXml = "", Quantity = 4, Product = new Product() { Weight = 11.5M, Height = 12.5M, Length = 13.5M, Width = 14.5M, IsFreeShipping = false, IsShipEnabled = true, } }; var cart = new List<OrganizedShoppingCartItem>(); cart.Add(new OrganizedShoppingCartItem(sci1)); cart.Add(new OrganizedShoppingCartItem(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.Item.Customer = customer); cart.ForEach(sci => sci.Item.CustomerId = customer.Id); _orderTotalCalcService.IsFreeShipping(cart).ShouldEqual(true); }
public static CustomerRole ToEntity(this CustomerRoleModel model, CustomerRole destination) { return Mapper.Map(model, destination); }
public void Can_get_final_product_price_with_tier_prices_by_customerRole() { var product = new Product { Id = 1, Name = "Product name 1", Price = 12.34M, CustomerEntersPrice = false, 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 product.TierPrices.Add(new TierPrice() { Price = 10, Quantity = 2, Product = product, CustomerRole = customerRole1 }); product.TierPrices.Add(new TierPrice() { Price = 9, Quantity = 2, Product = product, CustomerRole = customerRole2 }); product.TierPrices.Add(new TierPrice() { Price = 8, Quantity = 5, Product = product, CustomerRole = customerRole1 }); product.TierPrices.Add(new TierPrice() { Price = 5, Quantity = 10, Product = product, CustomerRole = customerRole2 }); //set HasTierPrices property product.HasTierPrices = true; //customer Customer customer = new Customer(); customer.CustomerRoles.Add(customerRole1); _priceCalcService.GetFinalPrice(product, customer, 0, false, 1).ShouldEqual(12.34M); _priceCalcService.GetFinalPrice(product, customer, 0, false, 2).ShouldEqual(10); _priceCalcService.GetFinalPrice(product, customer, 0, false, 3).ShouldEqual(10); _priceCalcService.GetFinalPrice(product, customer, 0, false, 5).ShouldEqual(8); _priceCalcService.GetFinalPrice(product, customer, 0, false, 10).ShouldEqual(8); }
/// <summary> /// Install permissions /// </summary> /// <param name="permissionProvider">Permission provider</param> public virtual void InstallPermissions(IPermissionProvider permissionProvider) { using (var scope = new DbContextScope(_permissionRecordRepository.Context, autoDetectChanges: false, autoCommit: false)) { //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); } } scope.Commit(); } }