defmodule BerrypodWeb.Admin.Dashboard do use BerrypodWeb, :live_view alias Berrypod.{Cart, Orders, Products, Settings} @impl true def mount(_params, _session, socket) do if Settings.site_live?() do status_counts = Orders.count_orders_by_status() paid_count = Map.get(status_counts, "paid", 0) recent_orders = Orders.list_orders(status: "paid") |> Enum.take(5) {:ok, socket |> assign(:page_title, "Dashboard") |> assign(:paid_count, paid_count) |> assign(:revenue, Orders.total_revenue()) |> assign(:product_count, Products.count_products()) |> assign(:recent_orders, recent_orders)} else {:ok, push_navigate(socket, to: ~p"/admin/setup")} end end @impl true def render(assigns) do ~H""" <.header> Dashboard <%!-- Stats --%>
No orders yet
Orders will appear here once customers check out.
| Order | Date | Customer | Total | Fulfilment |
|---|---|---|---|---|
| {order.order_number} | {format_date(order.inserted_at)} | {order.customer_email || "—"} | {Cart.format_price(order.total)} | <.fulfilment_pill status={order.fulfilment_status} /> |
{@value}
{@label}