File size: 1,266 Bytes
8da2481 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | 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
|