aboutsummaryrefslogtreecommitdiff
path: root/lib/getURLOfUsers.js
blob: 8590ee49ad0572f2e7e594f780cba970a4725c0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
const leftPad = require('left-pad')

// copied from http://www.meetingpointmco.nl/Roosters-AL/doc/dagroosters/untisscripts.js,
// were using the same code as they do to be sure that we always get the same
// week number.
function getWeek () {
  // Create a copy of this date object
  var target = new Date()

  // ISO week date weeks start on monday
  // so correct the day number
  var dayNr = (target.getDay() + 6) % 7

  // ISO 8601 states that week 1 is the week
  // with the first thursday of that year.
  // Set the target date to the thursday in the target week
  target.setDate(target.getDate() - dayNr + 3)

  // Store the millisecond value of the target date
  var firstThursday = target.valueOf()

  // Set the target to the first thursday of the year
  // First set the target to january first
  target.setMonth(0, 1)
  // Not a thursday? Correct the date to the next thursday
  if (target.getDay() !== 4) {
    target.setMonth(0, 1 + ((4 - target.getDay()) + 7) % 7)
  }

  // The weeknumber is the number of weeks between the
  // first thursday of the year and the thursday in the target week
  return 1 + Math.ceil((firstThursday - target) / 604800000) // 604800000 = 7 * 24 * 3600 * 1000
}

function getURLOfUsers (weekOffset, type, id) {
  return `http://www.meetingpointmco.nl/Roosters-AL/doc/dagroosters/` +
      `${getWeek() + weekOffset}/${type}/${type}${leftPad(id, 5, '0')}.htm`
}

module.exports = getURLOfUsers

module.exports.CLASS = 'c'
module.exports.TEACHERS = 't'
module.exports.ROOMS = 'r'
module.exports.STUDENTS = 's'