File: D:/HostingSpaces/RImmers2/portal.photomenu.nl/wwwroot/models/menu.js
exports.id = 'menu';
exports.list = function () {
return new Promise(function (resolve) {
F.firebase('/Menu').once('value').then(function (snapshot) {
resolve(snapshot);
});
});
};
exports.loadDishes = function (id, type) {
return new Promise(function (resolve) {
if (type) {
F.firebase('/Menu/' + id + '/Dishes').orderByChild('Category').equalTo(type).once('value').then(function (snapshot) {
resolve(snapshot.val());
});
} else {
F.firebase('/Menu/' + id + '/Dishes').orderByChild('Category').once('value').then(function (snapshot) {
resolve(snapshot.val());
});
}
});
};
exports.loadDishesWithMenu = function (id, type) {
return new Promise(function (resolve) {
if (type) {
F.firebase('/Menu/' + id + '/Dishes').orderByChild('Category').equalTo(type).once('value').then(function (snapshot) {
resolve({menu: id, dishes: snapshot.val()});
});
} else {
F.firebase('/Menu/' + id + '/Dishes').orderByChild('Category').once('value').then(function (snapshot) {
resolve({menu: id, dishes: snapshot.val()});
});
}
});
};
exports.loadDish = function (menu, id) {
return new Promise(function (resolve) {
F.firebase('/Menu/' + menu + '/Dishes/' + id).once('value').then(function (snapshot) {
resolve(snapshot.val());
});
});
};
exports.createDish = function (menuID, data) {
delete data.id;
return new Promise(function (resolve, reject) {
F.firebase('/Menu/' + menuID + '/Dishes').orderByChild('Category').equalTo(data.Category).once('value').then(function(dishes) {
let maxOrder = -10;
dishes.forEach(dish => {
let currentOrder = dish.val()['Sort order'];
if (currentOrder > maxOrder) maxOrder = currentOrder;
})
data['Sort order'] = maxOrder + 10;
return F.firebase('/Menu/' + menuID + '/Dishes').push(data).then(function (snapshot) {
resolve(snapshot);
})
}).catch(err => reject(err));
});
};
exports.updateDish = function (menuID, dishID, data) {
delete data.id;
return new Promise(function (resolve) {
F.firebase('/Menu/' + menuID + '/Dishes/' + dishID).once('value').then(function (snapshot) {
const oldData = snapshot.val();
data.Image = data.Image === '' ? oldData.Image : data.Image || oldData.Image;
F.firebase('/Menu/' + menuID + '/Dishes/'+dishID).update(data).then(function (snapshot){
resolve(snapshot);
}).catch(err => reject(err));;
});
});
};
exports.delete = function(menuID, dishID) {
return new Promise(function (result) {
F.firebase('/Menu/' + menuID + '/Dishes/').child(dishID).remove().then(function(){
result();
});
});
};
exports.format = function (i, val) {
switch (i) {
case 'Vegetarian':
case 'Inactive':
return (val == 'true')?true:false;
case 'Sort order':
case 'Number of times shown in detail':
case 'Number of times shown in detail android':
case 'Number of times shown in overview':
case 'Number of times shown in overview android':
case 'Number of times shown in overview iOS':
case 'Share button clicked Android':
return parseInt(val);
defaut:
return val;
}
};