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)); }
/// <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); } }