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

holiday model finished

parent e3c867a5
......@@ -108,7 +108,6 @@ function wrapper(_epochSpan) {
}
}
function parseDate(date, year, addOneDay) {
if (date.length == 0)
return null;
......@@ -166,7 +165,7 @@ function wrapper(_epochSpan) {
}
for (var year = startYear; year <= endYear; year++) {
holidaysGetter[year].getAllHolidays(plz, _cb);
holidaysGetter[year].getAllHolidays(plz, epochSpan, _cb);
}
}
......
var holidayMapping = require('./holidayMapping.json');
var easterSunday = require('./easterSunday');
var assert = require('assert');
var restRequest = require('./restRequests');
var fixedHolidays = {
101: "0101",
......@@ -27,8 +27,7 @@ var variableOffsets = {
function Holidays(year) {
var easterSundays = {
};
var easterSundays = {};
function getEasterSunday() {
if (!easterSundays[year])
......@@ -59,44 +58,66 @@ function Holidays(year) {
var holidays = getFixedHolidays(fixedHolidays);
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);
})
}
function isKath(plz, cb) {
else {
cb(null, options);
}
});
}
function getHolidayKeys(plz, cb) {
function getHolidayKeys(plz, epochSpan, cb) {
//TODO: remove
if(plz == 0) {
var keys = Object.keys(holidays);
return cb(null, keys);
//\remove
}
var blnd = plzToBlnd(plz);
var isAugsburg = isAugsburg(plz);
var isKath = isKath(plz);
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'];
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']);
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) {
getHolidayKeys(plz, function (err, keys) {
this.getAllHolidays = function (plz, epochSpan, cb) {
getHolidayKeys(plz, epochSpan, function (err, keys) {
if(err)
return cb(err);
......
var http = require('http');
var hostname= "127.0.0.255";
var port= 3001;
var hostname = "127.0.0.1";
var port = 3001;
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) {
var options = {
......@@ -30,24 +49,55 @@ function request(path, cb) {
req.on("error", function (err) {
cb(err);
});
req.setTimeout(500, function() {
req.setTimeout(500, function () {
req.abort();
});
req.end();
}
request(path, function(err, res) {
console.log(err);
console.log(res);
});
function getBundesland(plz, cb) {
module.exports.getBundesland = function(plz, cb) {
var path = "/api/postleitzahlen/findone/?filter[where][plz]=" + plz;
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];
}
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() {
it("should equal", function(done) {
var data = require('./testData/testHof.json');
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);
expect(result).to.equal(require('./testData/testHofResult.json')['data']);
done();
......
......@@ -10,7 +10,7 @@ describe("dateView" ,function() {
var now = new Date(2014, 4, 1);
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);
console.log(view);
var viewRef = fs.readFileSync(__dirname + '/testData/testHofView.html', {
......
{
"name": "OpeningHours",
"version": "0.0.0",
"main": "holidays.js",
"main": "lib/main.js",
"dependencies": {
"moment": "^2.7.0"
},
......
var mysql = require('mysql');
var dateArray = require('../lib/dateArray');
var dateView = require('../lib/dateView');
var plz = 93047;
var plz = 90473;
var connection = mysql.createConnection({
host: 'localhost',
......@@ -18,7 +18,7 @@ module.exports.getData = function (now, cb) {
// console.log(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 cnt = 0;
var iters = rows.length;
......@@ -26,6 +26,7 @@ module.exports.getData = function (now, cb) {
var obj = JSON.parse(rows[i].elements);
(function() {
var name = rows[i].name;
dateArray(epocheSpan).getData(obj, plz, function (err, data) {
if(err) {
console.log(name, err);
......
......@@ -5,13 +5,13 @@ var fs = require('fs');
var now = new Date(2014, 4, 1);
dateArray.setEpocheSpan(dateView.getPropperEpochSpan(now));
var data = dateArray.getData(require('../mochaTests/testData/testHof.json'));
console.log(data);
var view = dateView.getView(data, now, 0);
dateArray(dateView.getPropperEpochSpan(now)).getData(require('../mochaTests/testData/testHof.json'), 0, function(err, data) {
console.log(data);
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);
else console.log("file saved");
});
});
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