From eb8ac9c3bb8f5d6894a1069cdfb269e3de127960 Mon Sep 17 00:00:00 2001 From: Adriaan Jacquet Date: Sun, 30 Mar 2025 17:38:32 +0200 Subject: [PATCH 01/13] feat: frontend klas controller aangemaakt --- frontend/src/controllers/classes.ts | 33 +++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 frontend/src/controllers/classes.ts diff --git a/frontend/src/controllers/classes.ts b/frontend/src/controllers/classes.ts new file mode 100644 index 00000000..ed99dc0b --- /dev/null +++ b/frontend/src/controllers/classes.ts @@ -0,0 +1,33 @@ +import { BaseController } from "./base-controller"; + + +export class ClassController extends BaseController { + constructor() { + super("class"); + } + + getAll(full = true) { + return this.get<{ classes: any[] }>(`/`, { full }); + } + + getById(id: string) { + return this.get<{ class: any }>(`/${id}`); + } + + createClass(data: any) { + return this.post<{ class: any }>(`/`, data); + } + + deleteClass(id: string) { + return this.delete<{ class: any }>(`/${id}`); + } + + + getStudents(id: string, full = true) { + return this.get<{ students: any[] }>(`/${id}/students`, { full }); + } + + getTeacherInvitations(id: string, full = true) { + return this.get<{ invitations: any[] }>(`/${id}/teacher-invitations`, { full }); + } +} \ No newline at end of file From 8915fdb93b58a884d58cdc37bf29a73415f33e3f Mon Sep 17 00:00:00 2001 From: Adriaan Jacquet Date: Sun, 30 Mar 2025 17:51:44 +0200 Subject: [PATCH 02/13] feat: assignment endpoint toegevoegd aan controller frontend voor klas --- frontend/src/controllers/classes.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/frontend/src/controllers/classes.ts b/frontend/src/controllers/classes.ts index ed99dc0b..05fc3740 100644 --- a/frontend/src/controllers/classes.ts +++ b/frontend/src/controllers/classes.ts @@ -30,4 +30,8 @@ export class ClassController extends BaseController { getTeacherInvitations(id: string, full = true) { return this.get<{ invitations: any[] }>(`/${id}/teacher-invitations`, { full }); } + + getAssignments(id: string, full = true) { + return this.get<{ assignments: any[] }>(`/${id}/assignments`, { full }); + } } \ No newline at end of file From dbc3b2b0b64fb12fae78e7101024959bbaddebcd Mon Sep 17 00:00:00 2001 From: Adriaan Jacquet Date: Sun, 30 Mar 2025 18:24:30 +0200 Subject: [PATCH 03/13] feat: frontend controller voor assignment geimplementeerd --- frontend/src/controllers/assignments.ts | 36 +++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 frontend/src/controllers/assignments.ts diff --git a/frontend/src/controllers/assignments.ts b/frontend/src/controllers/assignments.ts new file mode 100644 index 00000000..5b78f23c --- /dev/null +++ b/frontend/src/controllers/assignments.ts @@ -0,0 +1,36 @@ +import { BaseController } from "./base-controller"; + +export class AssignmentController extends BaseController { + constructor(classid: string) { + super(`class/${classid}/assignments`); + } + + getAll(full = true) { + return this.get<{ assignments: any[] }>(`/`, { full }); + } + + getByNumber(num: number) { + return this.get<{ assignment: any }>(`/${num}`); + } + + createAssignment(data: any) { + return this.post<{ assignment: any }>(`/`, data); + } + + deleteAssignment(num: number) { + return this.delete<{ assignment: any }>(`/${num}`); + } + + + getSubmissions(assignmentNumber: number, full = true) { + return this.get<{ submissions: any[] }>(`/${assignmentNumber}/submissions`, { full }); + } + + getQuestions(assignmentNumber: number, full = true) { + return this.get<{ questions: any[]}>(`/${assignmentNumber}/questions`, { full }); + } + + getGroups(assignmentNumber: number, full = true) { + return this.get<{ groups: any[]}>(`/${assignmentNumber}/groups`, { full }); + } +} \ No newline at end of file From 4b82455eb9b932f02b330478104a109e7ed80366 Mon Sep 17 00:00:00 2001 From: Adriaan Jacquet Date: Sun, 30 Mar 2025 18:28:01 +0200 Subject: [PATCH 04/13] feat: frontend group controller geimplementeerd --- backend/src/routes/groups.ts | 2 +- frontend/src/controllers/groups.ts | 32 ++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 frontend/src/controllers/groups.ts diff --git a/backend/src/routes/groups.ts b/backend/src/routes/groups.ts index 0c9692b0..93295ea1 100644 --- a/backend/src/routes/groups.ts +++ b/backend/src/routes/groups.ts @@ -11,7 +11,7 @@ router.post('/', createGroupHandler); // Information about a group (members, ... [TODO DOC]) router.get('/:groupid', getGroupHandler); -router.get('/:groupid', getGroupSubmissionsHandler); +router.get('/:groupid/submissions', getGroupSubmissionsHandler); // The list of questions a group has made router.get('/:id/questions', (req, res) => { diff --git a/frontend/src/controllers/groups.ts b/frontend/src/controllers/groups.ts new file mode 100644 index 00000000..0ec13e86 --- /dev/null +++ b/frontend/src/controllers/groups.ts @@ -0,0 +1,32 @@ +import { BaseController } from "./base-controller"; + +export class GroupController extends BaseController { + constructor(classid: string, assignmentNumber: number) { + super(`class/${classid}/assignments/${assignmentNumber}/groups`); + } + + getAll(full = true) { + return this.get<{ groups: any[] }>(`/`, { full }); + } + + getByNumber(num: number) { + return this.get<{ group: any }>(`/${num}`); + } + + createGroup(data: any) { + return this.post<{ group: any }>(`/`, data); + } + + deleteClass(num: number) { + return this.delete<{ group: any }>(`/${num}`); + } + + + getSubmissions(groupNumber: number, full = true) { + return this.get<{ groups: any[] }>(`/${groupNumber}/submissions`, { full }); + } + + getQuestions(groupNumber: number, full = true) { + return this.get<{ questions: any[] }>(`/${groupNumber}/questions`, { full }); + } +} \ No newline at end of file From 4dfe3de08e0171cafadfd1f86fb35c7655cf105a Mon Sep 17 00:00:00 2001 From: Adriaan Jacquet Date: Tue, 1 Apr 2025 10:35:27 +0200 Subject: [PATCH 05/13] feat: frontend controller voor submission geimplementeerd --- frontend/src/controllers/submission.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 frontend/src/controllers/submission.ts diff --git a/frontend/src/controllers/submission.ts b/frontend/src/controllers/submission.ts new file mode 100644 index 00000000..e69de29b From e1ffedc079631dd2e707c1367d0c5cdd352760db Mon Sep 17 00:00:00 2001 From: Adriaan Jacquet Date: Tue, 1 Apr 2025 10:36:18 +0200 Subject: [PATCH 06/13] feat: frontend controller voor submission geimplementeerd --- frontend/src/controllers/submission.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/frontend/src/controllers/submission.ts b/frontend/src/controllers/submission.ts index e69de29b..04f83471 100644 --- a/frontend/src/controllers/submission.ts +++ b/frontend/src/controllers/submission.ts @@ -0,0 +1,23 @@ +import { BaseController } from "./base-controller"; + +export class SubmissionController extends BaseController { + constructor(classid: string, assignmentNumber: number, groupNumber: number) { + super(`class/${classid}/assignments/${assignmentNumber}/groups/${groupNumber}`); + } + + getAll(full = true) { + return this.get(`/`, { full }); + } + + getByNumber(submissionNumber: number) { + return this.get(`/${submissionNumber}`); + } + + createSubmission(data: any) { + return this.post(`/`, data); + } + + deleteSubmission(submissionNumber: number) { + return this.delete(`/${submissionNumber}`); + } +} \ No newline at end of file From 623ad5cd5cf0e7783d3f31d5ab6d32c3c4488cca Mon Sep 17 00:00:00 2001 From: Lint Action Date: Tue, 1 Apr 2025 14:05:05 +0000 Subject: [PATCH 07/13] style: fix linting issues met Prettier --- frontend/src/controllers/assignments.ts | 7 +++---- frontend/src/controllers/classes.ts | 4 +--- frontend/src/controllers/groups.ts | 3 +-- frontend/src/controllers/submission.ts | 2 +- 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/frontend/src/controllers/assignments.ts b/frontend/src/controllers/assignments.ts index 5b78f23c..7b217b0e 100644 --- a/frontend/src/controllers/assignments.ts +++ b/frontend/src/controllers/assignments.ts @@ -21,16 +21,15 @@ export class AssignmentController extends BaseController { return this.delete<{ assignment: any }>(`/${num}`); } - getSubmissions(assignmentNumber: number, full = true) { return this.get<{ submissions: any[] }>(`/${assignmentNumber}/submissions`, { full }); } getQuestions(assignmentNumber: number, full = true) { - return this.get<{ questions: any[]}>(`/${assignmentNumber}/questions`, { full }); + return this.get<{ questions: any[] }>(`/${assignmentNumber}/questions`, { full }); } getGroups(assignmentNumber: number, full = true) { - return this.get<{ groups: any[]}>(`/${assignmentNumber}/groups`, { full }); + return this.get<{ groups: any[] }>(`/${assignmentNumber}/groups`, { full }); } -} \ No newline at end of file +} diff --git a/frontend/src/controllers/classes.ts b/frontend/src/controllers/classes.ts index 05fc3740..0598aba9 100644 --- a/frontend/src/controllers/classes.ts +++ b/frontend/src/controllers/classes.ts @@ -1,6 +1,5 @@ import { BaseController } from "./base-controller"; - export class ClassController extends BaseController { constructor() { super("class"); @@ -22,7 +21,6 @@ export class ClassController extends BaseController { return this.delete<{ class: any }>(`/${id}`); } - getStudents(id: string, full = true) { return this.get<{ students: any[] }>(`/${id}/students`, { full }); } @@ -34,4 +32,4 @@ export class ClassController extends BaseController { getAssignments(id: string, full = true) { return this.get<{ assignments: any[] }>(`/${id}/assignments`, { full }); } -} \ No newline at end of file +} diff --git a/frontend/src/controllers/groups.ts b/frontend/src/controllers/groups.ts index 0ec13e86..2dac5346 100644 --- a/frontend/src/controllers/groups.ts +++ b/frontend/src/controllers/groups.ts @@ -21,7 +21,6 @@ export class GroupController extends BaseController { return this.delete<{ group: any }>(`/${num}`); } - getSubmissions(groupNumber: number, full = true) { return this.get<{ groups: any[] }>(`/${groupNumber}/submissions`, { full }); } @@ -29,4 +28,4 @@ export class GroupController extends BaseController { getQuestions(groupNumber: number, full = true) { return this.get<{ questions: any[] }>(`/${groupNumber}/questions`, { full }); } -} \ No newline at end of file +} diff --git a/frontend/src/controllers/submission.ts b/frontend/src/controllers/submission.ts index 04f83471..31ad6606 100644 --- a/frontend/src/controllers/submission.ts +++ b/frontend/src/controllers/submission.ts @@ -20,4 +20,4 @@ export class SubmissionController extends BaseController { deleteSubmission(submissionNumber: number) { return this.delete(`/${submissionNumber}`); } -} \ No newline at end of file +} From d5ce82c657b6b413c0cd7f42461e8ddaf566c1aa Mon Sep 17 00:00:00 2001 From: Lint Action Date: Thu, 3 Apr 2025 09:40:51 +0000 Subject: [PATCH 08/13] style: fix linting issues met ESLint --- frontend/src/controllers/assignments.ts | 14 +++++++------- frontend/src/controllers/classes.ts | 14 +++++++------- frontend/src/controllers/groups.ts | 12 ++++++------ frontend/src/controllers/submission.ts | 8 ++++---- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/frontend/src/controllers/assignments.ts b/frontend/src/controllers/assignments.ts index c9714177..41ceba9a 100644 --- a/frontend/src/controllers/assignments.ts +++ b/frontend/src/controllers/assignments.ts @@ -10,31 +10,31 @@ export class AssignmentController extends BaseController { super(`class/${classid}/assignments`); } - getAll(full = true) { + async getAll(full = true) { return this.get<{ assignments: any[] }>(`/`, { full }); } - getByNumber(num: number) { + async getByNumber(num: number) { return this.get<{ assignment: any }>(`/${num}`); } - createAssignment(data: any) { + async createAssignment(data: any) { return this.post<{ assignment: any }>(`/`, data); } - deleteAssignment(num: number) { + async deleteAssignment(num: number) { return this.delete<{ assignment: any }>(`/${num}`); } - getSubmissions(assignmentNumber: number, full = true) { + async getSubmissions(assignmentNumber: number, full = true) { return this.get<{ submissions: any[] }>(`/${assignmentNumber}/submissions`, { full }); } - getQuestions(assignmentNumber: number, full = true) { + async getQuestions(assignmentNumber: number, full = true) { return this.get<{ questions: any[] }>(`/${assignmentNumber}/questions`, { full }); } - getGroups(assignmentNumber: number, full = true) { + async getGroups(assignmentNumber: number, full = true) { return this.get<{ groups: any[] }>(`/${assignmentNumber}/groups`, { full }); } } \ No newline at end of file diff --git a/frontend/src/controllers/classes.ts b/frontend/src/controllers/classes.ts index e8421672..773cab73 100644 --- a/frontend/src/controllers/classes.ts +++ b/frontend/src/controllers/classes.ts @@ -10,31 +10,31 @@ export class ClassController extends BaseController { super("class"); } - getAll(full = true) { + async getAll(full = true) { return this.get<{ classes: any[] }>(`/`, { full }); } - getById(id: string) { + async getById(id: string) { return this.get<{ class: any }>(`/${id}`); } - createClass(data: any) { + async createClass(data: any) { return this.post<{ class: any }>(`/`, data); } - deleteClass(id: string) { + async deleteClass(id: string) { return this.delete<{ class: any }>(`/${id}`); } - getStudents(id: string, full = true) { + async getStudents(id: string, full = true) { return this.get<{ students: any[] }>(`/${id}/students`, { full }); } - getTeacherInvitations(id: string, full = true) { + async getTeacherInvitations(id: string, full = true) { return this.get<{ invitations: any[] }>(`/${id}/teacher-invitations`, { full }); } - getAssignments(id: string, full = true) { + async getAssignments(id: string, full = true) { return this.get<{ assignments: any[] }>(`/${id}/assignments`, { full }); } } \ No newline at end of file diff --git a/frontend/src/controllers/groups.ts b/frontend/src/controllers/groups.ts index c6db4a9e..806dac4a 100644 --- a/frontend/src/controllers/groups.ts +++ b/frontend/src/controllers/groups.ts @@ -10,27 +10,27 @@ export class GroupController extends BaseController { super(`class/${classid}/assignments/${assignmentNumber}/groups`); } - getAll(full = true) { + async getAll(full = true) { return this.get<{ groups: any[] }>(`/`, { full }); } - getByNumber(num: number) { + async getByNumber(num: number) { return this.get<{ group: any }>(`/${num}`); } - createGroup(data: any) { + async createGroup(data: any) { return this.post<{ group: any }>(`/`, data); } - deleteClass(num: number) { + async deleteClass(num: number) { return this.delete<{ group: any }>(`/${num}`); } - getSubmissions(groupNumber: number, full = true) { + async getSubmissions(groupNumber: number, full = true) { return this.get<{ groups: any[] }>(`/${groupNumber}/submissions`, { full }); } - getQuestions(groupNumber: number, full = true) { + async getQuestions(groupNumber: number, full = true) { return this.get<{ questions: any[] }>(`/${groupNumber}/questions`, { full }); } } diff --git a/frontend/src/controllers/submission.ts b/frontend/src/controllers/submission.ts index 31ad6606..46b925c8 100644 --- a/frontend/src/controllers/submission.ts +++ b/frontend/src/controllers/submission.ts @@ -5,19 +5,19 @@ export class SubmissionController extends BaseController { super(`class/${classid}/assignments/${assignmentNumber}/groups/${groupNumber}`); } - getAll(full = true) { + async getAll(full = true) { return this.get(`/`, { full }); } - getByNumber(submissionNumber: number) { + async getByNumber(submissionNumber: number) { return this.get(`/${submissionNumber}`); } - createSubmission(data: any) { + async createSubmission(data: any) { return this.post(`/`, data); } - deleteSubmission(submissionNumber: number) { + async deleteSubmission(submissionNumber: number) { return this.delete(`/${submissionNumber}`); } } From 2a9668c585820dfdd561bff0c083497524143fea Mon Sep 17 00:00:00 2001 From: Lint Action Date: Thu, 3 Apr 2025 09:40:56 +0000 Subject: [PATCH 09/13] style: fix linting issues met Prettier --- frontend/src/controllers/assignments.ts | 2 +- frontend/src/controllers/classes.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/controllers/assignments.ts b/frontend/src/controllers/assignments.ts index 41ceba9a..8e3d6cd6 100644 --- a/frontend/src/controllers/assignments.ts +++ b/frontend/src/controllers/assignments.ts @@ -37,4 +37,4 @@ export class AssignmentController extends BaseController { async getGroups(assignmentNumber: number, full = true) { return this.get<{ groups: any[] }>(`/${assignmentNumber}/groups`, { full }); } -} \ No newline at end of file +} diff --git a/frontend/src/controllers/classes.ts b/frontend/src/controllers/classes.ts index 773cab73..eb605333 100644 --- a/frontend/src/controllers/classes.ts +++ b/frontend/src/controllers/classes.ts @@ -37,4 +37,4 @@ export class ClassController extends BaseController { async getAssignments(id: string, full = true) { return this.get<{ assignments: any[] }>(`/${id}/assignments`, { full }); } -} \ No newline at end of file +} From c85c26a8783b026b6c3fa509c40bc639d6b2330f Mon Sep 17 00:00:00 2001 From: Adriaan Jacquet Date: Thu, 3 Apr 2025 11:43:31 +0200 Subject: [PATCH 10/13] feat: types toegevoegd in frontend controller assignment --- frontend/src/controllers/assignments.ts | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/frontend/src/controllers/assignments.ts b/frontend/src/controllers/assignments.ts index c9714177..1d50b2c4 100644 --- a/frontend/src/controllers/assignments.ts +++ b/frontend/src/controllers/assignments.ts @@ -1,9 +1,16 @@ import { BaseController } from "./base-controller"; import type { AssignmentDTO } from "@dwengo-1/interfaces/assignment"; +import type { SubmissionsResponse } from "./submissions"; +import type { QuestionsResponse } from "./questions"; +import type { GroupsResponse } from "./groups"; export interface AssignmentsResponse { assignments: AssignmentDTO[]; -} // TODO ID +} + +export interface AssignmentResponse { + assignments: AssignmentDTO; +} export class AssignmentController extends BaseController { constructor(classid: string) { @@ -11,30 +18,30 @@ export class AssignmentController extends BaseController { } getAll(full = true) { - return this.get<{ assignments: any[] }>(`/`, { full }); + return this.get(`/`, { full }); } getByNumber(num: number) { - return this.get<{ assignment: any }>(`/${num}`); + return this.get(`/${num}`); } createAssignment(data: any) { - return this.post<{ assignment: any }>(`/`, data); + return this.post(`/`, data); } deleteAssignment(num: number) { - return this.delete<{ assignment: any }>(`/${num}`); + return this.delete(`/${num}`); } getSubmissions(assignmentNumber: number, full = true) { - return this.get<{ submissions: any[] }>(`/${assignmentNumber}/submissions`, { full }); + return this.get(`/${assignmentNumber}/submissions`, { full }); } getQuestions(assignmentNumber: number, full = true) { - return this.get<{ questions: any[] }>(`/${assignmentNumber}/questions`, { full }); + return this.get(`/${assignmentNumber}/questions`, { full }); } getGroups(assignmentNumber: number, full = true) { - return this.get<{ groups: any[] }>(`/${assignmentNumber}/groups`, { full }); + return this.get(`/${assignmentNumber}/groups`, { full }); } } \ No newline at end of file From 6664209e8c2bc45b83260c5355e2d19e80d922a5 Mon Sep 17 00:00:00 2001 From: Lint Action Date: Thu, 3 Apr 2025 09:46:47 +0000 Subject: [PATCH 11/13] style: fix linting issues met ESLint --- frontend/src/controllers/assignments.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/frontend/src/controllers/assignments.ts b/frontend/src/controllers/assignments.ts index 65c26bbf..f6b06966 100644 --- a/frontend/src/controllers/assignments.ts +++ b/frontend/src/controllers/assignments.ts @@ -17,31 +17,31 @@ export class AssignmentController extends BaseController { super(`class/${classid}/assignments`); } - getAll(full = true) { + async getAll(full = true) { return this.get(`/`, { full }); } - getByNumber(num: number) { + async getByNumber(num: number) { return this.get(`/${num}`); } - createAssignment(data: any) { + async createAssignment(data: any) { return this.post(`/`, data); } - deleteAssignment(num: number) { + async deleteAssignment(num: number) { return this.delete(`/${num}`); } - getSubmissions(assignmentNumber: number, full = true) { + async getSubmissions(assignmentNumber: number, full = true) { return this.get(`/${assignmentNumber}/submissions`, { full }); } - getQuestions(assignmentNumber: number, full = true) { + async getQuestions(assignmentNumber: number, full = true) { return this.get(`/${assignmentNumber}/questions`, { full }); } - getGroups(assignmentNumber: number, full = true) { + async getGroups(assignmentNumber: number, full = true) { return this.get(`/${assignmentNumber}/groups`, { full }); } } From beb3bacfa752c8dab02056eebe625bc9ed474901 Mon Sep 17 00:00:00 2001 From: Adriaan Jacquet Date: Thu, 3 Apr 2025 12:40:32 +0200 Subject: [PATCH 12/13] fix: response types en import errors gefixt --- frontend/src/controllers/assignments.ts | 6 ++--- frontend/src/controllers/classes.ts | 23 +++++++++++++------- frontend/src/controllers/groups.ts | 24 ++++++++++++-------- frontend/src/controllers/questions.ts | 2 +- frontend/src/controllers/students.ts | 4 ++-- frontend/src/controllers/submission.ts | 23 -------------------- frontend/src/controllers/submissions.ts | 29 ++++++++++++++++++++++++- frontend/src/controllers/teachers.ts | 2 +- frontend/src/controllers/themes.ts | 2 +- 9 files changed, 66 insertions(+), 49 deletions(-) delete mode 100644 frontend/src/controllers/submission.ts diff --git a/frontend/src/controllers/assignments.ts b/frontend/src/controllers/assignments.ts index 65c26bbf..6b069666 100644 --- a/frontend/src/controllers/assignments.ts +++ b/frontend/src/controllers/assignments.ts @@ -1,15 +1,15 @@ import { BaseController } from "./base-controller"; -import type { AssignmentDTO } from "@dwengo-1/interfaces/assignment"; +import type { AssignmentDTO } from "@dwengo-1/common/interfaces/assignment"; import type { SubmissionsResponse } from "./submissions"; import type { QuestionsResponse } from "./questions"; import type { GroupsResponse } from "./groups"; export interface AssignmentsResponse { - assignments: AssignmentDTO[]; + assignments: AssignmentDTO[] | string[]; } export interface AssignmentResponse { - assignments: AssignmentDTO; + assignment: AssignmentDTO; } export class AssignmentController extends BaseController { diff --git a/frontend/src/controllers/classes.ts b/frontend/src/controllers/classes.ts index eb605333..374f0f6e 100644 --- a/frontend/src/controllers/classes.ts +++ b/frontend/src/controllers/classes.ts @@ -1,40 +1,47 @@ import { BaseController } from "./base-controller"; -import type { ClassDTO } from "@dwengo-1/interfaces/class"; +import type { ClassDTO } from "@dwengo-1/common/interfaces/class"; +import type { StudentsResponse } from "./students"; +import type { AssignmentsResponse } from "./assignments"; export interface ClassesResponse { classes: ClassDTO[] | string[]; } +export interface ClassResponse { + class: ClassDTO; +} + export class ClassController extends BaseController { constructor() { super("class"); } async getAll(full = true) { - return this.get<{ classes: any[] }>(`/`, { full }); + return this.get(`/`, { full }); } async getById(id: string) { - return this.get<{ class: any }>(`/${id}`); + return this.get(`/${id}`); } async createClass(data: any) { - return this.post<{ class: any }>(`/`, data); + return this.post(`/`, data); } async deleteClass(id: string) { - return this.delete<{ class: any }>(`/${id}`); + return this.delete(`/${id}`); } async getStudents(id: string, full = true) { - return this.get<{ students: any[] }>(`/${id}/students`, { full }); + return this.get(`/${id}/students`, { full }); } + // TODO async getTeacherInvitations(id: string, full = true) { - return this.get<{ invitations: any[] }>(`/${id}/teacher-invitations`, { full }); + return this.get(`/${id}/teacher-invitations`, { full }); } async getAssignments(id: string, full = true) { - return this.get<{ assignments: any[] }>(`/${id}/assignments`, { full }); + return this.get(`/${id}/assignments`, { full }); } } diff --git a/frontend/src/controllers/groups.ts b/frontend/src/controllers/groups.ts index 806dac4a..e82e5607 100644 --- a/frontend/src/controllers/groups.ts +++ b/frontend/src/controllers/groups.ts @@ -1,9 +1,15 @@ import { BaseController } from "./base-controller"; -import type { GroupDTO } from "@dwengo-1/interfaces/group"; +import type { GroupDTO } from "@dwengo-1/common/interfaces/group"; +import type { SubmissionsResponse } from "./submissions"; +import type { QuestionsResponse } from "./questions"; export interface GroupsResponse { groups: GroupDTO[]; -} // | TODO id +} + +export interface GroupResponse { + group: GroupDTO; +} export class GroupController extends BaseController { constructor(classid: string, assignmentNumber: number) { @@ -11,26 +17,26 @@ export class GroupController extends BaseController { } async getAll(full = true) { - return this.get<{ groups: any[] }>(`/`, { full }); + return this.get(`/`, { full }); } async getByNumber(num: number) { - return this.get<{ group: any }>(`/${num}`); + return this.get(`/${num}`); } async createGroup(data: any) { - return this.post<{ group: any }>(`/`, data); + return this.post(`/`, data); } - async deleteClass(num: number) { - return this.delete<{ group: any }>(`/${num}`); + async deleteGroup(num: number) { + return this.delete(`/${num}`); } async getSubmissions(groupNumber: number, full = true) { - return this.get<{ groups: any[] }>(`/${groupNumber}/submissions`, { full }); + return this.get(`/${groupNumber}/submissions`, { full }); } async getQuestions(groupNumber: number, full = true) { - return this.get<{ questions: any[] }>(`/${groupNumber}/questions`, { full }); + return this.get(`/${groupNumber}/questions`, { full }); } } diff --git a/frontend/src/controllers/questions.ts b/frontend/src/controllers/questions.ts index 9b0182de..16abd38b 100644 --- a/frontend/src/controllers/questions.ts +++ b/frontend/src/controllers/questions.ts @@ -1,4 +1,4 @@ -import type { QuestionDTO, QuestionId } from "@dwengo-1/interfaces/question"; +import type { QuestionDTO, QuestionId } from "@dwengo-1/common/interfaces/question"; export interface QuestionsResponse { questions: QuestionDTO[] | QuestionId[]; diff --git a/frontend/src/controllers/students.ts b/frontend/src/controllers/students.ts index b36f1d5a..f74f02da 100644 --- a/frontend/src/controllers/students.ts +++ b/frontend/src/controllers/students.ts @@ -4,8 +4,8 @@ import type { AssignmentsResponse } from "@/controllers/assignments.ts"; import type { GroupsResponse } from "@/controllers/groups.ts"; import type { SubmissionsResponse } from "@/controllers/submissions.ts"; import type { QuestionsResponse } from "@/controllers/questions.ts"; -import type { StudentDTO } from "@dwengo-1/interfaces/student"; -import type { ClassJoinRequestDTO } from "@dwengo-1/interfaces/class-join-request"; +import type { StudentDTO } from "@dwengo-1/common/interfaces/student"; +import type { ClassJoinRequestDTO } from "@dwengo-1/common/interfaces/class-join-request"; export interface StudentsResponse { students: StudentDTO[] | string[]; diff --git a/frontend/src/controllers/submission.ts b/frontend/src/controllers/submission.ts deleted file mode 100644 index 46b925c8..00000000 --- a/frontend/src/controllers/submission.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { BaseController } from "./base-controller"; - -export class SubmissionController extends BaseController { - constructor(classid: string, assignmentNumber: number, groupNumber: number) { - super(`class/${classid}/assignments/${assignmentNumber}/groups/${groupNumber}`); - } - - async getAll(full = true) { - return this.get(`/`, { full }); - } - - async getByNumber(submissionNumber: number) { - return this.get(`/${submissionNumber}`); - } - - async createSubmission(data: any) { - return this.post(`/`, data); - } - - async deleteSubmission(submissionNumber: number) { - return this.delete(`/${submissionNumber}`); - } -} diff --git a/frontend/src/controllers/submissions.ts b/frontend/src/controllers/submissions.ts index 99b6ba8d..80007891 100644 --- a/frontend/src/controllers/submissions.ts +++ b/frontend/src/controllers/submissions.ts @@ -1,5 +1,32 @@ -import { type SubmissionDTO, SubmissionDTOId } from "@dwengo-1/interfaces/submission"; +import { BaseController } from "./base-controller"; +import type { SubmissionDTO, SubmissionDTOId } from "@dwengo-1/common/interfaces/submission"; export interface SubmissionsResponse { submissions: SubmissionDTO[] | SubmissionDTOId[]; } + +export interface SubmissionResponse { + submission: SubmissionDTO; +}; + +export class SubmissionController extends BaseController { + constructor(classid: string, assignmentNumber: number, groupNumber: number) { + super(`class/${classid}/assignments/${assignmentNumber}/groups/${groupNumber}`); + } + + async getAll(full = true) { + return this.get(`/`, { full }); + } + + async getByNumber(submissionNumber: number) { + return this.get(`/${submissionNumber}`); + } + + async createSubmission(data: any) { + return this.post(`/`, data); + } + + async deleteSubmission(submissionNumber: number) { + return this.delete(`/${submissionNumber}`); + } +} \ No newline at end of file diff --git a/frontend/src/controllers/teachers.ts b/frontend/src/controllers/teachers.ts index e0d38a6c..973e2b02 100644 --- a/frontend/src/controllers/teachers.ts +++ b/frontend/src/controllers/teachers.ts @@ -2,7 +2,7 @@ import { BaseController } from "@/controllers/base-controller.ts"; import type { JoinRequestResponse, JoinRequestsResponse, StudentsResponse } from "@/controllers/students.ts"; import type { QuestionsResponse } from "@/controllers/questions.ts"; import type { ClassesResponse } from "@/controllers/classes.ts"; -import type { TeacherDTO } from "@dwengo-1/interfaces/teacher"; +import type { TeacherDTO } from "@dwengo-1/common/interfaces/teacher"; export interface TeachersResponse { teachers: TeacherDTO[] | string[]; diff --git a/frontend/src/controllers/themes.ts b/frontend/src/controllers/themes.ts index bb76249d..ca173373 100644 --- a/frontend/src/controllers/themes.ts +++ b/frontend/src/controllers/themes.ts @@ -1,5 +1,5 @@ import { BaseController } from "@/controllers/base-controller.ts"; -import type { Theme } from "@dwengo-1/interfaces/theme"; +import type { Theme } from "@dwengo-1/common/interfaces/theme"; export class ThemeController extends BaseController { constructor() { From f87c943530eb5cfea7362e353f9f03778f944e84 Mon Sep 17 00:00:00 2001 From: Lint Action Date: Thu, 3 Apr 2025 10:41:32 +0000 Subject: [PATCH 13/13] style: fix linting issues met Prettier --- frontend/src/controllers/submissions.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/controllers/submissions.ts b/frontend/src/controllers/submissions.ts index 80007891..72621fcf 100644 --- a/frontend/src/controllers/submissions.ts +++ b/frontend/src/controllers/submissions.ts @@ -7,7 +7,7 @@ export interface SubmissionsResponse { export interface SubmissionResponse { submission: SubmissionDTO; -}; +} export class SubmissionController extends BaseController { constructor(classid: string, assignmentNumber: number, groupNumber: number) { @@ -29,4 +29,4 @@ export class SubmissionController extends BaseController { async deleteSubmission(submissionNumber: number) { return this.delete(`/${submissionNumber}`); } -} \ No newline at end of file +}