aboutsummaryrefslogtreecommitdiff
path: root/src/models/PeerTeacher.ts
diff options
context:
space:
mode:
authorFurkan Sahin <furkan-dev@proton.me>2021-11-05 09:27:35 -0500
committerFurkan Sahin <furkan-dev@proton.me>2021-11-05 09:27:35 -0500
commit85380b4b60bf74507a01957b29bd6e3808e216db (patch)
treea43784660fdc29e5b95df3e358cf722eec2b092b /src/models/PeerTeacher.ts
parentffef3a6be19d1139b6378c8119d444082dd0cbac (diff)
parent29fc563863f561cdc707485289c5580b4397a580 (diff)
Merge pull request #10 from cobraguy/rewrite
Update to Svelte app
Diffstat (limited to 'src/models/PeerTeacher.ts')
-rw-r--r--src/models/PeerTeacher.ts85
1 files changed, 46 insertions, 39 deletions
diff --git a/src/models/PeerTeacher.ts b/src/models/PeerTeacher.ts
index f387431..5d955fd 100644
--- a/src/models/PeerTeacher.ts
+++ b/src/models/PeerTeacher.ts
@@ -1,41 +1,48 @@
-import EventInfo from './EventInfo';
+import EventInfo from "./EventInfo";
+
+interface PeerTeacherSerializeInfo {
+ id: number,
+ firstname: string,
+ lastname: string,
+ events: {
+ days: string,
+ start: number,
+ end: number
+ }[],
+ labs: number[]
+}
export default class PeerTeacher {
- firstname: string;
-
- lastname: string;
-
- uin: number;
-
- events: EventInfo[];
-
- assignedLabs: Set<string>;
-
- constructor(firstname = '', lastname = '', uin = 0) {
- this.firstname = firstname;
- this.lastname = lastname;
- this.uin = uin;
- this.events = [];
- this.assignedLabs = new Set();
- }
-
- conflictsWith(event: EventInfo) {
- let conflicts = false;
- this.events.every((item) => {
- if (item.conflictsWith(event)) {
- conflicts = true;
- return false;
- }
- return true;
- });
- return conflicts;
- }
-
- get name() {
- return `${this.firstname} ${this.lastname}`;
- }
-
- get id() {
- return this.uin;
- }
-}
+ id: number;
+ firstname: string;
+ lastname: string;
+ events: EventInfo[];
+ labs: Set<number>;
+
+ constructor(id: number | string, firstname: string, lastname: string) {
+ if(typeof id === "string") {
+ id = parseInt(id, 10);
+ }
+
+ this.id = id;
+ this.firstname = firstname;
+ this.lastname = lastname;
+ this.events = [];
+ this.labs = new Set();
+ }
+
+ static fromJSON({id, firstname, lastname, events, labs}: PeerTeacherSerializeInfo) {
+ const pt = new PeerTeacher(id, firstname, lastname);
+ pt.events = events.map(e => EventInfo.fromJSON(e));
+ pt.labs = new Set(labs);
+ return pt;
+ }
+
+ conflictsWith(event: EventInfo) {
+ return this.events.some(item => item.conflictsWith(event));
+ }
+
+ get name() {
+ return `${this.firstname} ${this.lastname}`;
+ }
+} \ No newline at end of file