Skip to content

Commit 5bdd7c5

Browse files
committed
Account for team assessments in autoclose job
1 parent e19dcec commit 5bdd7c5

File tree

1 file changed

+34
-2
lines changed

1 file changed

+34
-2
lines changed

lib/cadet/jobs/autograder/utilities.ex

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ defmodule Cadet.Autograder.Utilities do
88

99
import Ecto.Query
1010

11-
alias Cadet.Accounts.CourseRegistration
11+
alias Cadet.Accounts.{CourseRegistration, TeamMember}
12+
13+
alias Cadet.Assessments
1214
alias Cadet.Assessments.{Answer, Assessment, Question, Submission}
1315

1416
def dispatch_programming_answer(answer = %Answer{}, question = %Question{}, overwrite \\ false) do
@@ -25,7 +27,37 @@ defmodule Cadet.Autograder.Utilities do
2527
})
2628
end
2729

28-
def fetch_submissions(assessment_id, course_id) when is_ecto_id(assessment_id) do
30+
def fetch_submissions(assessment_id, course_id)
31+
when is_ecto_id(assessment_id) and is_ecto_id(course_id) do
32+
if Assessments.is_team_assessment?(assessment_id) do
33+
fetch_team_submissions(assessment_id, course_id)
34+
else
35+
fetch_student_submissions(assessment_id, course_id)
36+
end
37+
end
38+
39+
defp fetch_team_submissions(assessment_id, course_id)
40+
when is_ecto_id(assessment_id) and is_ecto_id(course_id) do
41+
CourseRegistration
42+
|> where(role: "student", course_id: ^course_id)
43+
|> join(
44+
:left,
45+
[cr],
46+
tm in TeamMember,
47+
on: cr.id == tm.student_id
48+
)
49+
|> join(
50+
:left,
51+
[cr, tm],
52+
s in Submission,
53+
on: tm.team_id == s.team_id and s.assessment_id == ^assessment_id
54+
)
55+
|> select([cr, tm, s], %{student_id: cr.id, submission: s})
56+
|> Repo.all()
57+
end
58+
59+
defp fetch_student_submissions(assessment_id, course_id)
60+
when is_ecto_id(assessment_id) and is_ecto_id(course_id) do
2961
CourseRegistration
3062
|> where(role: "student", course_id: ^course_id)
3163
|> join(

0 commit comments

Comments
 (0)