defmodule ServicexMatchingWeb.ProjectController do use ServicexMatchingWeb, :controller alias ServicexMatching.Organizations alias ServicexMatching.Organizations.Project action_fallback ServicexMatchingWeb.FallbackController def index(conn, _params) do projects = Organizations.list_projects() render(conn, "index.json", projects: projects) end def create(conn, project_params) do with {:ok, %Project{} = project} <- Organizations.create_project(project_params) do conn |> put_status(:created) |> put_resp_header("location", project_path(conn, :show, project)) |> render("show.json", project: project) end end def show(conn, %{"id" => id}) do project = Organizations.get_project!(id) render(conn, "show.json", project: project) end def update(conn, project_params) do project = Organizations.get_project!(project_params["id"]) with {:ok, %Project{} = project} <- Organizations.update_project(project, project_params) do render(conn, "show.json", project: project) end end def delete(conn, %{"id" => id}) do project = Organizations.get_project!(id) with {:ok, %Project{}} <- Organizations.delete_project(project) do send_resp(conn, :no_content, "") end end def list_my_plojects(conn, _params) do user_id = String.to_integer(conn.private.guardian_default_claims["sub"]) project = Organizations.list_project_by_user_id(user_id) render(conn, "show.json", project: project) end def create_my_project(conn, project_params) do user_id = String.to_integer(conn.private.guardian_default_claims["sub"]) with {:ok, %Project{} = project} <- Organizations.create_my_project(user_id, project_params) do conn |> put_status(:created) |> put_resp_header("location", project_path(conn, :show, project)) |> render("show.json", project: project) end end end