public IActionResult Insert(
            [FromBody] InfracaoInsertCommand command,
            [FromServices] InfracaoService service
            )
        {
            GenericResult result = service.Exec(command);

            return(StatusCode(result.Status, result));
        }
        public IActionResult Update(
            [FromBody] InfracaoUpdateCommand command,
            [FromServices] InfracaoService service,
            [FromServices] IMemoryCache cache
            )
        {
            GenericResult result = service.Exec(command);

            if (result.Status == 200)
            {
                cache.Remove(command.Id);
            }

            return(StatusCode(result.Status, result));
        }
        public IActionResult Delete(
            int id,
            [FromServices] InfracaoService service,
            [FromServices] IMemoryCache cache
            )
        {
            InfracaoDeleteCommand command = new InfracaoDeleteCommand(id);

            GenericResult result = service.Exec(command);

            if (result.Status == 204)
            {
                cache.Remove(id);
            }

            return(StatusCode(result.Status, result));
        }
        public GenericPesquisa GetAll(
            short pagina,
            short qtd,
            string campo,
            short ordem,
            [FromServices] InfracaoService service,
            string filtro = ""
            )
        {
            Pesquisa pesquisa = new Pesquisa(pagina, qtd, campo, ordem, filtro);

            GenericPesquisa result = new GenericPesquisa(
                service.GetAll(pesquisa),
                service.GetTotalDeRegistros(pesquisa)
                );

            return(result);
        }
        public InfracaoModel GetByIdExterno(
            int id,
            [FromServices] InfracaoService service,
            [FromServices] IMemoryCache cache
            )
        {
            InfracaoModel infracaoModel;

            if (!cache.TryGetValue(id, out infracaoModel))
            {
                infracaoModel = service.GetById(id, "");

                if (infracaoModel != null)
                {
                    var opcoesDoCache = new MemoryCacheEntryOptions()
                    {
                        AbsoluteExpiration = DateTime.Now.AddMinutes(CACHEEMMINUTOS)
                    };
                    cache.Set(id, infracaoModel, opcoesDoCache);
                }
            }

            return(infracaoModel);
        }