Merge pull request #190 from SELab-2/feat/teacher-invitation

feat: teacher invitations
This commit is contained in:
Gabriellvl 2025-04-15 22:30:15 +02:00 committed by GitHub
commit ab1bc42619
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
22 changed files with 486 additions and 43 deletions

View file

@ -2,8 +2,8 @@ import { BaseController } from "./base-controller";
import type { ClassDTO } from "@dwengo-1/common/interfaces/class";
import type { StudentsResponse } from "./students";
import type { AssignmentsResponse } from "./assignments";
import type { TeacherInvitationDTO } from "@dwengo-1/common/interfaces/teacher-invitation";
import type { TeachersResponse } from "@/controllers/teachers.ts";
import type { TeacherInvitationsResponse } from "@/controllers/teacher-invitations.ts";
export interface ClassesResponse {
classes: ClassDTO[] | string[];
@ -13,14 +13,6 @@ export interface ClassResponse {
class: ClassDTO;
}
export interface TeacherInvitationsResponse {
invites: TeacherInvitationDTO[];
}
export interface TeacherInvitationResponse {
invite: TeacherInvitationDTO;
}
export class ClassController extends BaseController {
constructor() {
super("class");

View file

@ -0,0 +1,36 @@
import { BaseController } from "@/controllers/base-controller.ts";
import type { TeacherInvitationData, TeacherInvitationDTO } from "@dwengo-1/common/interfaces/teacher-invitation";
export interface TeacherInvitationsResponse {
invitations: TeacherInvitationDTO[];
}
export interface TeacherInvitationResponse {
invitation: TeacherInvitationDTO;
}
export class TeacherInvitationController extends BaseController {
constructor() {
super("teachers/invitations");
}
async getAll(username: string, sent: boolean): Promise<TeacherInvitationsResponse> {
return this.get<TeacherInvitationsResponse>(`/${username}`, { sent });
}
async getBy(data: TeacherInvitationData): Promise<TeacherInvitationResponse> {
return this.get<TeacherInvitationResponse>(`/${data.sender}/${data.receiver}/${data.class}`);
}
async create(data: TeacherInvitationData): Promise<TeacherInvitationResponse> {
return this.post<TeacherInvitationResponse>("/", data);
}
async remove(data: TeacherInvitationData): Promise<TeacherInvitationResponse> {
return this.delete<TeacherInvitationResponse>(`/${data.sender}/${data.receiver}/${data.class}`);
}
async respond(data: TeacherInvitationData): Promise<TeacherInvitationResponse> {
return this.put<TeacherInvitationResponse>("/", data);
}
}