Home Reference Source

src/absenceInfo.js

import _ from 'lodash'
import MagisterThing from './magisterThing'
import Appointment from './appointment'
import { toString, parseDate } from './util'

class AbsenceInfo extends MagisterThing {
	/**
	 * @private
	 * @param {Magister} magister
	 * @param {Object} raw
	 */
	constructor(magister, raw) {
		super(magister)

		/**
		 * @type {Number}
		 * @private
		 * @readonly
		 */
		this._type = raw.Verantwoordingtype

		/**
		 * @type {String}
		 * @readonly
		 */
		this.id = toString(raw.Id)
		/**
		 * @type {Date}
		 * @readonly
		 */
		this.begin = parseDate(raw.Start)
		/**
		 * @type {Date}
		 * @readonly
		 */
		this.end = parseDate(raw.Eind)
		/**
		 * @type {Number}
		 * @readonly
		 */
		this.schoolHour = raw.Lesuur
		/**
		 * @type {Boolean}
		 * @readonly
		 */
		this.isPermitted = raw.Geoorloofd
		/**
		 * @type {String}
		 * @readonly
		 */
		this.description = _.toString(raw.Omschrijving).trim()
		/**
		 * @type {String}
		 * @readonly
		 */
		this.code = _.toString(raw.Code)
		/**
		 * @type {Appointment}
		 * @readonly
		 */
		this.appointment = new Appointment(magister, raw.Afspraak) // REVIEW: do we want (and need) this?
	}

	/**
	 * @type {string}
	 * @readonly
	 */
	get type() {
		switch (this._type) {
		case 1:  return 'absent'
		case 2:  return 'late'
		case 3:  return 'sick'
		case 4:  return 'discharged'
		case 6:  return 'exemption'
		case 7:  return 'books'
		case 8:  return 'homework'

		default: return 'unknown'
		}
	}
}

export default AbsenceInfo