Beispiel #1
0
        public IBaseAppService BusinessValidation <TRequest>(TRequest request, Func <TRequest, OperationResultWithError <List <ValidationResult> > > validation_func)
        {
            this._business_validation_errors = validation_func(request);

            this._model_valid = (this._models_validation_errors.IsNotNull() && this._models_validation_errors.result_object.HaveAny());

            if (!this._model_valid)
            {
                this._models_validation_errors.status_code = System.Net.HttpStatusCode.BadRequest;
            }

            return(this);
        }
        public virtual OperationResult IsValid(T obj)
        {
            var             validation_result = new List <ValidationResult>();
            OperationResult result            = null;

            using (var benchmark = TimeCounter.Instance)
            {
                var validationResult = ModelValidation.TryValidateObjectRecursive(obj, validation_result);

                validationResult = validationResult && _domainValid.IsValid(obj, validation_result).success;

                if (validationResult)
                {
                    result = new OperationResult(validationResult, string.Empty, benchmark.ResponseTime);
                }
                else
                {
                    var validationErrors = new List <OperationError>();

                    validation_result.ForEach(e =>
                    {
                        validationErrors.Add(new OperationError
                                             (
                                                 nameof(T),
                                                 string.Join(" ", e.MemberNames),
                                                 string.Empty,
                                                 e.ErrorMessage)
                                             );
                    });

                    result = new OperationResultWithError
                             (
                        validationErrors,
                        benchmark.ResponseTime
                             );
                }
            }

            return(result);
        }