| 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 |
|
|