Subscribers with double opt-in confirmation, campaign composer with draft/scheduled/sent lifecycle, admin dashboard with overview stats, CSV export, and shop signup form wired into page builder blocks. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
17 lines
467 B
Elixir
17 lines
467 B
Elixir
defmodule BerrypodWeb.NewsletterExportController do
|
|
use BerrypodWeb, :controller
|
|
|
|
alias Berrypod.Newsletter
|
|
|
|
def export(conn, _params) do
|
|
csv = Newsletter.export_all_subscribers_csv()
|
|
today = Date.to_iso8601(Date.utc_today())
|
|
filename = "newsletter-subscribers-#{today}.csv"
|
|
|
|
conn
|
|
|> put_resp_content_type("text/csv")
|
|
|> put_resp_header("content-disposition", ~s(attachment; filename="#{filename}"))
|
|
|> send_resp(200, csv)
|
|
end
|
|
end
|