Exemple #1
0
        public IValidationResult <T> Validate <T>(T model, Func <IValidationOptions, IValidationOptions> setOptions = null)
            where T : class
        {
            if (!Types.Contains(typeof(T)))
            {
                throw new SpecificationNotFoundException(typeof(T));
            }

            var validationOptions = setOptions != null
                ? OptionsService.GetVerifiedValidationOptions(setOptions(Options.ValidationOptions))
                : Options.ValidationOptions;

            var defaultTranslator = validationOptions.TranslationName != null
                ? TranslatorsRepository.Get(validationOptions.TranslationName)
                : TranslatorsRepository.GetOriginal();

            var translationProxy = new TranslationProxy(defaultTranslator, TranslatorsRepository);

            if (model == null)
            {
                switch (validationOptions.NullRootStrategy)
                {
                case NullRootStrategy.ArgumentNullException:
                {
                    throw new ArgumentNullException(nameof(model));
                }

                case NullRootStrategy.NoErrors:
                {
                    return(new ValidationResult <T>(Id, translationProxy, Options.ValidationOptions));
                }

                default:
                {
                    var report = new ErrorsCollection();

                    report.AddError(Options.ValidationOptions.RequiredError);

                    return(new ValidationResult <T>(Id, translationProxy, Options.ValidationOptions, null, report));
                }
                }
            }

            var specification = ValidatorsFactory.GetOrInit <T>();

            var executionContext = new ExecutionContext(validationOptions, ValidatorsFactory);

            var errorsCollection = ValidatorExecutor.Execute(specification, model, executionContext, validationOptions.ValidationStrategy, 0);

            return(new ValidationResult <T>(Id, translationProxy, Options.ValidationOptions, model, errorsCollection));
        }
Exemple #2
0
        /// <summary>
        /// Gets all the translations for a given domain object.
        /// </summary>
        /// <param name="identifiableDomainObject">The identifiable domain object on which all the translations should be returned.</param>
        /// <returns>All translations for the given domain object.</returns>
        public virtual IEnumerable <ITranslation> TranslationsForDomainObjectGet(IIdentifiable identifiableDomainObject)
        {
            ArgumentNullGuard.NotNull(identifiableDomainObject, nameof(identifiableDomainObject));

            try
            {
                if (identifiableDomainObject.Identifier.HasValue)
                {
                    return(DataProvider.GetCollection <TranslationProxy>(TranslationProxy.BuildSystemDataCommandForSelecting("WHERE t.OfIdentifier=@ofIdentifier ORDER BY ti.CultureName", systemDataCommandBuilder => systemDataCommandBuilder.AddTranslationOfIdentifierParameter(identifiableDomainObject.Identifier.Value))));
                }
                throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.IllegalValue, identifiableDomainObject.Identifier, "Identifier"));
            }
            catch (IntranetRepositoryException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.RepositoryError, MethodBase.GetCurrentMethod().Name, ex.Message), ex);
            }
        }