defmodule MvWeb.MemberLive.Show do use MvWeb, :live_view import Ash.Query @impl true def render(assigns) do ~H""" <.header> {@member.first_name} {@member.last_name} <:subtitle>{gettext("This is a member record from your database.")} <:actions> <.button navigate={~p"/members"}> <.icon name="hero-arrow-left" /> <.button variant="primary" navigate={~p"/members/#{@member}/edit?return_to=show"}> <.icon name="hero-pencil-square" /> {gettext("Edit Member")} <.list> <:item title={gettext("Id")}>{@member.id} <:item title={gettext("First Name")}>{@member.first_name} <:item title={gettext("Last Name")}>{@member.last_name} <:item title={gettext("Email")}>{@member.email} <:item title={gettext("Birth Date")}>{@member.birth_date} <:item title={gettext("Paid")}> {if @member.paid, do: gettext("Yes"), else: gettext("No")} <:item title={gettext("Phone Number")}>{@member.phone_number} <:item title={gettext("Join Date")}>{@member.join_date} <:item title={gettext("Exit Date")}>{@member.exit_date} <:item title={gettext("Notes")}>{@member.notes} <:item title={gettext("City")}>{@member.city} <:item title={gettext("Street")}>{@member.street} <:item title={gettext("House Number")}>{@member.house_number} <:item title={gettext("Postal Code")}>{@member.postal_code}

{gettext("Custom Properties")}

<.generic_list items={ Enum.map(@member.properties, fn p -> { # name p.property_type && p.property_type.name, # value case p.value do %{value: v} -> v v -> v end } end) } />
""" end @impl true def mount(_params, _session, socket) do {:ok, socket} end @impl true def handle_params(%{"id" => id}, _, socket) do query = Mv.Membership.Member |> filter(id == ^id) |> load(properties: [:property_type]) member = Ash.read_one!(query) {:noreply, socket |> assign(:page_title, page_title(socket.assigns.live_action)) |> assign(:member, member)} end defp page_title(:show), do: gettext("Show Member") defp page_title(:edit), do: gettext("Edit Member") end