diff --git a/lib/cannery/ammo.ex b/lib/cannery/ammo.ex index 00988b62..ea9c8539 100644 --- a/lib/cannery/ammo.ex +++ b/lib/cannery/ammo.ex @@ -5,8 +5,8 @@ defmodule Cannery.Ammo do import Ecto.Query, warn: false alias Cannery.{Accounts.User, Containers, Repo} - alias Cannery.Ammo.{AmmoGroup, AmmoType} alias Cannery.ActivityLog.ShotGroup + alias Cannery.Ammo.{AmmoGroup, AmmoType} alias Ecto.Changeset @ammo_group_create_limit 10_000 @@ -45,8 +45,6 @@ defmodule Cannery.Ammo do @doc """ Gets the average cost of a single ammo type - Raises `Ecto.NoResultsError` if the Ammo type does not exist. - ## Examples iex> get_average_cost_for_ammo_type!(%AmmoType{id: 123}, %User{id: 123}) diff --git a/lib/cannery_web/live/ammo_type_live/index.ex b/lib/cannery_web/live/ammo_type_live/index.ex index c02bb1df..2fbe1e86 100644 --- a/lib/cannery_web/live/ammo_type_live/index.ex +++ b/lib/cannery_web/live/ammo_type_live/index.ex @@ -96,61 +96,58 @@ defmodule CanneryWeb.AmmoTypeLive.Index do end defp get_ammo_type_values(ammo_type, columns, current_user) do - assigns = %{ammo_type: ammo_type} - columns |> Enum.into(%{}, fn %{key: key, type: type} -> - value = - case type do - :boolean -> - ammo_type |> Map.get(key |> String.to_existing_atom()) |> humanize() - - :round_count -> - ammo_type |> Ammo.get_round_count_for_ammo_type(current_user) - - :avg_price_paid -> - - case ammo_type |> Ammo.get_average_cost_for_ammo_type!(current_user) do - nil -> gettext("No cost information") - count -> gettext("$%{amount}", amount: count |> :erlang.float_to_binary(decimals: 2)) - end - - :actions -> - ~H""" -
- <%= live_redirect to: Routes.ammo_type_show_path(Endpoint, :show, ammo_type), - class: "text-primary-600 link", - data: [qa: "view-#{ammo_type.id}"] do %> - - <% end %> - - <%= live_patch to: Routes.ammo_type_index_path(Endpoint, :edit, ammo_type), - class: "text-primary-600 link", - data: [qa: "edit-#{ammo_type.id}"] do %> - - <% end %> - - <%= link to: "#", - class: "text-primary-600 link", - phx_click: "delete", - phx_value_id: ammo_type.id, - data: [ - confirm: dgettext("prompts", "Are you sure you want to delete this ammo?"), - qa: "delete-#{ammo_type.id}" - ] do %> - - <% end %> -
- """ - - nil -> - nil - - _other -> - ammo_type |> Map.get(key |> String.to_existing_atom()) - end - - {key, value} + {key, get_ammo_type_value(type, key, ammo_type, current_user)} end) end + + defp get_ammo_type_value(:boolean, key, ammo_type, _current_user), + do: ammo_type |> Map.get(key |> String.to_existing_atom()) |> humanize() + + defp get_ammo_type_value(:round_count, _key, ammo_type, current_user), + do: ammo_type |> Ammo.get_round_count_for_ammo_type(current_user) + + defp get_ammo_type_value(:avg_price_paid, _key, ammo_type, current_user) do + case ammo_type |> Ammo.get_average_cost_for_ammo_type!(current_user) do + nil -> gettext("No cost information") + count -> gettext("$%{amount}", amount: count |> :erlang.float_to_binary(decimals: 2)) + end + end + + defp get_ammo_type_value(:actions, _key, ammo_type, _current_user) do + assigns = %{ammo_type: ammo_type} + + ~H""" +
+ <%= live_redirect to: Routes.ammo_type_show_path(Endpoint, :show, ammo_type), + class: "text-primary-600 link", + data: [qa: "view-#{ammo_type.id}"] do %> + + <% end %> + + <%= live_patch to: Routes.ammo_type_index_path(Endpoint, :edit, ammo_type), + class: "text-primary-600 link", + data: [qa: "edit-#{ammo_type.id}"] do %> + + <% end %> + + <%= link to: "#", + class: "text-primary-600 link", + phx_click: "delete", + phx_value_id: ammo_type.id, + data: [ + confirm: dgettext("prompts", "Are you sure you want to delete this ammo?"), + qa: "delete-#{ammo_type.id}" + ] do %> + + <% end %> +
+ """ + end + + defp get_ammo_type_value(nil, _key, _ammo_type, _current_user), do: nil + + defp get_ammo_type_value(_other, key, ammo_type, _current_user), + do: ammo_type |> Map.get(key |> String.to_existing_atom()) end