public async Task <ActionResult> CompanyRegistrationsExport([FromQuery] int from = 0, [FromQuery] int count = 9999999) { try { if (!User.IsDataExporter(userRepository, placeProviderRepository)) { throw new Exception(localizer[Controllers_ResultController.Only_user_with_Data_Exporter_role_is_allowed_to_fetch_all_sick_visitors].Value); } logger.LogInformation($"CompanyRegistrationsExport: User {User.GetEmail()} is exporting data"); using var stream = new MemoryStream(); using var writer = new StreamWriter(stream); using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture); var data = await visitorRepository.ExportRegistrations(from, count, User.GetPlaceProvider()); csv.WriteRecords(data); writer.Flush(); var ret = stream.ToArray(); logger.LogInformation($"CompanyRegistrationsExport: Export size: {ret.Length}"); return(File(ret, "text/csv", $"company-registrations-{from}-{count}.csv")); } catch (ArgumentException exc) { logger.LogError(exc.Message); return(BadRequest(new ProblemDetails() { Detail = exc.Message })); } catch (Exception exc) { logger.LogError(exc, exc.Message); return(BadRequest(new ProblemDetails() { Detail = exc.Message })); } }