defmodule AthenaWeb.Admin.ItemGroupController do use AthenaWeb, :controller alias Athena.Inventory alias Athena.Inventory.ItemGroup def index(conn, %{"event" => event}) do event = Inventory.get_event!(event) item_groups = Inventory.list_item_groups(event) render_with_navigation(conn, event, "index.html", item_groups: item_groups, event: event) end def new(conn, %{"event" => event}) do event = Inventory.get_event!(event) changeset = Inventory.change_item_group(%ItemGroup{}) render_with_navigation(conn, event, "new.html", changeset: changeset, event: event) end def create(conn, %{"item_group" => item_group_params, "event" => event}) do event = Inventory.get_event!(event) case Inventory.create_item_group(event, item_group_params) do {:ok, item_group} -> conn |> put_flash(:info, gettext("Item group created successfully.")) |> redirect(to: Routes.admin_item_group_path(conn, :show, item_group)) {:error, %Ecto.Changeset{} = changeset} -> render_with_navigation(conn, event, "new.html", changeset: changeset, event: event) end end def show(conn, %{"id" => id}) do item_group = id |> Inventory.get_item_group!() |> Repo.preload(:event) render_with_navigation(conn, item_group.event, "show.html", item_group: item_group) end def edit(conn, %{"id" => id}) do item_group = id |> Inventory.get_item_group!() |> Repo.preload(:event) changeset = Inventory.change_item_group(item_group) render_with_navigation(conn, item_group.event, "edit.html", item_group: item_group, changeset: changeset ) end def update(conn, %{"id" => id, "item_group" => item_group_params}) do item_group = id |> Inventory.get_item_group!() |> Repo.preload(:event) case Inventory.update_item_group(item_group, item_group_params) do {:ok, item_group} -> conn |> put_flash(:info, gettext("Item group updated successfully.")) |> redirect(to: Routes.admin_item_group_path(conn, :show, item_group)) {:error, %Ecto.Changeset{} = changeset} -> render_with_navigation(conn, item_group.event, "edit.html", item_group: item_group, changeset: changeset ) end end def delete(conn, %{"id" => id}) do %{event_id: event_id} = item_group = Inventory.get_item_group!(id) {:ok, _item_group} = Inventory.delete_item_group(item_group) conn |> put_flash(:info, gettext("Item group deleted successfully.")) |> redirect(to: Routes.admin_item_group_path(conn, :index, event_id)) end end