defmodule PlausibleWeb.UnsubscribeController do use PlausibleWeb, :controller use Plausible.Repo alias Plausible.Site.{WeeklyReport, MonthlyReport} def weekly_report(conn, %{"website" => website, "email" => email}) do site = Repo.get_by(Plausible.Site, domain: website) 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: website, layout: {PlausibleWeb.LayoutView, "focus.html"} ) end def monthly_report(conn, %{"website" => website, "email" => email}) do site = Repo.get_by(Plausible.Site, domain: website) 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: website, layout: {PlausibleWeb.LayoutView, "focus.html"} ) end end