Beispiel #1
0
        public CommandResult Criar(CriarMaterialCommand command)
        {
            try
            {
                command.Validate();
                if (command.Invalid)
                {
                    return(CommandResult.Invalid(command.Notifications.ToNotificationsString()));
                }

                Material material = Material.Criar(DataString.FromString(command.Descricao),
                                                   DataString.FromNullableString(command.Volume),
                                                   DataString.FromNullableString(command.Material_Coletado),
                                                   DataString.FromNullableString(command.Material_Coletado));

                dataContext.Add(material);
                dataContext.SaveChanges();

                return(CommandResult.Valid());
            }
            catch (Exception ex)
            {
                return(CommandResult.Invalid(ex.Message));
            }
        }
        public CommandResult Criar(CriarMotoristaCommand command)
        {
            try
            {
                command.Validate();
                if (command.Invalid)
                {
                    return(CommandResult.Invalid(command.Notifications.ToNotificationsString()));
                }

                Motorista motorista = Motorista.Criar(DataString.FromString(command.Nome),
                                                      DataString.FromNullableString(command.Ajudante1),
                                                      DataString.FromNullableString(command.Ajudante2),
                                                      DataString.FromString(command.Placa),
                                                      DataString.FromNullableString(command.Telefone1),
                                                      DataString.FromNullableString(command.Telefone2));

                dataContext.Add(motorista);
                dataContext.SaveChanges();

                return(CommandResult.Valid());
            }
            catch (Exception ex)
            {
                return(CommandResult.Invalid(ex.Message));
            }
        }
        public CommandResult Criar(CriarRotaCommand command)
        {
            try
            {
                command.Validate();
                if (command.Invalid)
                {
                    return(CommandResult.Invalid(command.Notifications.ToNotificationsString()));
                }

                Rota rota = Rota.Criar(
                    DataString.FromString(command.Nome),
                    DataString.FromNullableString(command.Composicao_Rota),
                    DataString.FromNullableString(command.Observacao),
                    command.Flag_Ativo);

                dataContext.Add(rota);
                dataContext.SaveChanges();

                return(CommandResult.Valid());
            }
            catch (Exception ex)
            {
                return(CommandResult.Invalid(ex.Message));
            }
        }
Beispiel #4
0
        public IActionResult ObterPaginado(
            [FromServices] IClienteRepository clienteRepository,
            [FromQuery] int pagina     = 1,
            [FromQuery] int quantidade = 8,
            [FromQuery] string coluna  = "nomeCompleto_RazaoSocial",
            [FromQuery] string direcao = "asc",
            [FromQuery] string nomeCompleto_RazaoSocial = null,
            [FromQuery] string cpF_CNPJ = null)
        {
            var resultado = clienteRepository.ObterPaginado(
                EnumHelpers.ParseOrDefault(coluna, ClienteSort.NomeCompleto_RazaoSocial), string.IsNullOrEmpty(direcao) || direcao.Equals("asc"),
                pagina, quantidade, DataString.FromNullableString(nomeCompleto_RazaoSocial), DataString.FromNullableString(cpF_CNPJ));

            return(Result(resultado));
        }
