WorkLogController interface represents the structure of the worklog controller.

This interface provides methods for managing worklog courses and entries.

interface WorkLogController {
    addNewStudentToWorklog: (
        courseId: number,
        studentData: {
            email: string;
            first_name: string;
            last_name: string;
            studentGroupId: null | number;
            studentnumber: string;
        },
    ) => Promise<
        {
            courseId: number;
            result: ResultSetHeader;
            success: boolean;
            userId: number;
        },
    >;
    assignStudentToGroup: (
        groupId: number,
        userId: number,
    ) => Promise<ResultSetHeader>;
    assignUserToCourse: (
        userId: number,
        courseId: number,
    ) => Promise<ResultSetHeader>;
    checkStudentExistingGroup: (
        userId: number,
        courseId: number,
    ) => Promise<null | { group_id: number; group_name: string }>;
    checkWorklogCodeExists: (code: string) => Promise<boolean>;
    closeWorkLogEntry: (entryId: number) => Promise<ResultSetHeader>;
    createWorkLogCourse: (
        worklog: WorkLogCourseCreate,
    ) => Promise<ResultSetHeader>;
    createWorkLogEntry: (
        entryData: WorkLogEntryCreate,
    ) => Promise<ResultSetHeader>;
    createWorkLogEntryPracticum: (
        entryData: WorkLogEntryCreate,
    ) => Promise<ResultSetHeader>;
    createWorkLogGroup: (
        courseId: number,
        groupName: string,
    ) => Promise<number>;
    deleteWorkLog: (worklogId: number) => Promise<ResultSetHeader>;
    deleteWorkLogEntry: (entryId: number) => Promise<ResultSetHeader>;
    getWorkLogCourseDetails: (
        courseId: number,
    ) => Promise<WorkLogCourseDetails>;
    getWorkLogCoursesByInstructor: (email: string) => Promise<WorkLogCourse[]>;
    getWorkLogEntriesByStudentUser: (
        userId: number,
    ) => Promise<
        {
            entries: (WorkLogEntry & { course: { code: string; name: string } })[];
        },
    >;
    getWorkLogEntriesByUser: (
        userId: number,
    ) => Promise<WorkLogEntriesResponse>;
    getWorkLogGroupDetails: (
        courseId: number,
        groupId: number,
    ) => Promise<WorkLogGroupDetails>;
    getWorkLogGroupsByCourse: (
        courseId: string,
    ) => Promise<{ groups: WorkLogCourseGroup[] }>;
    getWorkLogGroupStudents: (
        groupId: number,
    ) => Promise<{ students: RowDataPacket[] }>;
    getWorkLogStats: (
        userId: number,
        courseId?: number,
    ) => Promise<RowDataPacket[]>;
    getWorkLogStudentsByCourse: (
        courseId: string,
    ) => Promise<{ students: RowDataPacket[] }>;
    updateWorkLogCourse: (
        worklogId: number,
        updates: WorkLogCourseUpdate,
    ) => Promise<ResultSetHeader>;
    updateWorkLogEntry: (
        entryId: number,
        updatedData: any,
    ) => Promise<ResultSetHeader>;
    updateWorkLogEntryStatus: (
        entryId: number,
        status: 0 | 1 | 2 | 3,
    ) => Promise<ResultSetHeader>;
    removeStudentFromGroup(
        groupId: number,
        studentId: number,
    ): Promise<ResultSetHeader>;
}

Properties

addNewStudentToWorklog: (
    courseId: number,
    studentData: {
        email: string;
        first_name: string;
        last_name: string;
        studentGroupId: null | number;
        studentnumber: string;
    },
) => Promise<
    {
        courseId: number;
        result: ResultSetHeader;
        success: boolean;
        userId: number;
    },
>
assignStudentToGroup: (
    groupId: number,
    userId: number,
) => Promise<ResultSetHeader>
assignUserToCourse: (
    userId: number,
    courseId: number,
) => Promise<ResultSetHeader>
checkStudentExistingGroup: (
    userId: number,
    courseId: number,
) => Promise<null | { group_id: number; group_name: string }>
checkWorklogCodeExists: (code: string) => Promise<boolean>

Checks if a worklog code already exists

closeWorkLogEntry: (entryId: number) => Promise<ResultSetHeader>
createWorkLogCourse: (worklog: WorkLogCourseCreate) => Promise<ResultSetHeader>

Creates a new worklog course with the given data

