diff --git a/lib/dbservice_web/controllers/group_user_controller.ex b/lib/dbservice_web/controllers/group_user_controller.ex index 06b02f41..b30cd7c9 100644 --- a/lib/dbservice_web/controllers/group_user_controller.ex +++ b/lib/dbservice_web/controllers/group_user_controller.ex @@ -3,6 +3,7 @@ defmodule DbserviceWeb.GroupUserController do alias Dbservice.Schools alias Dbservice.Groups alias Dbservice.EnrollmentRecords + alias Dbservice.Grades use DbserviceWeb, :controller import Ecto.Query @@ -299,7 +300,7 @@ defmodule DbserviceWeb.GroupUserController do handle_group_user(group_user_data) "grade" -> - handle_group_user(group_user_data) + handle_grade_enrollment(group_user_data) _ -> {:error, "Unknown enrollment type"} @@ -330,6 +331,18 @@ defmodule DbserviceWeb.GroupUserController do end end + defp handle_grade_enrollment(group_user_data) do + case get_grade_group_id(group_user_data["grade_id"]) do + {:error, error_msg} -> + {:error, error_msg} + + grade_group_id -> + group_user_data + |> Map.put("group_id", grade_group_id) + |> handle_group_user() + end + end + defp handle_group_user(group_user_data) do case GroupUsers.get_group_user_by_user_id_and_group_id( group_user_data["user_id"], @@ -375,6 +388,22 @@ defmodule DbserviceWeb.GroupUserController do end end + defp get_grade_group_id(grade_id) do + case Grades.get_grade!(grade_id) do + nil -> + {:error, "Grade not found"} + + grade -> + case Groups.get_group_by_child_id_and_type(grade.id, "grade") do + nil -> + {:error, "Grade group not found"} + + group -> + group.id + end + end + end + defp create_new_group_user_from_batch(params) do group = Groups.get_group!(params["group_id"])