Beispiel #5
0
        public CommandResult Atualizar(AtualizarClienteCommand command)
        {
            string entityName = "Cliente";

            try
            {
                command.Validate();
                if (command.Invalid)
                {
                    return(CommandResult.Invalid(command.Notifications.ToNotificationsString()));
                }

                Cliente cliente = dataContext.Cliente.FirstOrDefault(x => x.Cod_Cliente == command.Cod_Cliente);

                if (cliente is null)
                {
                    return(CommandResult.Invalid(Logs.EntidadeNaoEncontrada(entityName, command.Cod_Cliente)));
                }



                cliente.Atualizar(
                    DataString.FromString(command.CPF_CNPJ),
                    DataString.FromString(command.NomeCompleto_RazaoSocial),
                    DataString.FromString(command.Fantasia),
                    DataString.FromNullableString(command.Insc_Estadual),
                    DataString.FromNullableString(command.Logradouro),
                    DataString.FromNullableString(command.Endereco),
                    DataString.FromNullableString(command.Bairro),
                    DataString.FromNullableString(command.Complemento),
                    DataString.FromNullableString(command.Cidade),
                    DataString.FromNullableString(command.CEP),
                    DataString.FromNullableString(command.UF),
                    DataString.FromNullableString(command.Telefones),
                    DataString.FromNullableString(command.Funcao),
                    command.Flag_Ativo,
                    command.Email,
                    DataString.FromNullableString(command.Observacao),
                    DataString.FromNullableString(command.Referencia));

                dataContext.SaveChanges();
                return(CommandResult.Valid());
            }
            catch (Exception ex)
            {
                return(CommandResult.Invalid(ex.Message));
            }
        }
        public CommandResult Atualizar(AtualizarMotoristaCommand command)
        {
            string entityName  = "Motorista";
            string commandName = $"Atualizando {entityName}";

            try
            {
                command.Validate();
                if (command.Invalid)
                {
                    return(CommandResult.Invalid(command.Notifications.ToNotificationsString()));
                }

                Motorista motorista = dataContext.Motorista.FirstOrDefault(x => x.Cod_Motorista == command.Cod_Motorista);

                if (motorista is null)
                {
                    return(CommandResult.Invalid(Logs.EntidadeNaoEncontrada(entityName, command.Cod_Motorista)));
                }

                if (dataContext.Motorista.Any(x => x.Nome == command.Nome.ToUpper() && x.Cod_Motorista != command.Cod_Motorista))
                {
                    string message = "Já existe um Motorista com este nome.";
                    return(CommandResult.Invalid(message));
                }

                motorista.Atualizar(DataString.FromString(command.Nome),
                                    DataString.FromNullableString(command.Ajudante1),
                                    DataString.FromNullableString(command.Ajudante2),
                                    DataString.FromString(command.Placa),
                                    DataString.FromNullableString(command.Telefone1),
                                    DataString.FromNullableString(command.Telefone2));

                //if (material.HasNotifications)
                //{
                //    return CommandResult.Invalid(material.Notifications.ToNotificationsString());
                //}

                dataContext.SaveChanges();
                return(CommandResult.Valid());
            }
            catch (Exception ex)
            {
                return(CommandResult.Invalid(ex.Message));
            }
        }
Beispiel #7
0
        public IActionResult Exportar([FromServices] IClienteRepository clienteRepository,
                                      [FromQuery] string coluna  = "nomeCompleto_RazaoSocial",
                                      [FromQuery] string direcao = "asc",
                                      [FromQuery] string nomeCompleto_RazaoSocial = null,
                                      [FromQuery] string cpF_CNPJ = null)
        {
            var resultado = clienteRepository.Obter(
                EnumHelpers.ParseOrDefault(coluna, ClienteSort.NomeCompleto_RazaoSocial), string.IsNullOrEmpty(direcao) || direcao.Equals("asc"),
                DataString.FromNullableString(nomeCompleto_RazaoSocial), DataString.FromNullableString(cpF_CNPJ));

            if (resultado.Tipo == ResultType.Valid)
            {
                StringBuilder csv = new StringBuilder();
                csv.AppendLine("COD_CLIENTE;NOME COMPLETO; FANTASIA; INSCRIÇÃO ESTADUAL; LOGRADOURO; ENDEREÇO; BAIRRO; COMPLEMENTO; CIDADE; CEP; UF; TELEFONES; FUNÇÃO; EMAIL; ATIVO; OBSERVAÇÃO; REFERENCIA");

                foreach (var x in resultado.Dados)
                {
                    csv.Append($"\"{x.Cod_Cliente}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.NomeCompleto_RazaoSocial) ? x.NomeCompleto_RazaoSocial : string.Empty)}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Fantasia) ? x.Fantasia : string.Empty)}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Insc_Estadual) ? x.Insc_Estadual : string.Empty)}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Logradouro) ? x.Logradouro : string.Empty)}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Endereco) ? x.Endereco : string.Empty)}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Bairro) ? x.Bairro : string.Empty)}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Complemento) ? x.Complemento : string.Empty)}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Cidade) ? x.Cidade : string.Empty)}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.CEP) ? x.CEP : string.Empty)}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.UF) ? x.UF : string.Empty)}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Telefones) ? x.Telefones : string.Empty)}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Funcao) ? x.Funcao : string.Empty)}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Email) ? x.Email : string.Empty)}\";");
                    csv.Append($"\"{(x.Flag_Ativo != null ? (Convert.ToBoolean(x.Flag_Ativo) ? "Sim" : "Não") : "Não")}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Observacao) ? x.Observacao : string.Empty)}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Referencia) ? x.Referencia : string.Empty)}\";");
                    csv.AppendLine("");
                }


                string nomeArquivo = $"Cliente{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.csv";
                byte[] bytes       = Encoding.UTF8.GetBytes(csv.ToString());
                bytes = Encoding.UTF8.GetPreamble().Concat(bytes).ToArray();
                return(File(bytes, "text/csv", nomeArquivo));
            }
            return(Result(resultado));
        }
        public CommandResult Criar(CriarContratoCommand command)
        {
            string entityName = "Contrato";
            {
                try
                {
                    command.Validate();
                    if (command.Invalid)
                    {
                        return(CommandResult.Invalid(command.Notifications.ToNotificationsString()));
                    }


                    Cliente cliente = dataContext.Cliente.FirstOrDefault(c => c.Cod_Cliente == command.CodCliente);

                    if (cliente is null)
                    {
                        return(CommandResult.Invalid(Logs.EntidadeNaoEncontrada(entityName, command.CodCliente)));
                    }

                    Contrato contrato = Contrato.Criar(
                        command.ColetaContratada,
                        command.ValorLimite,
                        command.ValorUnidade,
                        DataString.FromNullableString(command.MotivoCancelamento),
                        command.DataCancelamento,
                        command.FlagTermino,
                        command.DataInicio,
                        command.DataTermino,
                        cliente);


                    dataContext.Add(contrato);
                    dataContext.SaveChanges();


                    return(CommandResult.Valid());
                }
                catch (Exception ex)
                {
                    return(CommandResult.Invalid(ex.Message));
                }
            }
        }
