Exemple #1
0
        public async Task <byte[]> CreateCSV(ExcelFilterDTO filter)
        {
            var transactionQuery = _transactionRepo.GetQuery();

            if (filter.Status != StatusDTO.All)
            {
                transactionQuery = transactionQuery
                                   .Where(x => x.Status == (Status)filter.Status);
            }

            if (filter.Type != TypeDTO.All)
            {
                transactionQuery = transactionQuery
                                   .Where(x => x.Type == (Type)filter.Type);
            }

            var transactions = await transactionQuery.ToListAsync();

            using (var memoryStream = new MemoryStream())
            {
                using (var streamWriter = new StreamWriter(memoryStream))
                {
                    using (var csvWriter = new CsvWriter(streamWriter, CultureInfo.InvariantCulture))
                    {
                        csvWriter.Configuration.Delimiter = ";";
                        csvWriter.WriteRecords(transactions);
                    }

                    return(memoryStream.ToArray());
                }
            }
        }
        public async Task <ActionResult> GetExcel([FromQuery] ExcelFilterDTO filter)
        {
            var validator        = new ExcelFilterValidator();
            var validationResult = await validator.ValidateAsync(filter);

            if (!validationResult.IsValid)
            {
                return(BadRequest(validationResult.Errors));
            }

            try
            {
                byte[] result = await _transService.CreateCSV(filter);

                return(File(result, "text/csv", "transactins.csv"));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, ex.Message));
            }
        }