コード例 #1
0
        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));
        }