Skip to content

Commit dd89ec9

Browse files
GabrielCWTRichDom2185sayomaki
authored
Enhancement: Include assessment with answers in submission (#1059)
* Implement returning of assessment alongside submission answers * Update controller to accept returning of assessment * Update view to include assessment alongside submission answers * Format changes * Fix get_answers_in_submission to account for nonexistent submission * Update tests to expect assessment with answers * Fix format * fix: change return type for get_answers_in_submission * Update JSON response to camel case * Update grading controller test * Update grading controller test for staff --------- Co-authored-by: Richard Dominick <34370238+RichDom2185@users.noreply.github.com> Co-authored-by: sayomaki <willi123yao@gmail.com>
1 parent 426c3a9 commit dd89ec9

File tree

4 files changed

+354
-309
lines changed

4 files changed

+354
-309
lines changed

lib/cadet/assessments/assessments.ex

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1345,7 +1345,8 @@ defmodule Cadet.Assessments do
13451345
end
13461346

13471347
@spec get_answers_in_submission(integer() | String.t()) ::
1348-
{:ok, [Answer.t()]} | {:error, {:bad_request, String.t()}}
1348+
{:ok, {[Answer.t()], Assessment.t()}}
1349+
| {:error, {:bad_request, String.t()}}
13491350
def get_answers_in_submission(id) when is_ecto_id(id) do
13501351
answer_query =
13511352
Answer
@@ -1382,7 +1383,9 @@ defmodule Cadet.Assessments do
13821383
if answers == [] do
13831384
{:error, {:bad_request, "Submission is not found."}}
13841385
else
1385-
{:ok, answers}
1386+
assessment_id = Submission |> where(id: ^id) |> select([s], s.assessment_id) |> Repo.one()
1387+
assessment = Assessment |> where(id: ^assessment_id) |> Repo.one()
1388+
{:ok, {answers, assessment}}
13861389
end
13871390
end
13881391

lib/cadet_web/admin_controllers/admin_grading_controller.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ defmodule CadetWeb.AdminGradingController do
2424

2525
def show(conn, %{"submissionid" => submission_id}) when is_ecto_id(submission_id) do
2626
case Assessments.get_answers_in_submission(submission_id) do
27-
{:ok, answers} ->
28-
render(conn, "show.json", answers: answers)
27+
{:ok, {answers, assessment}} ->
28+
render(conn, "show.json", answers: answers, assessment: assessment)
2929

3030
{:error, {status, message}} ->
3131
conn

lib/cadet_web/admin_views/admin_grading_view.ex

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,25 @@ defmodule CadetWeb.AdminGradingView do
33

44
import CadetWeb.AssessmentsHelpers
55

6-
def render("show.json", %{answers: answers}) do
7-
render_many(answers, CadetWeb.AdminGradingView, "grading_info.json", as: :answer)
6+
def render("show.json", %{answers: answers, assessment: assessment}) do
7+
%{
8+
assessment:
9+
render_one(assessment, CadetWeb.AdminGradingView, "assessment.json", as: :assessment),
10+
answers: render_many(answers, CadetWeb.AdminGradingView, "grading_info.json", as: :answer)
11+
}
12+
end
13+
14+
def render("assessment.json", %{assessment: assessment}) do
15+
%{
16+
id: assessment.id,
17+
title: assessment.title,
18+
summaryShort: assessment.summary_short,
19+
summaryLong: assessment.summary_long,
20+
coverPicture: assessment.cover_picture,
21+
number: assessment.number,
22+
story: assessment.story,
23+
reading: assessment.reading
24+
}
825
end
926

1027
def render("gradingsummaries.json", %{

0 commit comments

Comments
 (0)