defmodule BerrypodWeb.Admin.OrderShow do use BerrypodWeb, :live_view alias Berrypod.{ActivityLog, Orders} alias Berrypod.Cart @impl true def mount(%{"id" => id}, _session, socket) do case Orders.get_order(id) do nil -> socket = socket |> put_flash(:error, "Order not found") |> push_navigate(to: ~p"/admin/orders") {:ok, socket} order -> if connected?(socket), do: ActivityLog.subscribe(order.id) timeline = ActivityLog.list_for_order(order.id) socket = socket |> assign(:page_title, order.order_number) |> assign(:order, order) |> assign(:timeline, timeline) {:ok, socket} end end @impl true def handle_info({:new_activity, entry}, socket) do {:noreply, assign(socket, :timeline, socket.assigns.timeline ++ [entry])} end @impl true def render(assigns) do ~H""" <.header> <.link navigate={~p"/admin/orders"} class="admin-back-link"> ← Orders
{@order.stripe_payment_intent_id}
<:item title="Currency">{String.upcase(@order.currency)}
No shipping address provided
<% end %>| Product | Variant | Qty | Unit price | Total |
|---|---|---|---|---|
| {item.product_name} | {item.variant_title} | {item.quantity} | {Cart.format_price(item.unit_price)} | {Cart.format_price(item.unit_price * item.quantity)} |
| Subtotal | {Cart.format_price(@order.subtotal)} | |||
| Total | {Cart.format_price(@order.total)} | |||