philomena/lib/philomena_web/controllers/notification_controller.ex
2020-01-10 23:20:19 -05:00

34 lines
928 B
Elixir

defmodule PhilomenaWeb.NotificationController do
use PhilomenaWeb, :controller
alias Philomena.Notifications.{UnreadNotification, Notification}
alias Philomena.Polymorphic
alias Philomena.Repo
import Ecto.Query
def index(conn, _params) do
user = conn.assigns.current_user
notifications =
from n in Notification,
join: un in UnreadNotification,
on: un.notification_id == n.id,
where: un.user_id == ^user.id
notifications =
notifications
|> order_by(desc: :updated_at)
|> Repo.paginate(conn.assigns.scrivener)
entries =
notifications.entries
|> Polymorphic.load_polymorphic(
actor: [actor_id: :actor_type],
actor_child: [actor_child_id: :actor_child_type]
)
notifications = %{notifications | entries: entries}
render(conn, "index.html", title: "Notification Area", notifications: notifications)
end
end