Current section
Files
Jump to
Current section
Files
lib/scales_cms_web/controllers/cms_stats_controller.ex
defmodule ScalesCmsWeb.CmsStatsController do
use ScalesCmsWeb, :controller
alias ScalesCms.Cms.CmsPages
def index(conn, _params) do
csv_content =
CmsPages.list_cms_pages()
|> CmsPages.preload_directory()
|> Enum.map(fn p ->
%{"id" => p.id, "title" => p.title, "views" => p.views, "directory" => directory_title(p)}
end)
|> CSV.encode(headers: ["id", "title", "views", "directory"])
|> Enum.join("")
conn
|> put_resp_content_type("text/csv")
|> put_resp_header("content-disposition", ~s(attachment; filename="report.csv"))
|> send_resp(200, csv_content)
end
defp directory_title(nil), do: ""
defp directory_title(%{directory: nil}), do: ""
defp directory_title(page), do: page.directory.title
end