/// <summary> /// Método que captura las excepciones no controlada /// </summary> /// <param name="context"></param> public void OnException(ExceptionContext context) { Exception ex = context.Exception; HttpResponse response = context.HttpContext.Response; if (ex is MessageOfflineValidationException) { response.StatusCode = (int)HttpStatusCode.OK; MessageOfflineValidationException multi = ex as MessageOfflineValidationException; var exceptionResponse = new GenericResponse <object>(multi); context.Result = new JsonResult(exceptionResponse); } else if (ex is MultiMessageValidationException) { response.StatusCode = (int)HttpStatusCode.BadRequest; MultiMessageValidationException multi = ex as MultiMessageValidationException; var exceptionResponse = new GenericResponse <object>(multi); context.Result = new JsonResult(exceptionResponse); } else if (ex is MultiMessageLogValidationException) { response.StatusCode = (int)HttpStatusCode.BadRequest; MultiMessageLogValidationException multi = ex as MultiMessageLogValidationException; var exceptionResponse = new GenericResponse <object>(multi); context.Result = new JsonResult(exceptionResponse); logger.LogWarning(ex, $"[ERR_VAL] Error de Validación: {string.Join(", ", multi.Messages.Select(c => c.Message).ToList())}"); } else { response.StatusCode = (int)HttpStatusCode.InternalServerError; MultiMessageException multi = ex as MultiMessageException ?? new MultiMessageException(ex); var exceptionResponse = new GenericResponse <object>(multi); context.Result = new JsonResult(exceptionResponse); logger.LogError(ex, $"Error de aplicación: {string.Join(", ", multi.Messages.Select(c => c.Message).ToList())}"); } context.ExceptionHandled = true; }
/// <summary> /// Constructor. /// </summary> /// <param name="ex">La excepción.</param> public GenericResponse(MultiMessageValidationException ex) : this(false) { Info = ex.Messages.ToList(); }
/// <summary> /// Crea un objeto <see cref="GenericResponse{T}"/> con lista de mensajes y con respuesta pasada como parametro. /// </summary> /// <param name="ex">Indica si la respuesta es satisfactoria o no.</param> /// <returns>Respuesta de tipo IActionResult</returns> public static IActionResult CreateResponse(MultiMessageValidationException ex) { var genericResponse = new GenericResponse <object>(ex); return(new OkObjectResult(genericResponse)); }