createWorkLogEntry: (entryData: WorkLogEntryCreate) => Promise<ResultSetHeader>

Creates a new worklog entry

createWorkLogEntryPracticum: (
    entryData: WorkLogEntryCreate,
) => Promise<ResultSetHeader>
createWorkLogGroup: (courseId: number, groupName: string) => Promise<number>
deleteWorkLog: (worklogId: number) => Promise<ResultSetHeader>
deleteWorkLogEntry: (entryId: number) => Promise<ResultSetHeader>

Deletes a worklog entry

Type declaration

    • (entryId: number): Promise<ResultSetHeader>
    • Parameters

      • entryId: number

        The ID of the entry to delete

      Returns Promise<ResultSetHeader>

      Promise with delete result

Error if entry not found or deletion fails

getWorkLogCourseDetails: (courseId: number) => Promise<WorkLogCourseDetails>

Gets details of a worklog course by ID

getWorkLogCoursesByInstructor: (email: string) => Promise<WorkLogCourse[]>
getWorkLogEntriesByStudentUser: (
    userId: number,
) => Promise<
    {
        entries: (WorkLogEntry & { course: { code: string; name: string } })[];
    },
>

Gets work log entries with course details for a student user

Type declaration

    • (
          userId: number,
      ): Promise<
          {
              entries: (WorkLogEntry & { course: { code: string; name: string } })[];
          },
      >
    • Parameters

      • userId: number

        The ID of the student user

      Returns Promise<
          {
              entries: (WorkLogEntry & { course: { code: string; name: string } })[];
          },
      >

      Promise with entries and their associated course details

getWorkLogEntriesByUser: (userId: number) => Promise<WorkLogEntriesResponse>

Gets all worklog entries for a user

Type declaration

getWorkLogGroupDetails: (
    courseId: number,
    groupId: number,
) => Promise<WorkLogGroupDetails>
getWorkLogGroupsByCourse: (
    courseId: string,
) => Promise<{ groups: WorkLogCourseGroup[] }>

Gets all worklog groups for a specific course

Type declaration

    • (courseId: string): Promise<{ groups: WorkLogCourseGroup[] }>
    • Parameters

      • courseId: string

        The ID of the course to get groups for

      Returns Promise<{ groups: WorkLogCourseGroup[] }>

      Promise with array of worklog groups

Error if course not found or database error occurs

getWorkLogGroupStudents: (
    groupId: number,
) => Promise<{ students: RowDataPacket[] }>

Gets all students assigned to a specific worklog group

Type declaration

    • (groupId: number): Promise<{ students: RowDataPacket[] }>
    • Parameters

      • groupId: number

        The ID of the worklog group

      Returns Promise<{ students: RowDataPacket[] }>

      Promise with array of student data

Error if group not found

getWorkLogStats: (userId: number, courseId?: number) => Promise<RowDataPacket[]>
getWorkLogStudentsByCourse: (
    courseId: string,
) => Promise<{ students: RowDataPacket[] }>

Gets all students enrolled in a worklog course

Type declaration

    • (courseId: string): Promise<{ students: RowDataPacket[] }>
    • Parameters

      • courseId: string

        The ID of the course

      Returns Promise<{ students: RowDataPacket[] }>

      Promise with student data including email and names

Error if course not found or database error

updateWorkLogCourse: (
    worklogId: number,
    updates: WorkLogCourseUpdate,
) => Promise<ResultSetHeader>

Updates a worklog course

Type declaration

    • (worklogId: number, updates: WorkLogCourseUpdate): Promise<ResultSetHeader>
    • Parameters

      Returns Promise<ResultSetHeader>

updateWorkLogEntry: (
    entryId: number,
    updatedData: any,
) => Promise<ResultSetHeader>

Updates a worklog entry

Type declaration

    • (entryId: number, updatedData: any): Promise<ResultSetHeader>
    • Parameters

      • entryId: number

        The ID of the entry to update

      • updatedData: any

        The updated data

      Returns Promise<ResultSetHeader>

      Promise with update result

Error if entry not found or update fails

updateWorkLogEntryStatus: (
    entryId: number,
    status: 0 | 1 | 2 | 3,
) => Promise<ResultSetHeader>

Updates the status of a worklog entry

Methods

  • Removes a student from a worklog group

    Parameters

    • groupId: number

      The ID of the group

    • studentId: number

      The ID of the student to remove

    Returns Promise<ResultSetHeader>

    Promise with delete result

    Error if student not found in group or removal fails