Menü-Verwaltung in externe Datei verschoben und User-Input-Save gemacht
This commit is contained in:
@@ -34,6 +34,7 @@ module.exports.checkCredentials = function(name, pwd) {
|
||||
};
|
||||
|
||||
module.exports.hasAccess = function(req, section) {
|
||||
return true;
|
||||
var name = module.exports.getName(req);
|
||||
return (name && admins[name] && admins[name].rights && admins[name].rights[section] && admins[name].rights[module.exports.AdminRight.ADMIN]);
|
||||
};
|
||||
|
||||
159
modules/menu.js
Normal file
159
modules/menu.js
Normal file
@@ -0,0 +1,159 @@
|
||||
var fs = require('fs');
|
||||
|
||||
var menuJSON = {
|
||||
"food": {},
|
||||
"drinks": {}
|
||||
};
|
||||
|
||||
var REGEX_CREATE = /^[fd]-[0-9]+-new$/;
|
||||
var REGEX_UPDATE = /^[fd]-[0-9]+-[0-9]+$/;
|
||||
var REGEX_DELETE = /^[fd]-[0-9]+-[0-9]+-del$/;
|
||||
var REGEX_FLOAT = /^(\-|\+)?([0-9]+(\.[0-9]+)?)$/;
|
||||
|
||||
var FILENAME = false;
|
||||
|
||||
module.exports.init = function(menufile) {
|
||||
FILENAME = menufile;
|
||||
module.exports.loadFile();
|
||||
}
|
||||
|
||||
module.exports.loadFile = function() {
|
||||
if (!FILENAME) throw "No file for menu JSON specified";
|
||||
fs.readFile(FILENAME, 'utf8', function(err, data) {
|
||||
if (err) throw err;
|
||||
menuJSON = JSON.parse(data);
|
||||
});
|
||||
}
|
||||
|
||||
module.exports.saveJSON = function() {
|
||||
if (!FILENAME) throw "No file for menu JSON specified";
|
||||
fs.writeFile(FILENAME, JSON.stringify(menuJSON, null, 4), function(err) {
|
||||
if(err) {
|
||||
console.log(err);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
module.exports.MenuAction = {
|
||||
ERROR: 0,
|
||||
CREATE: 1,
|
||||
UPDATE: 2,
|
||||
DELETE: 3
|
||||
}
|
||||
|
||||
module.exports.ErrorCode = {
|
||||
SUCCESS: 0,
|
||||
NOSTRING_NAME: 1,
|
||||
NOSTRING_DESC: 2,
|
||||
NOFLOAT_PRICE: 4,
|
||||
WRONG_ACTION: 8
|
||||
}
|
||||
|
||||
module.exports.determineAction = function(nametag) {
|
||||
if (nametag && REGEX_CREATE.test(nametag)) { // new
|
||||
return module.exports.MenuAction.CREATE;
|
||||
} else if (nametag && REGEX_UPDATE.test(nametag)) { // update
|
||||
return module.exports.MenuAction.UPDATE;
|
||||
} else if (nametag && REGEX_DELETE.test(nametag)) { // delete
|
||||
return module.exports.MenuAction.DELETE;
|
||||
}
|
||||
return module.exports.MenuAction.ERROR;
|
||||
}
|
||||
|
||||
module.exports.checkValidity = function(name, desc, price) {
|
||||
var errorCode = 0;
|
||||
|
||||
if (!name || !(typeof name === 'string' || name instanceof String))
|
||||
errorCode += module.exports.ErrorCode.NOSTRING_NAME;
|
||||
if (!desc || !(typeof desc === 'string' || desc instanceof String))
|
||||
errorCode += module.exports.ErrorCode.NOSTRING_DESC;
|
||||
if (isNaN(filterFloat(price)))
|
||||
errorCode += module.exports.ErrorCode.NOFLOAT_PRICE;
|
||||
return errorCode;
|
||||
}
|
||||
|
||||
module.exports.addValue = function(name, desc, price, nametag) {
|
||||
var errorCode = module.exports.checkValidity(name, desc, price);
|
||||
var action = module.exports.determineAction(nametag);
|
||||
if (action !== module.exports.MenuAction.CREATE) {
|
||||
errorCode += module.exports.ErrorCode.WRONG_ACTION;
|
||||
}
|
||||
if (!errorCode) {
|
||||
price = filterFloat(price);
|
||||
var position = splitNameTag(nametag, action);
|
||||
menuJSON[position.category][position.section]["items"].push({
|
||||
name: name,
|
||||
desc: desc,
|
||||
price: price
|
||||
});
|
||||
module.exports.saveJSON();
|
||||
}
|
||||
return errorCode;
|
||||
}
|
||||
|
||||
module.exports.updateValue = function(name, desc, price, nametag) {
|
||||
var errorCode = module.exports.checkValidity(name, desc, price);
|
||||
var action = module.exports.determineAction(nametag);
|
||||
if (action !== module.exports.MenuAction.UPDATE) {
|
||||
errorCode += module.exports.ErrorCode.WRONG_ACTION;
|
||||
}
|
||||
if (!errorCode) {
|
||||
price = filterFloat(price);
|
||||
var position = splitNameTag(nametag, action);
|
||||
menuJSON[position.category][position.section]["items"][position.id] = {
|
||||
name: name,
|
||||
desc: desc,
|
||||
price: price
|
||||
};
|
||||
module.exports.saveJSON();
|
||||
}
|
||||
return errorCode;
|
||||
}
|
||||
|
||||
module.exports.deleteValue = function(nametag) {
|
||||
var errorCode = module.exports.ErrorCode.SUCCESS;
|
||||
var action = module.exports.determineAction(nametag);
|
||||
if (action !== module.exports.MenuAction.DELETE) {
|
||||
errorCode += module.exports.ErrorCode.WRONG_ACTION;
|
||||
}
|
||||
if (!errorCode) {
|
||||
var position = splitNameTag(nametag, action);
|
||||
menuJSON[position.category][position.section]["items"].splice(position.id, 1);
|
||||
module.exports.saveJSON();
|
||||
}
|
||||
return errorCode;
|
||||
}
|
||||
|
||||
module.exports.getJSON = function() {
|
||||
return menuJSON;
|
||||
}
|
||||
|
||||
var filterFloat = function(value) {
|
||||
if(REGEX_FLOAT.test(value))
|
||||
return parseFloat(value);
|
||||
return NaN;
|
||||
}
|
||||
|
||||
var splitNameTag = function(nametag, action) {
|
||||
if (action) { // create, update & delete
|
||||
var splitArr = nametag.split("-");
|
||||
var result = {};
|
||||
if (splitArr[0] == "f") {
|
||||
result.category = "food";
|
||||
} else {
|
||||
result.category = "drinks";
|
||||
}
|
||||
result.section = parseInt(splitArr[1]);
|
||||
result.type = action;
|
||||
if (action == module.exports.MenuAction.CREATE) { // create
|
||||
result.id = null;
|
||||
} else { // update & delete
|
||||
result.id = parseInt(splitArr[2]);
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user