Beispiel #9
0
        public CommandResult Atualizar(AtualizarMaterialCommand command)
        {
            string entityName = "Material";

            try
            {
                command.Validate();
                if (command.Invalid)
                {
                    return(CommandResult.Invalid(command.Notifications.ToNotificationsString()));
                }

                Material material = dataContext.Material.FirstOrDefault(x => x.Cod_Material == command.Cod_Material);

                if (material is null)
                {
                    return(CommandResult.Invalid(Logs.EntidadeNaoEncontrada(entityName, command.Cod_Material)));
                }


                if (dataContext.Material.Any(x => x.Descricao == command.Descricao.ToUpper() && x.Cod_Material != command.Cod_Material))
                {
                    string message = "Já existe outro Material com este nome.";
                    return(CommandResult.Invalid(message));
                }

                material.Atualizar(DataString.FromString(command.Descricao),
                                   command.Volume,
                                   DataString.FromNullableString(command.Material_Coletado),
                                   DataString.FromNullableString(command.Material_Coletado));

                //if (material.HasNotifications)
                //{
                //    return CommandResult.Invalid(material.Notifications.ToNotificationsString());
                //}

                dataContext.SaveChanges();
                return(CommandResult.Valid());
            }
            catch (Exception ex)
            {
                return(CommandResult.Invalid(ex.Message));
            }
        }
