Пример #1
0
        /// <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();
        }