public async Task <ActionResult <APIWiltelResponse> > Patch(string codemp, string codcon, string nrocon, int nroext, DateTime fechacierreot, [FromBody] JsonPatchDocument patchDocument) { APIWiltelResponse response = new APIWiltelResponse { }; logger.Information($"Se recibió una solicitud de cambio de estado del contrato: {codemp} - {codcon} - {nrocon} - {nroext}. Fecha de cierre de OT: {fechacierreot}"); if (patchDocument == null | !ModelState.IsValid) { throw new BadRequestException("No se recibió cuerpo de la petición o el mismo tiene un formato incorrecto"); } var editablePaths = new List <string> { "/CvmcthEstact" }; if (patchDocument.Operations.Any(operation => editablePaths.Contains(operation.path))) { await Service.Patch(codemp, codcon, nrocon, nroext, fechacierreot, patchDocument); return(new APIWiltelResponse { estado = 200, titulo = "Transacción ok", mensaje = "El contrato ha sido modificado exitosamente." }); } else { throw new BadRequestException("Sólo se puede editar el estado del contrato."); } }
public override void OnException(ExceptionContext context) { logger.Fatal(context.Exception.Message); var exception = context.Exception; APIWiltelResponse response = new APIWiltelResponse { estado = 500, titulo = "Error interno de la aplicación", mensaje = exception.Message }; context.Result = new ObjectResult(response); context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError; switch (context.Exception.GetType().ToString()) { case "APIWiltelSoftland.Helpers.BadRequestException": response.estado = 400; response.titulo = "Bad Request"; context.Result = new BadRequestObjectResult(response); context.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest; break; case "APIWiltelSoftland.Helpers.NotFoundException": response.estado = 404; response.titulo = "Not Found"; context.Result = new NotFoundObjectResult(response); context.HttpContext.Response.StatusCode = (int)HttpStatusCode.NotFound; break; default: break; } context.ExceptionHandled = true; }