CLASSROOMIO-T-226: Reorganise exercise page + fetch exercise submission

Co-authored-by: Rotimi Best <[email protected]>


Merge-request: CLASSROOMIO-MR-108
Merged-by: Best Admin <[email protected]>
This commit is contained in:
Rotimi Best
2023-10-19 08:31:57 +00:00
committed by Space Cloud
co-authored by Rotimi Best
parent bfd42a11e9
commit b31fd5bcf2
13 changed files with 193 additions and 149 deletions
+42 -10
View File
@@ -1,10 +1,12 @@
import type { PostgrestSingleResponse } from '@supabase/supabase-js';
import { supabase } from '$lib/utils/functions/supabase';
import type { ExerciseSubmissions } from '$lib/utils/types';
export function fetchSubmissionStatus() {
return supabase.from('submissionstatus').select(`*`);
}
export function fetchSubmissions(course_id) {
export function fetchSubmissions(course_id: string) {
return supabase
.from('submission')
.select(
@@ -33,28 +35,58 @@ export function fetchSubmissions(course_id) {
});
}
export async function fetchSubmission({ courseId, exerciseId, submittedBy }) {
export async function fetchSubmission({
courseId,
exerciseId,
submittedBy
}: {
exerciseId: string;
courseId?: string;
submittedBy?: string;
}) {
const query: {
exercise_id: string;
course_id?: string;
submitted_by?: string;
} = {
exercise_id: exerciseId
};
if (courseId) {
query.course_id = courseId;
}
if (submittedBy) {
query.submitted_by = submittedBy;
}
return supabase
.from('submission')
.select(
`
id,
answers:question_answer(*),
status_id
status_id,
submitted_by:groupmember!inner(
profile!inner(
id,
fullname,
avatar_url
)
)
`
)
.match({
submitted_by: submittedBy,
exercise_id: exerciseId,
course_id: courseId
});
.match(query)
.returns<ExerciseSubmissions[]>();
}
export async function updateSubmission(
{ id, status_id, total }: { id?: number; status_id?: number; total?: number },
otherArgs?: any
) {
const toUpdate = {
const toUpdate: {
status_id?: number;
total?: number;
} = {
status_id
};
@@ -65,6 +97,6 @@ export async function updateSubmission(
return supabase.from('submission').update(toUpdate, otherArgs).match({ id });
}
export async function updateQuestionAnswer(update, match) {
export async function updateQuestionAnswer(update: any, match: any) {
return supabase.from('question_answer').update(update).match(match);
}
+20
View File
@@ -35,6 +35,26 @@ export interface ExerciseTemplate {
}[];
};
}
export interface ExerciseSubmissions {
id: string;
status_id: number;
submitted_by: {
profile: {
id: string;
fullname: string;
avatar_url: string;
};
};
answers: {
answers: string[];
group_member_id: string;
id: number;
open_answer: string;
point: number;
question_id: number;
submission_id: string;
}[];
}
//===========================================
interface CourseMetadata {