Files
Claper/lib/claper_web/controllers/stat_controller.ex
Alex 82fd4741e6 Add form feature
commit 1ccd9e6be4da1b0f539e4c76b39d097de1b8798a
Author: Alex <dev@alexandrelion.com>
Date:   Sun Feb 26 22:27:08 2023 +0100

    Fix unit tests for forms

commit b10d66be25b31028fb76c004852059bc1e2eb13a
Author: Alex <dev@alexandrelion.com>
Date:   Sun Feb 26 15:35:55 2023 +0100

    Finish form integration

commit fce276497ddaba92f367ee9994b8ae11dabdb7ab
Author: Alex <dev@alexandrelion.com>
Date:   Mon Feb 20 21:09:14 2023 +0100

    Add form
2023-02-26 23:06:40 +01:00

29 lines
713 B
Elixir

defmodule ClaperWeb.StatController do
use ClaperWeb, :controller
alias Claper.Forms
def export(conn, %{"form_id" => form_id}) do
form = Forms.get_form!(form_id, [:form_submits])
csv_data = csv_content(form.form_submits |> Enum.map(& &1.response))
conn
|> put_resp_content_type("text/csv")
|> put_resp_header("content-disposition", "attachment; filename=\"export.csv\"")
|> put_root_layout(false)
|> send_resp(200, csv_data)
end
defp csv_content(records) do
records
|> Enum.map(fn record ->
record
|> Map.new(fn {k, v} -> {String.to_atom(k), v} end)
|> Map.values()
end)
|> CSV.encode()
|> Enum.to_list()
|> to_string()
end
end