diff --git a/src/lib/utils/services/lms/exercises.ts b/src/lib/utils/services/lms/exercises.ts index 064b5394..b3149283 100644 --- a/src/lib/utils/services/lms/exercises.ts +++ b/src/lib/utils/services/lms/exercises.ts @@ -64,7 +64,7 @@ export async function fetchLMSExercises( total, groupmember:submitted_by!inner ( id, - profile!inner ( + profile:profile_id!inner ( id ) ) @@ -79,12 +79,12 @@ export async function fetchLMSExercises( group:group_id!inner ( organisation:organization_id!inner ( id - ) - ), - groupmember:group_id!inner( - id, - profile!inner ( - id + ), + groupmember!inner( + id, + profile:profile_id!inner ( + id + ) ) ) ) @@ -92,7 +92,7 @@ export async function fetchLMSExercises( ` ) .eq('lesson.course.group.organisation.id', orgId) - .eq('lesson.course.groupmember.profile.id', profileId) + .eq('lesson.course.group.groupmember.profile.id', profileId) .eq('submission.groupmember.profile.id', profileId); return { diff --git a/src/lib/utils/services/notification/notification.ts b/src/lib/utils/services/notification/notification.ts index ff6b7d2c..25d55398 100644 --- a/src/lib/utils/services/notification/notification.ts +++ b/src/lib/utils/services/notification/notification.ts @@ -7,7 +7,8 @@ export const NOTIFICATION_NAME = { SEND_TEACHER_STUDENT_BUY_REQUEST: 'SEND TEACHER STUDENT BUY REQUEST', STUDENT_PROOVE_COURSE_PAYMENT: 'STUDENT PROOVE COURSE PAYMENT', STUDENT_COURSE_WELCOME: 'STUDENT COURSE WELCOME', - TEACHER_STUDENT_JOINED: 'TEACHER STUDENT JOINED' + TEACHER_STUDENT_JOINED: 'TEACHER STUDENT JOINED', + SUBMISSION_UPDATE: 'SUBMISSION UPDATE' }; const NAME_TO_PATH = { @@ -18,12 +19,12 @@ const NAME_TO_PATH = { '/api/email/course/teacher_student_buycourse', [NOTIFICATION_NAME.STUDENT_PROOVE_COURSE_PAYMENT]: '/api/email/course/student_prove_payment', [NOTIFICATION_NAME.STUDENT_COURSE_WELCOME]: '/api/email/course/student_welcome', - [NOTIFICATION_NAME.TEACHER_STUDENT_JOINED]: '/api/email/course/teacher_student_joined' + [NOTIFICATION_NAME.TEACHER_STUDENT_JOINED]: '/api/email/course/teacher_student_joined', + [NOTIFICATION_NAME.SUBMISSION_UPDATE]: '/api/email/course/submission_update' }; const getAccessToken = async () => { const { data } = await supabase.auth.getSession(); - return data.session?.access_token || ''; }; @@ -36,7 +37,6 @@ export const triggerSendEmail = async (name: string, body: { [k: string]: any }) console.error('Could not trigger send'); return; } - const response = await fetch(path, { method: 'POST', headers: { @@ -46,11 +46,10 @@ export const triggerSendEmail = async (name: string, body: { [k: string]: any }) body: JSON.stringify(body) }); if (!response.ok) { + console.log(response); throw new Error(await response.text()); } const result = await response.json(); - - console.log(name, result); } catch (error) { console.error(name, error); } diff --git a/src/lib/utils/services/submissions/index.js b/src/lib/utils/services/submissions/index.ts similarity index 86% rename from src/lib/utils/services/submissions/index.js rename to src/lib/utils/services/submissions/index.ts index 8ed3d825..b5c7a502 100644 --- a/src/lib/utils/services/submissions/index.js +++ b/src/lib/utils/services/submissions/index.ts @@ -29,7 +29,7 @@ export function fetchSubmissions(course_id) { ` ) .match({ - course_id, + course_id }); } @@ -46,13 +46,16 @@ export async function fetchSubmission({ courseId, exerciseId, submittedBy }) { .match({ submitted_by: submittedBy, exercise_id: exerciseId, - course_id: courseId, + course_id: courseId }); } -export async function updateSubmission({ id, status_id, total }, otherArgs) { +export async function updateSubmission( + { id, status_id, total }: { id?: number; status_id?: number; total?: number }, + otherArgs?: any +) { const toUpdate = { - status_id, + status_id }; if (typeof total === 'number') { diff --git a/src/routes/api/email/course/student_welcome/+server.js b/src/routes/api/email/course/student_welcome/+server.js index 4c694735..f5a5fd6e 100644 --- a/src/routes/api/email/course/student_welcome/+server.js +++ b/src/routes/api/email/course/student_welcome/+server.js @@ -27,9 +27,9 @@ export async function POST({ request }) { } await sendEmail({ - from: `"${orgName} - ClassroomIO" `, + from: `"${orgName} (via ClassroomIO.com)" `, to, - subject: `[${orgName}] Welcome to Class 🎉`, + subject: `${orgName} - Welcome to Class 🎉`, content: `

Hi there,

Congratulations 🎉, you’ve successfully joined: ${courseName}

diff --git a/src/routes/api/email/course/submission_update/+server.js b/src/routes/api/email/course/submission_update/+server.js new file mode 100644 index 00000000..ae0e5dc2 --- /dev/null +++ b/src/routes/api/email/course/submission_update/+server.js @@ -0,0 +1,38 @@ +import { json } from '@sveltejs/kit'; +import { getSupabase } from '$lib/utils/functions/supabase'; +import { sendEmail } from '$lib/utils/services/notification/send'; + +const supabase = getSupabase(); + +export async function POST({ request }) { + const { to, content, orgName } = await request.json(); + const accessToken = request.headers.get('Authorization') || ''; + + if (!to || !content || !orgName) { + return json({ success: false, message: 'Missing required fields' }, { status: 400 }); + } + + let user; + try { + const { data } = await supabase.auth.getUser(accessToken); + user = data.user; + } catch (error) { + console.error(error); + } + + if (!user) { + return json({ success: false, message: 'Unauthenticated user' }, { status: 401 }); + } + + await sendEmail({ + from: `"${orgName} (via ClassroomIO.com)" `, + to, + subject: `Submission Update`, + content + }); + + return json({ + success: true, + message: 'Email sent' + }); +} diff --git a/src/routes/api/email/course/teacher_welcome/+server.js b/src/routes/api/email/course/teacher_welcome/+server.js index d658c67f..9d0e73a2 100644 --- a/src/routes/api/email/course/teacher_welcome/+server.js +++ b/src/routes/api/email/course/teacher_welcome/+server.js @@ -29,7 +29,7 @@ export async function POST({ request }) { const inviteLink = `${origin}/org/${orgSiteName}/courses`; await sendEmail({ - from: `"[${orgName}] - ClassroomIO" `, + from: `"${orgName} (via ClassroomIO.com)" `, to, subject: `You have been invited to a course in ${orgName}!`, content: ` diff --git a/src/routes/courses/[id]/submissions/+page.svelte b/src/routes/courses/[id]/submissions/+page.svelte index 01c4ff15..112ee5fe 100644 --- a/src/routes/courses/[id]/submissions/+page.svelte +++ b/src/routes/courses/[id]/submissions/+page.svelte @@ -1,4 +1,4 @@ -