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)); } }