defmodule ShopifexWeb.PlanController do use ShopifexWeb, :controller alias Shopifex.Shops def plan_schema, do: Application.fetch_env!(:shopifex, :plan_schema) def index(conn, _params) do plans = Shops.list_plans() render(conn, "index.html", plans: plans) end def new(conn, _params) do changeset = Shops.change_plan(struct!(plan_schema())) render(conn, "new.html", changeset: changeset) end def create(conn, %{"plan" => plan_params}) do case Shops.create_plan(plan_params) do {:ok, plan} -> conn |> put_flash(:info, "Plan created successfully.") |> redirect(to: Routes.plan_path(conn, :show, plan)) {:error, %Ecto.Changeset{} = changeset} -> render(conn, "new.html", changeset: changeset) end end def show(conn, %{"id" => id}) do plan = Shops.get_plan!(id) render(conn, "show.html", plan: plan) end def edit(conn, %{"id" => id}) do plan = Shops.get_plan!(id) changeset = Shops.change_plan(plan) render(conn, "edit.html", plan: plan, changeset: changeset) end def update(conn, %{"id" => id, "plan" => plan_params}) do plan = Shops.get_plan!(id) case Shops.update_plan(plan, plan_params) do {:ok, plan} -> conn |> put_flash(:info, "Plan updated successfully.") |> redirect(to: Routes.plan_path(conn, :show, plan)) {:error, %Ecto.Changeset{} = changeset} -> render(conn, "edit.html", plan: plan, changeset: changeset) end end def delete(conn, %{"id" => id}) do plan = Shops.get_plan!(id) {:ok, _plan} = Shops.delete_plan(plan) conn |> put_flash(:info, "Plan deleted successfully.") |> redirect(to: Routes.plan_path(conn, :index)) end end