Beispiel #10
0
        public CommandResult Criar(CriarClienteCommand command)
        {
            try
            {
                command.Validate();
                if (command.Invalid)
                {
                    return(CommandResult.Invalid(command.Notifications.ToNotificationsString()));
                }


                Cliente cliente = Cliente.Criar(
                    DataString.FromString(command.CPF_CNPJ),
                    DataString.FromString(command.NomeCompleto_RazaoSocial),
                    DataString.FromString(command.Fantasia),
                    DataString.FromNullableString(command.Insc_Estadual),
                    DataString.FromNullableString(command.Logradouro),
                    DataString.FromNullableString(command.Endereco),
                    DataString.FromNullableString(command.Bairro),
                    DataString.FromNullableString(command.Complemento),
                    DataString.FromNullableString(command.Cidade),
                    DataString.FromNullableString(command.CEP),
                    DataString.FromNullableString(command.UF),
                    DataString.FromNullableString(command.Telefones),
                    DataString.FromNullableString(command.Funcao),
                    command.Flag_Ativo,
                    command.Email,
                    DataString.FromNullableString(command.Observacao),
                    DataString.FromNullableString(command.Referencia));


                dataContext.Add(cliente);
                dataContext.SaveChanges();


                return(CommandResult.Valid());
            }
            catch (Exception ex)
            {
                return(CommandResult.Invalid(ex.Message));
            }
        }
        public CommandResult Atualizar(AtualizarRotaCommand command)
        {
            string entityName  = "Rota";
            string commandName = $"Atualizando {entityName}";

            try
            {
                command.Validate();
                if (command.Invalid)
                {
                    return(CommandResult.Invalid(command.Notifications.ToNotificationsString()));
                }

                Rota rota = dataContext.Rota.FirstOrDefault(x => x.Cod_Rota == command.Cod_Rota);

                if (rota is null)
                {
                    return(CommandResult.Invalid(Logs.EntidadeNaoEncontrada(entityName, command.Cod_Rota)));
                }

                if (dataContext.Rota.Any(x => x.Nome == command.Nome.ToUpper() && x.Cod_Rota != command.Cod_Rota))
                {
                    string message = "Já existe uma Rota com este nome.";
                    return(CommandResult.Invalid(message));
                }

                rota.Atualizar(DataString.FromString(command.Nome),
                               DataString.FromNullableString(command.Composicao_Rota),
                               DataString.FromNullableString(command.Observacao),
                               command.Flag_Ativo);


                dataContext.SaveChanges();
                return(CommandResult.Valid());
            }
            catch (Exception ex)
            {
                return(CommandResult.Invalid(ex.Message));
            }
        }
        public IActionResult Exportar([FromServices] IMotoristaRepository repository,
                                      [FromQuery] string coluna = "nome", [FromQuery] string direcao = "asc", [FromQuery] string nome = null)
        {
            var resultado = repository.Obter(EnumHelpers.ParseOrDefault(coluna, MotoristaSort.Nome),
                                             string.IsNullOrEmpty(direcao) || direcao.Equals("asc"), DataString.FromNullableString(nome));

            if (resultado.Tipo == ResultType.Valid)
            {
                StringBuilder csv = new StringBuilder();
                csv.AppendLine("COD_MOTORISTA; NOME; AJUDANTE1; AJUDANTE2; TELEFONE1, TELEFONE2; PLACA");

                foreach (var x in resultado.Dados)
                {
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Nome) ? x.Nome : string.Empty)}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Ajudante1) ? x.Ajudante1 : string.Empty)}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Ajudante2) ? x.Ajudante2 : string.Empty)}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Telefone1) ? x.Telefone1 : string.Empty)}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Telefone2) ? x.Telefone2 : string.Empty)}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Placa) ? x.Placa : string.Empty)}\";");
                    csv.AppendLine("");
                }

                string nomeArquivo = $"Motorista{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.csv";
                byte[] bytes       = Encoding.UTF8.GetBytes(csv.ToString());
                bytes = Encoding.UTF8.GetPreamble().Concat(bytes).ToArray();
                return(File(bytes, "text/csv", nomeArquivo));
            }
            return(Result(resultado));
        }
 public IActionResult ObterPaginado(
     [FromServices] IMotoristaRepository motoristaRepository,
     [FromQuery] int pagina, [FromQuery] int quantidade,
     [FromQuery] string coluna  = "nome",
     [FromQuery] string direcao = "asc",
     [FromQuery] string nome    = null
     )
 {
     return(Result(motoristaRepository.ObterPaginado(pagina, quantidade, EnumHelpers.ParseOrDefault(coluna, MotoristaSort.Nome),
                                                     string.IsNullOrEmpty(direcao) || direcao.Equals("asc"), DataString.FromNullableString(nome))));
 }
