Commit 90b80c60 authored by Johannes Bill's avatar Johannes Bill

holiday model finished

parent e3c867a5
...@@ -108,7 +108,6 @@ function wrapper(_epochSpan) { ...@@ -108,7 +108,6 @@ function wrapper(_epochSpan) {
} }
} }
function parseDate(date, year, addOneDay) { function parseDate(date, year, addOneDay) {
if (date.length == 0) if (date.length == 0)
return null; return null;
...@@ -166,7 +165,7 @@ function wrapper(_epochSpan) { ...@@ -166,7 +165,7 @@ function wrapper(_epochSpan) {
} }
for (var year = startYear; year <= endYear; year++) { for (var year = startYear; year <= endYear; year++) {
holidaysGetter[year].getAllHolidays(plz, _cb); holidaysGetter[year].getAllHolidays(plz, epochSpan, _cb);
} }
} }
......
var holidayMapping = require('./holidayMapping.json'); var holidayMapping = require('./holidayMapping.json');
var easterSunday = require('./easterSunday'); var easterSunday = require('./easterSunday');
var assert = require('assert'); var restRequest = require('./restRequests');
var fixedHolidays = { var fixedHolidays = {
101: "0101", 101: "0101",
...@@ -27,8 +27,7 @@ var variableOffsets = { ...@@ -27,8 +27,7 @@ var variableOffsets = {
function Holidays(year) { function Holidays(year) {
var easterSundays = { var easterSundays = {};
};
function getEasterSunday() { function getEasterSunday() {
if (!easterSundays[year]) if (!easterSundays[year])
...@@ -59,44 +58,66 @@ function Holidays(year) { ...@@ -59,44 +58,66 @@ function Holidays(year) {
var holidays = getFixedHolidays(fixedHolidays); var holidays = getFixedHolidays(fixedHolidays);
holidays = getVariableHolidaysMap(variableOffsets, holidays); holidays = getVariableHolidaysMap(variableOffsets, holidays);
console.log(holidays);
function plzToBlnd(plz, cb) { function getIsAugsburg(plz) {
return !!(86150 <= plz && plz <= 86199);
} }
function isAugsburg(plz, cb) { function getRegionOptions(plz, 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 isKath(plz, cb) {
} function getHolidayKeys(plz, epochSpan, cb) {
function getHolidayKeys(plz, cb) { if(plz == 0) {
var keys = Object.keys(holidays);
//TODO: remove return cb(null, keys);
var keys = Object.keys(holidays);
return cb(null, keys);
//\remove
var blnd = plzToBlnd(plz);
var isAugsburg = isAugsburg(plz);
var isKath = isKath(plz);
var keys = holidayMapping['sureHolidays'];
assert(isAugsburg == (blnd == 'BY'));
var blndMap = holidayMapping['region'][blnd];
if (blndMap) {
keys.concat(blndMap['default']);
if (blndMap['kath'] && isKath)
keys.concat(blndMap['kath']);
if (blndMap['augsburg'] && isAugsburg)
keys.concat(blndMap['augsburg']);
} }
cb(null, keys);
getRegionOptions(plz, function(err, options) {
console.log(options);
if(err) return cb(err);
var blnd = options.blnd;
var isAugsburg = options.isAugsburg;
var isKath = options.isKath;
var keys = holidayMapping['sureHolidays'];
var blndMap = holidayMapping['region'][blnd];
if (blndMap) {
keys.concat(blndMap['default']);
if (isKath && blndMap['kath'])
keys = keys.concat(blndMap['kath']);
if (isAugsburg && blndMap['augsburg'])
keys = keys.concat(blndMap['augsburg']);
}
cb(null, keys);
})
} }
this.getAllHolidays = function (plz, cb) { this.getAllHolidays = function (plz, epochSpan, cb) {
getHolidayKeys(plz, function (err, keys) { getHolidayKeys(plz, epochSpan, function (err, keys) {
if(err) if(err)
return cb(err); return cb(err);
......
var http = require('http'); var http = require('http');
var hostname= "127.0.0.255"; var hostname = "127.0.0.1";
var port= 3001; var port = 3001;
var headers = { var headers = {
"Content-Type": "application/json" "Content-Type": "application/json",
"Connection": "keep-alive"
};
var blndMapping = {
"Baden-Württemberg": "BW",
"Niedersachsen": "NI",
"Bayern": "BY",
"Nordrhein-Westfalen": "NW",
"Berlin": "BE",
"Rheinland-Pfalz": "RP",
"Brandenburg": "BB",
"Saarland": "SL",
"Bremen": "HB",
"Sachsen": "SN",
"Hamburg": "HH",
"Sachsen-Anhalt": "ST",
"Hessen": "HE",
"Schleswig-Holstein": "SH",
"Mecklenburg-Vorpommern": "MV",
"Thüringen": "TH"
}; };
var path = '/api/postleitzahlen/findone/?filter[where][plz]=93047';
function request(path, cb) { function request(path, cb) {
var options = { var options = {
...@@ -30,24 +49,55 @@ function request(path, cb) { ...@@ -30,24 +49,55 @@ function request(path, cb) {
req.on("error", function (err) { req.on("error", function (err) {
cb(err); cb(err);
}); });
req.setTimeout(500, function() { req.setTimeout(500, function () {
req.abort(); req.abort();
}); });
req.end(); req.end();
} }
request(path, function(err, res) { module.exports.getBundesland = function(plz, cb) {
console.log(err); var path = "/api/postleitzahlen/findone/?filter[where][plz]=" + plz;
console.log(res); request(path, function (err, result) {
}); if (err) return cb(err);
var blnd;
try {
blnd = JSON.parse(result)['bundesland'];
}
catch (error) {
return cb(err);
}
blnd = blndMapping[blnd];
function getBundesland(plz, cb) { if (blnd === undefined)
return cb(new Error("no bundesland found for plz " + plz));
} cb(null, blnd);
});
function getKatholisch(plz, cb) { };
} module.exports.getKatholisch = function(plz, cb) {
var path = '/api/relHolidays/findOne/?filter[where][plz]=' + plz;
request(path, function (err, result) {
if (err) return cb(err);
var feiertag;
try {
feiertag = JSON.parse(result)['feiertag'];
}
catch (error) {
return cb(err);
}
if (feiertag === undefined)
return cb(new Error("no religion entry found for plz " + plz));
cb(null, !!feiertag);
})
};
/*getBundesland(4600, function (err, result) {
console.log(err);
console.log(result);
});*/
/*getKatholisch(93047, function (err, result) {
console.log(err);
console.log(result);
});*/
...@@ -6,7 +6,7 @@ describe("dateArray" ,function() { ...@@ -6,7 +6,7 @@ describe("dateArray" ,function() {
it("should equal", function(done) { it("should equal", function(done) {
var data = require('./testData/testHof.json'); var data = require('./testData/testHof.json');
var epocheSpan = [new Date(2014,0,1), new Date(2015,0,1)]; var epocheSpan = [new Date(2014,0,1), new Date(2015,0,1)];
dateArray(epocheSpan).getData(data, 93047, function(err, oHours) { dateArray(epocheSpan).getData(data, 0, function(err, oHours) {
var result = JSON.stringify(oHours); var result = JSON.stringify(oHours);
expect(result).to.equal(require('./testData/testHofResult.json')['data']); expect(result).to.equal(require('./testData/testHofResult.json')['data']);
done(); done();
......
...@@ -10,7 +10,7 @@ describe("dateView" ,function() { ...@@ -10,7 +10,7 @@ describe("dateView" ,function() {
var now = new Date(2014, 4, 1); var now = new Date(2014, 4, 1);
var epocheSpan = dateView.getPropperEpochSpan(now); var epocheSpan = dateView.getPropperEpochSpan(now);
dateArray(epocheSpan).getData(data, 93047, function(err, oHours) { dateArray(epocheSpan).getData(data, 0, function(err, oHours) {
var view = dateView.getView(oHours, now); var view = dateView.getView(oHours, now);
console.log(view); console.log(view);
var viewRef = fs.readFileSync(__dirname + '/testData/testHofView.html', { var viewRef = fs.readFileSync(__dirname + '/testData/testHofView.html', {
......
{ {
"name": "OpeningHours", "name": "OpeningHours",
"version": "0.0.0", "version": "0.0.0",
"main": "holidays.js", "main": "lib/main.js",
"dependencies": { "dependencies": {
"moment": "^2.7.0" "moment": "^2.7.0"
}, },
......
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 = 93047; var plz = 90473;
var connection = mysql.createConnection({ var connection = mysql.createConnection({
host: 'localhost', host: 'localhost',
...@@ -18,7 +18,7 @@ module.exports.getData = function (now, cb) { ...@@ -18,7 +18,7 @@ module.exports.getData = function (now, cb) {
// console.log(epocheSpan); // console.log(epocheSpan);
// dateArray.setEpocheSpan(epocheSpan); // dateArray.setEpocheSpan(epocheSpan);
connection.query('SELECT name, elements FROM cms_zoo_item WHERE type = "company"', function (err, rows) { connection.query('SELECT name, elements FROM cms_zoo_item WHERE type = "company" LIMIT 50', function (err, rows) {
var result = []; var result = [];
var cnt = 0; var cnt = 0;
var iters = rows.length; var iters = rows.length;
...@@ -26,6 +26,7 @@ module.exports.getData = function (now, cb) { ...@@ -26,6 +26,7 @@ module.exports.getData = function (now, cb) {
var obj = JSON.parse(rows[i].elements); var obj = JSON.parse(rows[i].elements);
(function() { (function() {
var name = rows[i].name; var name = rows[i].name;
dateArray(epocheSpan).getData(obj, plz, function (err, data) { dateArray(epocheSpan).getData(obj, plz, function (err, data) {
if(err) { if(err) {
console.log(name, err); console.log(name, err);
......
...@@ -5,13 +5,13 @@ var fs = require('fs'); ...@@ -5,13 +5,13 @@ var fs = require('fs');
var now = new Date(2014, 4, 1); var now = new Date(2014, 4, 1);
dateArray.setEpocheSpan(dateView.getPropperEpochSpan(now));
var data = dateArray.getData(require('../mochaTests/testData/testHof.json')); dateArray(dateView.getPropperEpochSpan(now)).getData(require('../mochaTests/testData/testHof.json'), 0, function(err, data) {
console.log(data); console.log(data);
var view = dateView.getView(data, now, 0); var view = dateView.getView(data, now, 93047);
fs.writeFile(process.env["HOME"] + '/Desktop/bla.html', view, function (err) { fs.writeFile(process.env["HOME"] + '/Desktop/bla.html', view, function (err) {
if (err) console.log(err); if (err) console.log(err);
else console.log("file saved"); else console.log("file saved");
}); });
\ No newline at end of file });
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