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.");
            }
        }
Ejemplo n.º 2
0
        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;
        }