/// <summary> /// Validates the <see cref="BusinessObject"/>. /// </summary> public override void Validate() { if (this.Status == BusinessObjectStatus.New) { int catalogueLimit = ConfigurationMapper.Instance.CatalogueLimit; if (catalogueLimit > 0) { ItemMapper mapper = DependencyContainerManager.Container.Get <ItemMapper>(); int count = mapper.GetItemsCount(); if (count >= catalogueLimit) { throw new ClientException(ClientExceptionId.CatalogueLimitError, null, "catalogueLimit:" + catalogueLimit.ToString(CultureInfo.InvariantCulture)); } } } if (ConfigurationMapper.Instance.MinimalProfitMarginValidation) { var modified = this.GroupMemberships.Where(g => g.Status != BusinessObjectStatus.Unchanged).FirstOrDefault(); if (modified != null) { throw new ClientException(ClientExceptionId.ItemsGroupChangeError); } Item alternateItem = (Item)this.AlternateVersion; if (alternateItem != null) { modified = alternateItem.GroupMemberships.Where(g => g.Status == BusinessObjectStatus.Deleted).FirstOrDefault(); if (modified != null) { throw new ClientException(ClientExceptionId.ItemsGroupChangeError); } } } Configuration.Configuration conf = ConfigurationMapper.Instance.GetConfiguration(SessionManager.User, "items.allowOneGroupMembership").FirstOrDefault(); if (conf != null && conf.Value.Value.ToUpperInvariant() == "TRUE" && this.GroupMemberships != null && this.GroupMemberships.Children.Count > 1) { throw new ClientException(ClientExceptionId.ItemOneGroupMembershipEnforcement , null, "code:" + this.Code); } conf = ConfigurationMapper.Instance.GetConfiguration(SessionManager.User, "items.enforceGroupMembership").FirstOrDefault(); if (conf != null && conf.Value.Value.ToUpperInvariant() == "TRUE" && this.GroupMemberships != null && this.GroupMemberships.Children.Count == 0) { throw new ClientException(ClientExceptionId.ItemGroupMembershipEnforcement , null, "code:" + this.Code); } base.Validate(); }