Skip to content

Commit def6902

Browse files
committed
✨ Added getChangedLessons
1 parent 6bebaef commit def6902

File tree

8 files changed

+184
-4
lines changed

8 files changed

+184
-4
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vulcan-api-js",
3-
"version": "2.0.3",
3+
"version": "2.1.0",
44
"description": "Unofficial API for UONET+ e-register from Vulcan.",
55
"main": "lib/index.js",
66
"scripts": {
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { HebeDateTime } from "./dateTime";
2+
import { HebeLessonChanges } from "./lessonChanges";
3+
import { HebeLessonRoom } from "./lessonRoom";
4+
import { HebeSubject } from "./subject";
5+
import { HebeTeacher } from "./teacher";
6+
import { HebeTeamClass } from "./teamClass";
7+
import { HebeTeamVirtual } from "./teamVirtual";
8+
import { HebeTimeSlot } from "./timeSlot";
9+
10+
export interface HebeChangedLesson {
11+
Id?: number;
12+
UnitId?: number;
13+
ScheduleId?: number;
14+
LessonDate?: HebeDateTime;
15+
Note?: string;
16+
Reason?: string;
17+
TimeSlot?: HebeTimeSlot;
18+
Room?: HebeLessonRoom;
19+
TeacherPrimary?: HebeTeacher;
20+
TeacherSecondary?: HebeTeacher;
21+
Subject?: HebeSubject;
22+
Event?: string;
23+
Change?: HebeLessonChanges;
24+
ChangeDate?: HebeDateTime;
25+
Clazz?: HebeTeamClass;
26+
Distribution?: HebeTeamVirtual;
27+
}

src/hebe_interfaces/lesson.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { HebeDateTime } from "./dateTime";
2+
import { HebeLessonChanges } from "./lessonChanges";
23
import { HebeLessonRoom } from "./lessonRoom";
34
import { HebeSubject } from "./subject";
45
import { HebeTeacher } from "./teacher";
@@ -15,7 +16,7 @@ export interface HebeLesson {
1516
TeacherSecondary?: HebeTeacher;
1617
Subject?: HebeSubject;
1718
Event?: string;
18-
Change?: string;
19+
Change?: HebeLessonChanges;
1920
Clazz?: HebeTeamClass;
2021
PupilAlias?: string;
2122
Distribution?: HebeTeamVirtual;
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export interface HebeLessonChanges {
2+
Id: number;
3+
Type: number;
4+
Separation: boolean;
5+
}

src/index.ts

Lines changed: 115 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
DATA_GRADE,
44
DATA_LUCKY_NUMBER,
55
DATA_TIMETABLE,
6+
DATA_TIMETABLE_CHANGES,
67
DEVICE_REGISTER,
78
STUDENT_LIST,
89
} from "./endpoints";
@@ -22,6 +23,8 @@ import { HebeLuckyNumber } from "./hebe_interfaces/luckyNumber";
2223
import { LuckyNumber } from "./interfaces/luckyNumber";
2324
import { HebeGrade } from "./hebe_interfaces/grade";
2425
import { Grade } from "./interfaces/grade";
26+
import { ChangedLesson } from "./interfaces/changedLesson";
27+
import { HebeChangedLesson } from "./hebe_interfaces/changedLesson";
2528

2629
export * from "./keystore";
2730

@@ -192,7 +195,13 @@ export class VulcanHebe {
192195
}
193196
: undefined,
194197
event: item.Event,
195-
change: item.Change,
198+
change: item.Change
199+
? {
200+
id: item.Change?.Id,
201+
type: item.Change?.Type,
202+
separation: item.Change?.Separation,
203+
}
204+
: undefined,
196205
class: item.Clazz
197206
? {
198207
id: item.Clazz.Id,
@@ -216,6 +225,111 @@ export class VulcanHebe {
216225
});
217226
return lessonsToReturn;
218227
}
228+
229+
public async getChangedLessons(dateFrom?: Date, dateTo?: Date) {
230+
const dFrom = dateFrom ? dateFrom : new Date();
231+
const dTo = dateTo ? dateTo : new Date();
232+
const data: HebeLesson[] = await this.api.helper.getList(
233+
DATA_TIMETABLE_CHANGES,
234+
false,
235+
undefined,
236+
dFrom,
237+
dTo,
238+
FilterType.BY_PUPIL
239+
);
240+
const lessonsToReturn: ChangedLesson[] = data.map(
241+
(item: HebeChangedLesson): ChangedLesson => {
242+
return {
243+
id: item.Id,
244+
unitId: item.UnitId,
245+
scheduleId: item.ScheduleId,
246+
lessonDate: item.LessonDate
247+
? {
248+
timestamp: item.LessonDate.Timestamp,
249+
time: item.LessonDate.Time,
250+
date: item.LessonDate.Date,
251+
}
252+
: undefined,
253+
note: item.Note,
254+
reason: item.Reason,
255+
time: item.TimeSlot
256+
? {
257+
id: item.TimeSlot.Id,
258+
start: item.TimeSlot.Start,
259+
end: item.TimeSlot.End,
260+
display: item.TimeSlot.Display,
261+
position: item.TimeSlot.Position,
262+
}
263+
: undefined,
264+
room: item.Room
265+
? {
266+
id: item.Room.Id,
267+
code: item.Room.Code,
268+
}
269+
: undefined,
270+
teacher: item.TeacherPrimary
271+
? {
272+
id: item.TeacherPrimary.Id,
273+
name: item.TeacherPrimary.Name,
274+
surname: item.TeacherPrimary.Surname,
275+
displayName: item.TeacherPrimary.DisplayName,
276+
}
277+
: undefined,
278+
secondTeacher: item.TeacherSecondary
279+
? {
280+
id: item.TeacherSecondary.Id,
281+
name: item.TeacherSecondary.Name,
282+
surname: item.TeacherSecondary.Surname,
283+
displayName: item.TeacherSecondary.DisplayName,
284+
}
285+
: undefined,
286+
subject: item.Subject
287+
? {
288+
id: item.Subject.Id,
289+
key: item.Subject.Key,
290+
name: item.Subject.Name,
291+
position: item.Subject.Position,
292+
code: item.Subject.Kod,
293+
}
294+
: undefined,
295+
event: item.Event,
296+
change: item.Change
297+
? {
298+
id: item.Change.Id,
299+
separation: item.Change.Separation,
300+
type: item.Change.Type,
301+
}
302+
: undefined,
303+
changeDate: item.ChangeDate
304+
? {
305+
timestamp: item.ChangeDate.Timestamp,
306+
date: item.ChangeDate.Date,
307+
time: item.ChangeDate.Time,
308+
}
309+
: undefined,
310+
class: item.Clazz
311+
? {
312+
id: item.Clazz.Id,
313+
key: item.Clazz.Key,
314+
displayName: item.Clazz.DisplayName,
315+
symbol: item.Clazz.Symbol,
316+
}
317+
: undefined,
318+
distribution: item.Distribution
319+
? {
320+
id: item.Distribution.Id,
321+
key: item.Distribution.Key,
322+
name: item.Distribution.Name,
323+
partType: item.Distribution.PartType,
324+
shortcut: item.Distribution.Shortcut,
325+
}
326+
: undefined,
327+
};
328+
}
329+
);
330+
return lessonsToReturn;
331+
}
332+
219333
public async getLuckyNumber() {
220334
const data: HebeLuckyNumber = await this.api.helper.getData(
221335
DATA_LUCKY_NUMBER,

src/interfaces/changedLesson.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { DateTime } from "./dateTime";
2+
import { LessonChanges } from "./lessonChanges";
3+
import { LessonRoom } from "./lessonRoom";
4+
import { Subject } from "./subject";
5+
import { Teacher } from "./teacher";
6+
import { TeamClass } from "./teamClass";
7+
import { TeamVirtual } from "./teamVirtual";
8+
import { TimeSlot } from "./timeSlot";
9+
10+
export interface ChangedLesson {
11+
id?: number;
12+
unitId?: number;
13+
scheduleId?: number;
14+
lessonDate?: DateTime;
15+
note?: string;
16+
reason?: string;
17+
time?: TimeSlot;
18+
room?: LessonRoom;
19+
teacher?: Teacher;
20+
secondTeacher?: Teacher;
21+
subject?: Subject;
22+
event?: string;
23+
change?: LessonChanges;
24+
changeDate?: DateTime;
25+
class?: TeamClass;
26+
distribution?: TeamVirtual;
27+
}

src/interfaces/lesson.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { DateTime } from "./dateTime";
2+
import { LessonChanges } from "./lessonChanges";
23
import { LessonRoom } from "./lessonRoom";
34
import { Subject } from "./subject";
45
import { Teacher } from "./teacher";
@@ -15,7 +16,7 @@ export interface Lesson {
1516
teacherSecondary?: Teacher;
1617
subject?: Subject;
1718
event?: string;
18-
change?: string;
19+
change?: LessonChanges;
1920
class?: TeamClass;
2021
pupilAlias?: string;
2122
distribution?: TeamVirtual;

src/interfaces/lessonChanges.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export interface LessonChanges {
2+
id: number;
3+
type: number;
4+
separation: boolean;
5+
}

0 commit comments

Comments
 (0)