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/controllers/sharesHistory.js
const moment = require('moment-timezone');

exports.install = function () {
    F.route('/sharesHistory', sharesIndex, ['get', 'authorize']);
    F.route('/sharesHistory/{restaurant}', restaurantInfo, ['get', 'authorize']);
    F.route('/sharesHistory/{restaurant}', updateCredits, ['post', 'authorize']);

};
function updateCredits(id) {
  const self=this;
  const params = {id: id, restaurant: {}};
  if (!parseInt(self.body.Credits)) {
    self.res.redirect(`/sharesHistory/${id}`);
  }
  params.restaurant.Credits = parseInt(self.body.Credits);
  F.model('restaurant').edit(params).then(function() {
    self.res.redirect(`/sharesHistory/${id}`);
  })

}
function restaurantInfo(id) {
  const params = {};
  const self = this;
  // Check if allowed access.
  if (self.repository.currentRestaurant && self.repository.currentRestaurant !== id && self.repository.type !== 'admin') {
    self.res.redirect('/');
  }
  F.model('restaurant').load(id).then(function (restaurant) {
      params.restaurant = restaurant;
      F.firebase('/Shares').orderByChild('Restaurant ID').equalTo(id).limitToLast(50).once('value')
      .then(shares => {
        params.shares = shares.val();
        params.restaurantActionCount = 0;
        params.restaurantFeedbackCount = 0;
        params.dishShareCount = 0;
        params.dishFeedbackCount = 0;
        params.restaurantShareCount = 0;
        let sorted = [];
        shares.forEach(s => {
          switch (params.shares[s.key]['Email Subject']) {
            case 'Restaurant share':
              params.restaurantShareCount++;
              break;
            case 'Restaurant action':
              params.restaurantActionCount++;
              break;
            case 'Restaurant feedback':
              params.restaurantFeedbackCount++;
              break;
            case 'Dish share':
              params.dishShareCount++;
              break;
            case 'Dish feedback':
              params.dishFeedbackCount++;
              break;
          }
          let item = s.val();
          item.key = s.key;
          item.Date = moment(item.Date, 'DD-MM-YYYY HH:mm')
          sorted.push(item);
        })

        params.shares = sorted.sort((i1,i2)=> {
          return i2.Date - i1.Date;
        })
        params.shares = params.shares.map(item => {
          item.Date = moment(item.Date).format('DD-MM-YYYY HH:mm');
          return item;
        })
        self.layout('/layouts/protected');
        self.view('/sharesHistory/restaurant', params);
      })
  }).catch(err => console.log(err));
}
function sharesIndex() {
    var self = this;
    var params = {};
    F.model('restaurant').list().then(function (snapshot) {
        params.list = [];
        if (self.repository.type === 'restaurant') {
          let data = snapshot.val()[self.repository.currentRestaurant];
          data.key = self.repository.currentRestaurant;
          params.list = [data];
        } else {
          snapshot.forEach(item => {
            let data = item.val();
            data.key = item.key;
            params.list.push(data);
          })
          params.list = params.list.sort((i1,i2) => {
            if (i1.Name.toLowerCase() < i2.Name.toLowerCase()) return -1;
            if (i1.Name.toLowerCase() === i2.Name.toLowerCase()) return 0;
            if (i1.Name.toLowerCase() > i2.Name.toLowerCase()) return 1;
          });
        }
        self.layout('/layouts/protected');
        self.view('/sharesHistory/index', params);
    });
};
function sharesHistory() {
    let self = this;
    let shares = {};
    let restaurants = {};
    F.model('restaurant').list().then(function (snapshot) {
        restaurants.list = {};
        if (self.repository.type === 'restaurant') {
          let restaurantName = snapshot.val()[self.repository.currentRestaurant].Name;
          F.firebase('/Shares').orderByChild('Restaurant name').equalTo(restaurantName).once('value')
          .then(list => {
              shares.list = list.val();
              self.layout('/layouts/protected');
              self.view('/sharesHistory/index', shares);
          })
        } else {
          F.model('share').list().then(function (list) {
              shares.list = list;
              self.layout('/layouts/protected');
              self.view('/sharesHistory/index', shares);
          });
        }


    });

};