Exemplo n.º 1
0
        /// <summary>
        /// Execute filter.
        /// </summary>
        /// <param name="context">Application context.</param>
        /// <param name="next">Next delegate.</param>
        public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
        {
            if (!context.ModelState.IsValid)
            {
                var errorsInModelState = context.ModelState
                                         .Where(x => x.Value.Errors.Count > 0)
                                         .ToDictionary(kvp => kvp.Key, kvp => kvp.Value.Errors.Select(x => x.ErrorMessage)).ToArray();

                var errorResponse = new ErrorResponse();

                foreach (var error in errorsInModelState)
                {
                    foreach (var subError in error.Value)
                    {
                        var errorModel = new ValidationErrorModel
                        {
                            Field   = error.Key,
                            Message = subError
                        };

                        errorResponse.Errors.Add(errorModel);
                    }
                }

                context.Result = new BadRequestObjectResult(errorResponse);
                return;
            }

            await next();
        }
        public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate nextAsync)
        {
            if (context.ModelState.IsValid)
            {
                var resultContext = await nextAsync();
            }

            var error = new ValidationErrorModel();

            foreach (var key in context.ModelState.Keys)
            {
                var state = context.ModelState[key];

                if (state.ValidationState != ModelValidationState.Invalid)
                {
                    continue;
                }

                var errors = state.Errors.Select(p => p.ErrorMessage).ToList();
                error.Errors.AddRange(errors);

                if (!error.FieldErrors.ContainsKey(key))
                {
                    error.FieldErrors.Add(key, errors);
                }
            }

            context.Result = new BadRequestObjectResult(error);
        }
Exemplo n.º 3
0
        private static Task HandleExceptionAsync(HttpContext context, Exception exception)
        {
            var code     = HttpStatusCode.InternalServerError;
            var errorMsg = string.Empty;
            IDictionary <string, string[]> validationErrorMessages = new Dictionary <string, string[]>();

            switch (exception)
            {
            case ValidationException validationException:
                code = HttpStatusCode.BadRequest;
                validationErrorMessages = validationException.Failures;
                break;

            case BadRequestException badRequestException:
                code     = HttpStatusCode.BadRequest;
                errorMsg = badRequestException.Message;
                break;

            case NotFoundException notFoundException:
                code     = HttpStatusCode.NotFound;
                errorMsg = notFoundException.Message;
                break;

            case UnauthorizedException _:
                code = HttpStatusCode.Unauthorized;
                break;
            }

            context.Response.ContentType = "application/json";
            context.Response.StatusCode  = (int)code;
            string result;

            if (validationErrorMessages.Count == 0)
            {
                var errorModel = new ErrorModel
                {
                    Title   = code.ToString(),
                    Status  = (int)code,
                    TraceId = context.TraceIdentifier,
                    Error   = errorMsg
                };
                result = JsonConvert.SerializeObject(errorModel);
            }
            else
            {
                var errorModel = new ValidationErrorModel
                {
                    Title   = "One or more validation errors occured.",
                    Status  = (int)code,
                    TraceId = context.TraceIdentifier,
                    Errors  = validationErrorMessages
                };

                result = JsonConvert.SerializeObject(errorModel);
            }

            return(context.Response.WriteAsync(result));
        }
        private static Task HandleValidationExceptionAsync(HttpContext context, DomainValidationException exception)
        {
            context.Response.ContentType = "application/json";
            context.Response.StatusCode  = (int)HttpStatusCode.BadRequest;


            var error = new ValidationErrorModel()
            {
                Errors = exception.Errors.Select(x => new ValidationErrorMessageModel(x.Key, x.Value)).ToList()
            };

            string data = JsonConvert.SerializeObject(error);

            return(context.Response.WriteAsync(data));
        }
Exemplo n.º 5
0
        public void BuildModelFromEntity()
        {
            var model = new ValidationErrorModel
            {
                IsWarning                  = true,
                RuleName                   = "RuleName",
                ErrorMessage               = "ErrorMessage",
                ConRefNumber               = "ConRefNumber",
                DeliverableCode            = "DeliverableCode",
                CalendarYear               = "CalendarYear",
                CalendarMonth              = "CalendarMonth",
                CostType                   = "CostType",
                ReferenceType              = "ReferenceType",
                Reference                  = "Reference",
                ULN                        = "ULN",
                ProviderSpecifiedReference = "ProviderSpecifiedReference",
                Value                      = "Value",
                LearnAimRef                = "LearnAimRef",
                SupplementaryDataPanelDate = "SupplementaryDataPanelDate",
            };

            var expectedModel = new ValidationError
            {
                Severity                   = "W",
                RuleId                     = "RuleName",
                ErrorMessage               = "ErrorMessage",
                CreatedOn                  = new DateTime(2019, 8, 1),
                ConRefNumber               = "ConRefNumber",
                DeliverableCode            = "DeliverableCode",
                CalendarYear               = "CalendarYear",
                CalendarMonth              = "CalendarMonth",
                CostType                   = "CostType",
                ReferenceType              = "ReferenceType",
                Reference                  = "Reference",
                ULN                        = "ULN",
                ProviderSpecifiedReference = "ProviderSpecifiedReference",
                Value                      = "Value",
                LearnAimRef                = "LearnAimRef",
                SupplementaryDataPanelDate = "SupplementaryDataPanelDate",
                SourceFileId               = 1
            };

            NewService().BuildModelFromEntity(model, new DateTime(2019, 8, 1), 1).Should().BeEquivalentTo(expectedModel);
        }
