Skip to content

Commit e6a9618

Browse files
authored
fix sorting for grading (#1155)
* fix sorting for grading * sorted by submission.id as well for the edge case that inserted_at is the same * fixed formatting issues
1 parent ddd4378 commit e6a9618

File tree

1 file changed

+21
-19
lines changed

1 file changed

+21
-19
lines changed

lib/cadet/assessments/assessments.ex

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1943,12 +1943,12 @@ defmodule Cadet.Assessments do
19431943
left_join: asst in subquery(question_answers_query),
19441944
on: asst.assessment_id == s.assessment_id,
19451945
as: :asst,
1946-
left_join: user in User,
1947-
on: user.id == s.student_id,
1948-
as: :user,
19491946
left_join: cr in CourseRegistration,
1950-
on: user.id == cr.user_id,
1947+
on: s.student_id == cr.id,
19511948
as: :cr,
1949+
left_join: user in User,
1950+
on: user.id == cr.user_id,
1951+
as: :user,
19521952
left_join: group in Group,
19531953
on: cr.group_id == group.id,
19541954
as: :group,
@@ -1982,7 +1982,9 @@ defmodule Cadet.Assessments do
19821982
query =
19831983
sort_submission(query, Map.get(params, "sortBy", ""), Map.get(params, "sortDirection", ""))
19841984

1985-
query = from([s, ans, asst, user, cr, group] in query, order_by: [desc: s.inserted_at])
1985+
query =
1986+
from([s, ans, asst, cr, user, group] in query, order_by: [desc: s.inserted_at, asc: s.id])
1987+
19861988
submissions = Repo.all(query)
19871989

19881990
count_query =
@@ -2027,30 +2029,30 @@ defmodule Cadet.Assessments do
20272029
defp sort_submission_asc(query, sort_by) do
20282030
cond do
20292031
sort_by == "assessmentName" ->
2030-
from([s, ans, asst, user, cr, group, config] in query,
2032+
from([s, ans, asst, cr, user, group, config] in query,
20312033
order_by: fragment("upper(?)", asst.title)
20322034
)
20332035

20342036
sort_by == "assessmentType" ->
2035-
from([s, ans, asst, user, cr, group, config] in query, order_by: asst.config_id)
2037+
from([s, ans, asst, cr, user, group, config] in query, order_by: asst.config_id)
20362038

20372039
sort_by == "studentName" ->
2038-
from([s, ans, asst, user, cr, group, config] in query,
2040+
from([s, ans, asst, cr, user, group, config] in query,
20392041
order_by: fragment("upper(?)", user.name)
20402042
)
20412043

20422044
sort_by == "studentUsername" ->
2043-
from([s, ans, asst, user, cr, group, config] in query,
2045+
from([s, ans, asst, cr, user, group, config] in query,
20442046
order_by: fragment("upper(?)", user.username)
20452047
)
20462048

20472049
sort_by == "groupName" ->
2048-
from([s, ans, asst, user, cr, group, config] in query,
2050+
from([s, ans, asst, cr, user, group, config] in query,
20492051
order_by: fragment("upper(?)", group.name)
20502052
)
20512053

20522054
sort_by == "progressStatus" ->
2053-
from([s, ans, asst, user, cr, group, config] in query,
2055+
from([s, ans, asst, cr, user, group, config] in query,
20542056
order_by: [
20552057
asc: config.is_manually_graded,
20562058
asc: s.status,
@@ -2060,7 +2062,7 @@ defmodule Cadet.Assessments do
20602062
)
20612063

20622064
sort_by == "xp" ->
2063-
from([s, ans, asst, user, cr, group, config] in query,
2065+
from([s, ans, asst, cr, user, group, config] in query,
20642066
order_by: ans.xp + ans.xp_adjustment
20652067
)
20662068

@@ -2072,30 +2074,30 @@ defmodule Cadet.Assessments do
20722074
defp sort_submission_desc(query, sort_by) do
20732075
cond do
20742076
sort_by == "assessmentName" ->
2075-
from([s, ans, asst, user, cr, group, config] in query,
2077+
from([s, ans, asst, cr, user, group, config] in query,
20762078
order_by: [desc: fragment("upper(?)", asst.title)]
20772079
)
20782080

20792081
sort_by == "assessmentType" ->
2080-
from([s, ans, asst, user, cr, group, config] in query, order_by: [desc: asst.config_id])
2082+
from([s, ans, asst, cr, user, group, config] in query, order_by: [desc: asst.config_id])
20812083

20822084
sort_by == "studentName" ->
2083-
from([s, ans, asst, user, cr, group, config] in query,
2085+
from([s, ans, asst, cr, user, group, config] in query,
20842086
order_by: [desc: fragment("upper(?)", user.name)]
20852087
)
20862088

20872089
sort_by == "studentUsername" ->
2088-
from([s, ans, asst, user, cr, group, config] in query,
2090+
from([s, ans, asst, cr, user, group, config] in query,
20892091
order_by: [desc: fragment("upper(?)", user.username)]
20902092
)
20912093

20922094
sort_by == "groupName" ->
2093-
from([s, ans, asst, user, cr, group, config] in query,
2095+
from([s, ans, asst, cr, user, group, config] in query,
20942096
order_by: [desc: fragment("upper(?)", group.name)]
20952097
)
20962098

20972099
sort_by == "progressStatus" ->
2098-
from([s, ans, asst, user, cr, group, config] in query,
2100+
from([s, ans, asst, cr, user, group, config] in query,
20992101
order_by: [
21002102
desc: config.is_manually_graded,
21012103
desc: s.status,
@@ -2105,7 +2107,7 @@ defmodule Cadet.Assessments do
21052107
)
21062108

21072109
sort_by == "xp" ->
2108-
from([s, ans, asst, user, cr, group, config] in query,
2110+
from([s, ans, asst, cr, user, group, config] in query,
21092111
order_by: [desc: ans.xp + ans.xp_adjustment]
21102112
)
21112113

0 commit comments

Comments
 (0)