Commit 306d8f25 authored by Johannes Bill's avatar Johannes Bill

holiday model refactored

parent 29b7c2ed
...@@ -27,7 +27,7 @@ var variableOffsets = { ...@@ -27,7 +27,7 @@ var variableOffsets = {
602: 50 602: 50
}; };
var holidayToSpecificMap = (function () { var inverseHdMap = (function () {
var regionH = holidayMapping["region"]; var regionH = holidayMapping["region"];
var hMap = {}; var hMap = {};
for (var rKey in regionH) { for (var rKey in regionH) {
...@@ -47,7 +47,6 @@ var holidayToSpecificMap = (function () { ...@@ -47,7 +47,6 @@ var holidayToSpecificMap = (function () {
} }
return hMap; return hMap;
}()); }());
console.log(holidayToSpecificMap);
function Holidays(year) { function Holidays(year) {
...@@ -86,29 +85,6 @@ function Holidays(year) { ...@@ -86,29 +85,6 @@ function Holidays(year) {
return !!(86150 <= plz && plz <= 86199); return !!(86150 <= plz && plz <= 86199);
} }
function getRegionOptions(plz, keys, cb) {
var blnd;
var options = {
isKath: false,
isAugsburg: false
};
restRequest.getBundesland(plz, function (err, result) {
if (err) return cb(err);
blnd = result;
options.blnd = blnd;
if (blnd == "BY") {
options.isAugsburg = getIsAugsburg(plz);
restRequest.getKatholisch(plz, function (err1, isKath) {
if (err1) return cb(err1);
options.isKath = isKath;
cb(null, options);
})
}
else {
cb(null, options);
}
});
}
function isInEpochSpan(date, epochSpan) { function isInEpochSpan(date, epochSpan) {
var dateTime = date.getTime(); var dateTime = date.getTime();
...@@ -126,47 +102,61 @@ function Holidays(year) { ...@@ -126,47 +102,61 @@ function Holidays(year) {
if (plz == 0) { if (plz == 0) {
return cb(null, initKeys); return cb(null, initKeys);
} }
var specialKeys = holidayMapping["specificHolidays"].filter(function(key) {
return initKeys.indexOf(key) >= 0;
});
getRegionOptions(plz, initKeys, function (err, options) { if (specialKeys.length == 0) {
console.log(options); return cb(null, initKeys);
}
restRequest.getBundesland(plz, function (err, blnd) {
if (err) return cb(err); if (err) return cb(err);
var blnd = options.blnd; var keys = holidayMapping["sureHolidays"].filter(function(key) {
var isAugsburg = options.isAugsburg; return initKeys.indexOf(key) >= 0;
var isKath = options.isKath; });
var keys = holidayMapping['sureHolidays']; var regionMap = holidayMapping["region"][blnd];
var blndMap = holidayMapping['region'][blnd]; var regHD = regionMap['default'];
if (blndMap) { for (var i = 0; i < regHD.length; i++) {
keys.concat(blndMap['default']); var key = regHD[i];
if (isKath && blndMap['kath']) if (initKeys.indexOf(key) >= 0) {
keys = keys.concat(blndMap['kath']); keys.push(key);
}
if (isAugsburg && blndMap['augsburg'])
keys = keys.concat(blndMap['augsburg']);
} }
cb(null, keys); if(blnd != "BY") {
}) cb(null, keys);
} }
else {
function blndGetter(plz) { if(regionMap["augsburg"] && getIsAugsburg(plz)) {
var blnd; var augsHDs = regionMap["augsburg"];
var errRec; for (var i = 0; i < augsHDs.length; i++) {
function getBlnd(cb) { var key = augsHDs[i];
if(errRec) return cb(errRec); if(initKeys.indexOf(key) >= 0)
if(blnd) return cb(null, blnd); keys.push(key);
restRequest.getBundesland(plz, function(err, result) { }
if(err) {
errRec = err;
return cb(err);
} }
cb(null, result); if(regionMap["kath"] && regionMap["kath"].length > 0) {
}) restRequest.getKatholisch(plz, function(err, kath) {
} if(err) return cb(err);
return getBlnd; if(kath) {
var kathHDs = regionMap["kath"];
for (var i = 0; i < kathHDs.length; i++) {
var key = kathHDs[i];
if(initKeys.indexOf(key) >= 0)
keys.push(key);
}
}
cb(null, keys);
})
}
else {
cb(null, keys);
}
}
});
} }
this.getAllHolidays = function (plz, epochSpan, cb) { this.getAllHolidays = function (plz, epochSpan, cb) {
getHolidayKeys(plz, epochSpan, function (err, keys) { getHolidayKeys(plz, epochSpan, function (err, keys) {
if (err) if (err)
return cb(err); return cb(err);
var result = []; var result = [];
......
var mysql = require('mysql'); var mysql = require('mysql');
var dateArray = require('../lib/dateArray'); var dateArray = require('../lib/dateArray');
var dateView = require('../lib/dateView'); var dateView = require('../lib/dateView');
var plz = 90473; var plz = 86150;
var connection = mysql.createConnection({ var connection = mysql.createConnection({
host: 'localhost', host: 'localhost',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment