From d72d0a6752575266faa80d477d0bb671721a853b Mon Sep 17 00:00:00 2001 From: thortol Date: Sat, 31 Aug 2024 17:31:40 +0800 Subject: [PATCH 1/6] removed unnecessary logic --- lib/cadet/assessments/assessments.ex | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lib/cadet/assessments/assessments.ex b/lib/cadet/assessments/assessments.ex index 4ce8dec85..4239b2076 100644 --- a/lib/cadet/assessments/assessments.ex +++ b/lib/cadet/assessments/assessments.ex @@ -1455,11 +1455,10 @@ defmodule Cadet.Assessments do Answer |> where(submission_id: ^submission_id) |> order_by(:question_id) - |> group_by([a], a.id) |> select([a], %{ # grouping by submission, so s.xp_bonus will be the same, but we need an # aggregate function - total_xp: sum(a.xp) + sum(a.xp_adjustment) + total_xp: a.xp + a.xp_adjustment }) total = @@ -1470,8 +1469,6 @@ defmodule Cadet.Assessments do }) |> Repo.one() - xp = decimal_to_integer(total.total_xp) - cur_time = if submission.submitted_at == nil do Timex.now() @@ -1480,7 +1477,7 @@ defmodule Cadet.Assessments do end xp_bonus = - if xp <= 0 do + if total.total_xp <= 0 do 0 else if Timex.before?(cur_time, Timex.shift(assessment.open_at, hours: early_hours)) do From 1aac094d584fe76d8d0967af79c05f64a60d4197 Mon Sep 17 00:00:00 2001 From: thortol Date: Sat, 31 Aug 2024 17:33:09 +0800 Subject: [PATCH 2/6] change the submission passed into update_xp_bonus --- lib/cadet/assessments/assessments.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/cadet/assessments/assessments.ex b/lib/cadet/assessments/assessments.ex index 4239b2076..08c035fb9 100644 --- a/lib/cadet/assessments/assessments.ex +++ b/lib/cadet/assessments/assessments.ex @@ -1034,7 +1034,7 @@ defmodule Cadet.Assessments do # Begin autograding job GradingJob.force_grade_individual_submission(updated_submission) - update_xp_bonus(submission) + update_xp_bonus(updated_submission) {:ok, nil} else From 5c15c02eca9a58223e72d0c2fa148b61d3310ab6 Mon Sep 17 00:00:00 2001 From: thortol Date: Sat, 31 Aug 2024 19:24:01 +0800 Subject: [PATCH 3/6] Update bonus xp when grading is published --- lib/cadet/assessments/assessments.ex | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/cadet/assessments/assessments.ex b/lib/cadet/assessments/assessments.ex index 08c035fb9..7b62516e2 100644 --- a/lib/cadet/assessments/assessments.ex +++ b/lib/cadet/assessments/assessments.ex @@ -1257,6 +1257,8 @@ defmodule Cadet.Assessments do |> Submission.changeset(%{is_grading_published: true}) |> Repo.update() + update_xp_bonus(submission) + Notifications.write_notification_when_published( submission.id, :published_grading From 686579702e7c637624c600deaba4e62a3a25cc0c Mon Sep 17 00:00:00 2001 From: thortol Date: Sun, 1 Sep 2024 00:59:51 +0800 Subject: [PATCH 4/6] Add extra logic to check if xp is an integer --- lib/cadet/assessments/assessments.ex | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/cadet/assessments/assessments.ex b/lib/cadet/assessments/assessments.ex index 7b62516e2..34d4edf84 100644 --- a/lib/cadet/assessments/assessments.ex +++ b/lib/cadet/assessments/assessments.ex @@ -1478,8 +1478,15 @@ defmodule Cadet.Assessments do submission.submitted_at end + xp = + if is_integer(total.total_xp) do + total.total_xp + else + decimal_to_integer(total.total_xp) + end + xp_bonus = - if total.total_xp <= 0 do + if xp <= 0 do 0 else if Timex.before?(cur_time, Timex.shift(assessment.open_at, hours: early_hours)) do From 1183b157879a16f4950ecc4d7d517b004ed9de68 Mon Sep 17 00:00:00 2001 From: thortol Date: Sun, 1 Sep 2024 11:52:45 +0800 Subject: [PATCH 5/6] Remove outdated comment --- lib/cadet/assessments/assessments.ex | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/cadet/assessments/assessments.ex b/lib/cadet/assessments/assessments.ex index 34d4edf84..4c326f4d0 100644 --- a/lib/cadet/assessments/assessments.ex +++ b/lib/cadet/assessments/assessments.ex @@ -1458,8 +1458,6 @@ defmodule Cadet.Assessments do |> where(submission_id: ^submission_id) |> order_by(:question_id) |> select([a], %{ - # grouping by submission, so s.xp_bonus will be the same, but we need an - # aggregate function total_xp: a.xp + a.xp_adjustment }) From c2945faf7958ca5379d00405cf483df741c9c8ae Mon Sep 17 00:00:00 2001 From: thortol Date: Wed, 11 Sep 2024 22:15:42 +0800 Subject: [PATCH 6/6] Use coalesce to check if total_xp = nil --- lib/cadet/assessments/assessments.ex | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/lib/cadet/assessments/assessments.ex b/lib/cadet/assessments/assessments.ex index 4c326f4d0..b40b42368 100644 --- a/lib/cadet/assessments/assessments.ex +++ b/lib/cadet/assessments/assessments.ex @@ -1465,7 +1465,7 @@ defmodule Cadet.Assessments do ans_xp |> subquery |> select([a], %{ - total_xp: sum(a.total_xp) + total_xp: coalesce(sum(a.total_xp), 0) }) |> Repo.one() @@ -1476,15 +1476,8 @@ defmodule Cadet.Assessments do submission.submitted_at end - xp = - if is_integer(total.total_xp) do - total.total_xp - else - decimal_to_integer(total.total_xp) - end - xp_bonus = - if xp <= 0 do + if total.total_xp <= 0 do 0 else if Timex.before?(cur_time, Timex.shift(assessment.open_at, hours: early_hours)) do