From 8d05b5aeebf721636143e06a67b115b3638610d8 Mon Sep 17 00:00:00 2001 From: Abhinav Gupta Date: Fri, 10 Jan 2025 13:38:24 +0530 Subject: [PATCH] dynamic changeset to hanble auth_group ER's with null academic_year --- lib/dbservice/enrollment_record/enrollment_record.ex | 10 +++++++--- lib/dbservice_web/controllers/student_controller.ex | 11 +++++++---- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/lib/dbservice/enrollment_record/enrollment_record.ex b/lib/dbservice/enrollment_record/enrollment_record.ex index cf761dae..10d25e0c 100644 --- a/lib/dbservice/enrollment_record/enrollment_record.ex +++ b/lib/dbservice/enrollment_record/enrollment_record.ex @@ -29,10 +29,14 @@ defmodule Dbservice.EnrollmentRecords.EnrollmentRecord do def changeset(enrollment_record, attrs) do required_fields = [:user_id, :group_id, :group_type, :start_date, :grade_id] + group_type = Map.get(attrs, "group_type") || Map.get(enrollment_record, :group_type) + required_fields = - if Map.get(attrs, "group_type") == "auth_group", - do: required_fields, - else: [:academic_year | required_fields] + if group_type != "auth_group" do + [:academic_year | required_fields] + else + required_fields + end enrollment_record |> cast(attrs, [ diff --git a/lib/dbservice_web/controllers/student_controller.ex b/lib/dbservice_web/controllers/student_controller.ex index 992c3fbe..4432f281 100644 --- a/lib/dbservice_web/controllers/student_controller.ex +++ b/lib/dbservice_web/controllers/student_controller.ex @@ -188,7 +188,11 @@ defmodule DbserviceWeb.StudentController do end end - def dropout(conn, %{"student_id" => student_id, "start_date" => dropout_start_date}) do + def dropout(conn, %{ + "student_id" => student_id, + "start_date" => dropout_start_date, + "academic_year" => academic_year + }) do student = Users.get_student_by_student_id(student_id) # Check if the student's status is already 'dropout' @@ -216,10 +220,9 @@ defmodule DbserviceWeb.StudentController do ) |> Repo.all() - # Use the academic_year and grade_id from one of the current enrollments - %{academic_year: academic_year, grade_id: grade_id} = List.first(current_enrollments) + # Get grade_id from the student table + grade_id = student.grade_id - # Update all current enrollment records to set is_current: false and end_date Enum.each(current_enrollments, fn enrollment -> EnrollmentRecords.update_enrollment_record(enrollment, %{ is_current: false,