50 lines
1.2 KiB
Elixir
50 lines
1.2 KiB
Elixir
defmodule PlausibleWeb.UnsubscribeController do
|
|
use PlausibleWeb, :controller
|
|
use Plausible.Repo
|
|
alias Plausible.Site.{WeeklyReport, MonthlyReport}
|
|
|
|
def weekly_report(conn, %{"domain" => domain, "email" => email}) do
|
|
site = Repo.get_by(Plausible.Site, domain: domain)
|
|
weekly_report = site && Repo.get_by(WeeklyReport, site_id: site.id)
|
|
|
|
if weekly_report do
|
|
weekly_report
|
|
|> WeeklyReport.remove_recipient(email)
|
|
|> Repo.update!()
|
|
end
|
|
|
|
conn
|
|
|> assign(:skip_plausible_tracking, true)
|
|
|> render("success.html",
|
|
interval: "weekly",
|
|
site: site || %{domain: domain}
|
|
)
|
|
end
|
|
|
|
def weekly_report(conn, _) do
|
|
render_error(conn, 400)
|
|
end
|
|
|
|
def monthly_report(conn, %{"domain" => domain, "email" => email}) do
|
|
site = Repo.get_by(Plausible.Site, domain: domain)
|
|
monthly_report = site && Repo.get_by(MonthlyReport, site_id: site.id)
|
|
|
|
if monthly_report do
|
|
monthly_report
|
|
|> MonthlyReport.remove_recipient(email)
|
|
|> Repo.update!()
|
|
end
|
|
|
|
conn
|
|
|> assign(:skip_plausible_tracking, true)
|
|
|> render("success.html",
|
|
interval: "monthly",
|
|
site: site || %{domain: domain}
|
|
)
|
|
end
|
|
|
|
def monthly_report(conn, _) do
|
|
render_error(conn, 400)
|
|
end
|
|
end
|