const RawData = require("../lib/RawData");
const Class = require("./Class");
const Edupage = require("./Edupage");
const Season = require("./Season");
const Student = require("./Student");
const Subject = require("./Subject");
const Teacher = require("./Teacher");
class Plan extends RawData {
constructor(data = {}, edupage = null) {
super(data);
if(!data.settings) data.settings = {};
if(typeof data.settings === "string") data.settings = JSON.parse(data.settings) || {};
this.edupage = edupage;
this.id = data.planid;
this.subjectId = data.predmetid;
this.customClassId = data.triedaid;
this.customName = data.nazov;
this.changedDate = data.cas_zmeny || data.lastChange ? new Date(data.cas_zmeny || data.lastChange) : null;
this.year = +data.rok;
this.settings = data.settings;
this.isPublic = !!+data.zverejnit_studentom;
this.state = data.stav;
this.isValid = !!+data.valid;
this.approvedDate = data.approved ? new Date(data.approved) : null;
this.isApproved = !!this.approvedDate;
this.otherId = data.ineid;
this.topicsCount = data.countTopics;
this.taughtCount = data.countTaught;
this.standardsCount = data.countStandards;
this.timetableGroup = data.rozvrhy_skupinaMeno || null;
this.season = null;
this.name = data.nazovPlanu;
this.classOrdering = data.triedaOrdering;
this.isEntireClass = !!data.entireClass;
this.subject = null;
this.classes = [];
this.teacher = null;
this.teachers = [];
this.students = [];
if(this.edupage) Plan.prototype.init.call(this);
}
init(edupage = null) {
if(edupage) this.edupage = edupage;
if(this._data.obdobie) this.season = this.edupage.seasons.find(e => e.id == this._data.obdobie);
this.subject = this.edupage.subjects.find(e => e.id == this._data.predmetid);
this.teacher = this.edupage.teachers.find(e => e.id == this._data.ucitelid);
this.classes = this._data.triedy.map(e => this.edupage.classes.find(t => t.id == e.toString()));
this.teachers = this._data.ucitelids.map(e => this.edupage.teachers.find(t => t.id == e));
this.students = this._data.students.map(e => this.edupage.students.find(t => t.id == e));
}
}
module.exports = Plan;