@@ -1,4 +1,7 @@ | |||
import { IUser } from './user'; | |||
import { IQuiz } from './quiz'; | |||
import { ITest } from './test'; | |||
import { IForum } from './forum'; | |||
export type ICourse = { | |||
id: string | number, | |||
@@ -6,9 +9,24 @@ export type ICourse = { | |||
name: string, | |||
description?: string, | |||
code: string, | |||
teacher : IUser, | |||
chapterList: Array<IChapter>; | |||
enrolledList: Array<IUser>; | |||
teacher: IUser, | |||
chapterList: Array<IChapter>, | |||
enrolledList: Array<IUser>, | |||
timeTable: Array<ISchedule>, | |||
testList: Array<ITest>, | |||
forum: IForum | |||
}; | |||
export type ISchedule = { | |||
id: string | number, | |||
dateTime: Date, | |||
attendanceList: Array<IAttendance> | |||
}; | |||
export type IAttendance = { | |||
student: IUser, | |||
status: 'PRESENT' | 'ABSENT' | 'LATE', | |||
additionalNote: string | |||
}; | |||
export type IChapter = { | |||
@@ -23,25 +41,26 @@ export type ITopic = { | |||
id: string | number, | |||
name: string, | |||
description?: string, | |||
media: IVideo | IAudio | IText, | |||
type: 'VIDEO' | 'AUDIO' | 'RICH_TEXT' | 'QUIZ' | |||
media: IVideo | IAudio | IRichText | IQuiz, | |||
attachments: Array<IAttachment>, | |||
}; | |||
type IVideo = { | |||
export type IVideo = { | |||
id: string | number, | |||
url: string, | |||
transcript: string, | |||
notes: Array<INotes> | |||
}; | |||
type IAudio = { | |||
export type IAudio = { | |||
id: string | number, | |||
url: string, | |||
transcript: string, | |||
notes: Array<INotes> | |||
}; | |||
type INotes = { | |||
export type INotes = { | |||
id: string | number, | |||
seekTime: string, | |||
type: 'PUBLIC' | 'PRIVATE', | |||
@@ -49,19 +68,19 @@ type INotes = { | |||
createdBy: IUser | |||
}; | |||
type IText = { | |||
export type IRichText = { | |||
id: string | number, | |||
transcript: string | |||
}; | |||
type IAttachment = { | |||
export type IAttachment = { | |||
id: string | number, | |||
name: string, | |||
description?: string, | |||
url: string | |||
}; | |||
type IResource = { | |||
export type IResource = { | |||
id: string, | |||
name: string, | |||
description?: string, | |||
@@ -0,0 +1,45 @@ | |||
import { IUser } from './user'; | |||
export type IForum = { | |||
id: string | number, | |||
name: string, | |||
description?: string, | |||
moderatorList: Array<IUser>, | |||
postList: Array<IPost> | |||
}; | |||
export type IPost = { | |||
id: string | number, | |||
heading: string, | |||
description: string, | |||
isBookmarked: boolean, | |||
hashTags: Array<string>, | |||
taggedFriends: Array<IUser>, | |||
externalLink: string, | |||
files: Array<Blob>, | |||
author: IUser, | |||
dateTime: Date, | |||
likedUsers: Array<IUser>, | |||
dislikedUsers: Array<IUser>, | |||
reports: Array<IReport> | |||
commentList: Array<IComment>, | |||
answerList: Array<IPost> | |||
}; | |||
export type IComment = { | |||
id: string | number, | |||
description: string, | |||
author: IUser, | |||
dateTime: Date, | |||
likedUsers: Array<IUser>, | |||
dislikedUsers: Array<IUser>, | |||
reports: Array<IReport>, | |||
replyList: Array<IComment>, | |||
replyThreadLimit: number | |||
} | |||
export type IReport = { | |||
user: IUser, | |||
description: string, | |||
dateTime: Date | |||
}; |
@@ -0,0 +1,33 @@ | |||
import { IUser } from './user'; | |||
export type IQuiz = { | |||
id: string | number, | |||
name: string, | |||
description?: string, | |||
questionList: Array<IQuestion>, | |||
quizAttendanceList: Array<IQuizAttendance>, | |||
canRetake: boolean | |||
}; | |||
export type IQuizAttendance = { | |||
student: IUser, | |||
answerList: Array<IAnswer> | |||
}; | |||
export type IAnswer = { | |||
questionId: string, | |||
answer: string | |||
}; | |||
export type IQuestion = { | |||
id: string | number, | |||
question: string, | |||
answer: string, | |||
type: 'SINGLE_SELECT' | 'MULTI_SELECT' | 'FILL_IN_THE_BLANK', | |||
optionList?: Array<IOption> | |||
}; | |||
export type IOption = { | |||
id: string | number, | |||
heading: string | |||
}; |
@@ -0,0 +1,54 @@ | |||
import { IUser } from './user'; | |||
export type ITest = { | |||
id: string | number, | |||
dateTime: Date, | |||
durationInMinutes: number, | |||
description?: string, | |||
totalMarks: number, | |||
rules: string, | |||
categoricalQuestionList: Array<ICategory>, | |||
canRetake: boolean, | |||
testAttendanceList: Array<ITestAttendance>, | |||
}; | |||
export type ITestAttendance = { | |||
student: IUser, | |||
answerList: Array<IAnswer>, | |||
evaluator: IUser, | |||
}; | |||
export type IAnswer = { | |||
questionId: string, | |||
answer: string, | |||
status: 'CORRECT' | 'WRONG' | 'PARTIAL' // Using this so that the teacher can check the theoritical answers and decide the status, | |||
marksAllotted?: string // For providing partial marks based on the textual answer written by the student | |||
}; | |||
export type ICategory = { | |||
unitValue: number, | |||
maximumMarks: number, // So the teacher can add extra questions | |||
description?: string, | |||
question: IQuestion, | |||
}; | |||
export type IQuestion = { | |||
id: string | number, | |||
heading: string, | |||
answer: string | Array<string> | |||
type: 'TEXT' | 'SINGLE_SELECT' | 'MULTI_SELECT' | 'MATCH_THE_FOLLOWING', | |||
options?: Array<IOption>, | |||
leftGroup?: Array<IMatchOption>, | |||
rightGroup?: Array<IMatchOption>, | |||
}; | |||
export type IOption = { | |||
id: string | number, | |||
name: string, | |||
}; | |||
export type IMatchOption = { | |||
id: string, | |||
color: string, | |||
name: string | |||
}; |