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);
});
}
});
};