Beispiel #14
0
        public IActionResult Exportar([FromServices] IRotaRepository repository,
                                      [FromQuery] string coluna  = "nome",
                                      [FromQuery] string direcao = "asc",
                                      [FromQuery] string nome    = null)
        {
            var resultado = repository.Obter(EnumHelpers.ParseOrDefault(coluna, RotaSort.Nome),
                                             string.IsNullOrEmpty(direcao) || direcao.Equals("asc"), DataString.FromNullableString(nome));

            if (resultado.Tipo == ResultType.Valid)
            {
                StringBuilder csv = new StringBuilder();
                csv.AppendLine("COD_ROTA; NOME; COMPOSIÇÃO DA ROTA; ATIVO; OBSERVAÇÃO");

                foreach (var x in resultado.Dados)
                {
                    csv.Append($"\"{x.Cod_Rota}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Nome) ? x.Nome : string.Empty)}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Composicao_Rota) ? x.Composicao_Rota : string.Empty)}\";");
                    csv.Append($"\"{(x.Flag_Ativo != null ? (Convert.ToBoolean(x.Flag_Ativo) ? "Sim" : "Não") : "Não")}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Observacao) ? x.Observacao : string.Empty)}\";");
                    csv.AppendLine("");
                }

                string nomeArquivo = $"Rota{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.csv";
                byte[] bytes       = Encoding.UTF8.GetBytes(csv.ToString());
                bytes = Encoding.UTF8.GetPreamble().Concat(bytes).ToArray();
                return(File(bytes, "text/csv", nomeArquivo));
            }
            return(Result(resultado));
        }
        public IActionResult Exportar([FromServices] IMaterialRepository repository,
                                      [FromQuery] string coluna    = "descricao",
                                      [FromQuery] string direcao   = "asc",
                                      [FromQuery] string descricao = null)
        {
            var resultado = repository.Obter(EnumHelpers.ParseOrDefault(coluna, MaterialSort.Descricao),
                                             string.IsNullOrEmpty(direcao) || direcao.Equals("asc"), DataString.FromNullableString(descricao));

            if (resultado.Tipo == ResultType.Valid)
            {
                StringBuilder csv = new StringBuilder();
                csv.AppendLine("COD_MATERIAL;DESCRIÇÃO; VOLUME; OBSERVAÇÃO; MATERIAL COLETADO");

                foreach (var x in resultado.Dados)
                {
                    csv.Append($"\"{x.Cod_Material}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Descricao) ? x.Descricao : string.Empty)}\";");
                    csv.Append($"\"{(x.Volume != null ? x.Volume.ToString() : "")}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Observacao) ? x.Observacao : string.Empty)}\";");
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.Material_Coletado) ? x.Material_Coletado : string.Empty)}\";");
                    csv.AppendLine("");
                }

                string nomeArquivo = $"Material{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.csv";
                byte[] bytes       = Encoding.UTF8.GetBytes(csv.ToString());
                bytes = Encoding.UTF8.GetPreamble().Concat(bytes).ToArray();
                return(File(bytes, "text/csv", nomeArquivo));
            }
            return(Result(resultado));
        }
Beispiel #16
0
        public IActionResult ObterPaginado(
            [FromServices] IMesReferenciaRepository mesReferanciaRepository,
            [FromQuery] int pagina, [FromQuery] int quantidade,
            [FromQuery] string coluna  = "mesAno",
            [FromQuery] string direcao = "asc",
            [FromQuery] string mesAno  = null
            )
        {
            var resultado = mesReferanciaRepository.ObterPaginado(pagina, quantidade, EnumHelpers.ParseOrDefault(coluna, MesReferenciaSort.MesAno),
                                                                  string.IsNullOrEmpty(direcao) || direcao.Equals("asc"), DataString.FromNullableString(mesAno));

            if (resultado.Tipo == ResultType.Valid)
            {
                foreach (var mesRef in resultado.Dados.Data)
                {
                    if (mesRef.DataInicio != null)
                    {
                        string data = mesRef.DataInicio.ToShortDateString();

                        //ToShortDateString()

                        //mesRef.DataInicio = data;
                    }
                }
            }
            return(Result(resultado));
        }
