HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
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;
    }

};