Exemplo n.º 6
0
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            if (!context.ModelState.IsValid)
            {
                var validationErrorModel = new ValidationErrorModel(context.ModelState);

                // TODO: DI!!!
                _logger.LogError("ModelValidation. {0}.", _errorSerializer.JsonSerialize(validationErrorModel));

                if (!_showValidationErrors)
                {
                    validationErrorModel.Errors = null;
                }

                context.Result = new ObjectResult(validationErrorModel)
                {
                    StatusCode = _statusCode
                };
            }
        }
        private ValidationErrorModel BuildValidationErrorModel(EasCsvRecord record, string errorCode, ValidationErrorRule validationErrorRule)
        {
            if (validationErrorRule == null)
            {
                throw new Exception($"ValidationErrorRule Not found for the error code:  {errorCode}");
            }

            var errorModel = new ValidationErrorModel()
            {
                FundingLine     = record.FundingLine,
                AdjustmentType  = record.AdjustmentType,
                CalendarYear    = record.CalendarYear,
                CalendarMonth   = record.CalendarMonth,
                Value           = record.Value,
                ErrorMessage    = validationErrorRule.Message,
                RuleName        = errorCode,
                Severity        = validationErrorRule.Severity,
                DevolvedAreaSoF = record.DevolvedAreaSourceOfFunding
            };

            return(errorModel);
        }
Exemplo n.º 8
0
        public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
        {
            if (!context.ModelState.IsValid)
            {
                var errorsInModelState = context.ModelState
                                         .Where(x => x.Value.Errors.Count > 0)
                                         .ToDictionary(
                    kvp => kvp.Key,
                    kvp => kvp.Value.Errors.Select(x => x.ErrorMessage).ToArray()
                    );
                var errorResponse = new ValidationErrorResponse();

                foreach (var error in errorsInModelState)
                {
                    foreach (var subError in error.Value)
                    {
                        if (errorResponse.Errors.Exists(x => x.FieldName == error.Key))
                        {
                            errorResponse.Errors.Find(x => x.FieldName == error.Key).Errors.Add(subError);
                        }
                        else
                        {
                            var errorModel = new ValidationErrorModel
                            {
                                FieldName = error.Key,
                                Errors    = new List <string>(),
                            };
                            errorModel.Errors.Add(subError);
                            errorResponse.Errors.Add(errorModel);
                        }
                    }
                }
                context.Result = new UnprocessableEntityObjectResult(errorResponse);
                return;
            }

            await next();
        }
 public ValidationError BuildModelFromEntity(ValidationErrorModel model, DateTime createdOn, int fileId)
 {
     return(new ValidationError
     {
         Severity = model.IsWarning ? DataStoreConstants.ErrorSeverity.Warning : DataStoreConstants.ErrorSeverity.Error,
         RuleId = model.RuleName,
         ErrorMessage = model.ErrorMessage,
         CreatedOn = createdOn,
         ConRefNumber = model.ConRefNumber,
         DeliverableCode = model.DeliverableCode,
         CalendarYear = model.CalendarYear,
         CalendarMonth = model.CalendarMonth,
         CostType = model.CostType,
         ReferenceType = model.ReferenceType,
         Reference = model.Reference,
         ULN = model.ULN,
         ProviderSpecifiedReference = model.ProviderSpecifiedReference,
         Value = model.Value,
         LearnAimRef = model.LearnAimRef,
         SupplementaryDataPanelDate = model.SupplementaryDataPanelDate,
         SourceFileId = fileId
     });
 }
Exemplo n.º 10
0
        private List <ValidationErrorModel> BuildValidationErrorModels(IEnumerable <ValidationError> validationErrors)
        {
            List <ValidationErrorModel> validationErrorModels = new List <ValidationErrorModel>();

            foreach (var error in validationErrors)
            {
                var model = new ValidationErrorModel
                {
                    AdjustmentType  = error.AdjustmentType,
                    FundingLine     = error.FundingLine,
                    Value           = error.Value,
                    CalendarYear    = error.CalendarYear,
                    ErrorMessage    = error.ErrorMessage,
                    CalendarMonth   = error.CalendarMonth,
                    Severity        = error.Severity,
                    RuleName        = error.RuleId,
                    DevolvedAreaSoF = error.DevolvedAreaSoF
                };
                validationErrorModels.Add(model);
            }

            return(validationErrorModels);
        }