Beispiel #17
0
        public CommandResult Atualizar(AtualizarRoteiroCommand command)
        {
            string entityName  = "Roteiro";
            string commandName = $"Atualizando {entityName}";

            try
            {
                command.Validate();
                if (command.Invalid)
                {
                    return(CommandResult.Invalid(command.Notifications.ToNotificationsString()));
                }

                var roteiro = dataContext.Roteiro.FirstOrDefault(x => x.Cod_Roteiro == command.Cod_Roteiro);

                if (roteiro is null)
                {
                    return(CommandResult.Invalid(Logs.EntidadeNaoEncontrada("Roteiro", command.Cod_Roteiro)));
                }

                var cliente = dataContext.Cliente.FirstOrDefault(x => x.Cod_Cliente == command.Cod_Cliente);

                if (cliente is null)
                {
                    return(CommandResult.Invalid(Logs.EntidadeNaoEncontrada("Cliente", command.Cod_Cliente)));
                }

                var turno = dataContext.Turno.FirstOrDefault(x => x.Cod_Turno == command.Cod_Turno);

                if (turno is null)
                {
                    return(CommandResult.Invalid(Logs.EntidadeNaoEncontrada("Turno", (int)command.Cod_Turno)));
                }

                var rota = dataContext.Rota.FirstOrDefault(x => x.Cod_Rota == command.Cod_Rota);

                if (rota is null)
                {
                    return(CommandResult.Invalid(Logs.EntidadeNaoEncontrada("Rota", command.Cod_Rota)));
                }

                var motorista = dataContext.Motorista.FirstOrDefault(x => x.Cod_Motorista == command.Cod_Motorista);

                if (motorista is null)
                {
                    return(CommandResult.Invalid(Logs.EntidadeNaoEncontrada("Motorista", command.Cod_Motorista)));
                }


                var material = dataContext.Material.FirstOrDefault(x => x.Cod_Material == command.Cod_Material);

                if (material is null)
                {
                    return(CommandResult.Invalid(Logs.EntidadeNaoEncontrada("Material", (int)command.Cod_Material)));
                }

                roteiro.Atualizar(cliente,
                                  turno,
                                  rota,
                                  motorista,
                                  material,
                                  command.Segunda,
                                  command.Terca,
                                  command.Quarta,
                                  command.Quinta,
                                  command.Sexta,
                                  command.Sabado,
                                  command.Domingo,
                                  DataString.FromNullableString(command.Observacao));

                dataContext.SaveChanges();
                return(CommandResult.Valid());
            }
            catch (Exception ex)
            {
                return(CommandResult.Invalid(ex.Message));
            }
        }
Beispiel #18
0
        public IActionResult Exportar([FromServices] IMesReferenciaRepository repository,
                                      [FromQuery] string coluna = "nome", [FromQuery] string direcao = "asc", [FromQuery] string nome = null)
        {
            var resultado = repository.Obter(EnumHelpers.ParseOrDefault(coluna, MesReferenciaSort.MesAno),
                                             string.IsNullOrEmpty(direcao) || direcao.Equals("asc"), DataString.FromNullableString(nome));

            if (resultado.Tipo == ResultType.Valid)
            {
                StringBuilder csv = new StringBuilder();
                csv.AppendLine("COD_MES_REFERÊNCIA; MES/ANO; DATA INICIO REFERÊNCIA; DATA FIM REFERÊNCIA;");

                foreach (var x in resultado.Dados)
                {
                    csv.Append($"\"{(!string.IsNullOrEmpty(x.MesAno) ? x.MesAno : string.Empty)}\";");
                    csv.Append($"\"{(x.DataInicio != null ? x.DataInicio.ToShortDateString() : string.Empty)}\";");
                    csv.Append($"\"{(x.DataTermino != null ? x.DataTermino.Value.ToShortDateString() : string.Empty)}\";");
                    csv.AppendLine("");
                }

                string nomeArquivo = $"MesReferencia{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.csv";
                byte[] bytes       = Encoding.UTF8.GetBytes(csv.ToString());
                bytes = Encoding.UTF8.GetPreamble().Concat(bytes).ToArray();
                return(File(bytes, "text/csv", nomeArquivo));
            }
            return(Result(resultado));
        }
 public IActionResult ObterPaginado(
     [FromServices] IMaterialRepository materialRepository,
     [FromQuery] int pagina, [FromQuery] int quantidade,
     [FromQuery] string coluna    = "descricao",
     [FromQuery] string direcao   = "asc",
     [FromQuery] string descricao = null
     )
 {
     return(Result(materialRepository.ObterPaginado(pagina, quantidade, EnumHelpers.ParseOrDefault(coluna, MaterialSort.Descricao),
                                                    string.IsNullOrEmpty(direcao) || direcao.Equals("asc"), DataString.FromNullableString(descricao))));
 }