Files
freeplanet_serverside/src/server/router/dashboard_router.js

233 lines
7.1 KiB
JavaScript
Raw Normal View History

2019-12-31 00:44:53 +01:00
const express = require('express');
const router = express.Router();
const tools = require('../tools/general');
const server_constants = require('../tools/server_constants');
const { authenticate } = require('../middleware/authenticate');
const { User } = require('../models/user');
2020-03-21 10:28:26 +01:00
const { Nave } = require('../models/nave');
2020-03-25 18:26:51 +01:00
const { NavePersistente } = require('../models/navepersistente');
2020-03-21 10:28:26 +01:00
2019-12-31 00:44:53 +01:00
const mongoose = require('mongoose');
const Subscription = mongoose.model('subscribers');
const telegrambot = require('../telegram/telegrambot');
2019-12-31 00:44:53 +01:00
const _ = require('lodash');
const { ObjectID } = require('mongodb');
router.post('/', authenticate, async (req, res) => {
const idapp = req.body.idapp;
let username = req.body.username;
2019-12-31 00:44:53 +01:00
if ((!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm)) && (username) !== req.user.username) {
// If without permissions, exit
return res.status(404).send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' });
}
let aportador_solidario = req.user.aportador_solidario;
let aportador_solidario_nome_completo = req.user.aportador_solidario_nome_completo;
// if (User.isAdmin(req.user.perm) || User.isManager(req.user.perm)) {
// const recuser = await User.findByUsername(idapp, username);
// if (recuser) {
// aportador_solidario_nome_completo = recuser.name + ' ' + recuser.surname;
// }
// }
2019-12-31 00:44:53 +01:00
if (username) {
aportador_solidario = await User.getAportadorSolidarioByUsername(idapp, username);
aportador_solidario_nome_completo = await User.getNameSurnameByUsername(idapp, username);
} else {
username = req.user.username;
}
const dashboard = await User.getDashboard(idapp, aportador_solidario, username, aportador_solidario_nome_completo);
if (dashboard)
2019-12-31 00:44:53 +01:00
res.send({ dashboard });
else
2019-12-31 00:44:53 +01:00
res.status(400).send(e);
});
router.post('/msgnave', authenticate, async (req, res) => {
const idapp = req.body.idapp;
let mydata = req.body;
2020-03-25 09:25:31 +01:00
try {
let ris = null;
2020-04-07 14:34:29 +02:00
if (mydata.tipomsg === tools.TipoMsg.SEND_MSG_SINGOLO) {
let mymsg = '';
if (!!mydata.username_mitt) {
mymsg = '[' + tools.getres__('MSG_SEND_FROM', res) + ' ' + mydata.username_mitt + ']:' + tools.ACAPO;
}
mymsg += mydata.msgpar1;
ris = await telegrambot.sendMsgTelegram(idapp, mydata.username, mymsg, true, mydata.username_mitt); // Anche a STAFF
} else
2020-03-25 09:25:31 +01:00
ris = await telegrambot.sendMsgTelegramToNave(idapp, mydata);
if (ris)
res.send({ code: server_constants.RIS_CODE_OK, ris });
else
res.send({ code: server_constants.RIS_CODE_ERR, ris: null });
2020-04-07 14:34:29 +02:00
} catch (e) {
2020-03-21 10:28:26 +01:00
res.status(400).send(e);
2020-03-25 09:25:31 +01:00
}
});
2020-04-07 14:34:29 +02:00
router.post('/getnave', authenticate, async (req, res) => {
2020-03-21 10:28:26 +01:00
const idapp = req.body.idapp;
2020-04-07 14:34:29 +02:00
const riga = req.body.riga;
const col = req.body.col;
const riga1don = req.body.riga1don;
const col1don = req.body.col1don;
const ind_order = req.body.ind_order;
const nave = await NavePersistente.findByRigaCol(idapp, riga, col);
if (!!nave) {
nave._doc.rec = await Nave.getNaveByRigaCol(idapp, riga1don, col1don);
if (ind_order >= 0)
nave._doc.ind_order = ind_order;
nave._doc.listadonatoridelsognatore = await Nave.getDonatoridelSognatore(idapp, riga1don, col1don);
}
2020-03-21 10:28:26 +01:00
2020-04-07 14:34:29 +02:00
const navi_partenza = await NavePersistente.findAllIdApp(idapp);
2020-03-21 10:28:26 +01:00
2020-04-07 14:34:29 +02:00
ris = { nave, navi_partenza };
2020-03-21 10:28:26 +01:00
2020-04-07 14:34:29 +02:00
if (ris)
res.send({ code: server_constants.RIS_CODE_OK, ris });
else
res.status(400).send(e);
2020-03-21 10:28:26 +01:00
2020-04-07 14:34:29 +02:00
});
2020-03-21 10:28:26 +01:00
2020-04-07 14:34:29 +02:00
router.post('/getnavi', authenticate, async (req, res) => {
const idapp = req.body.idapp;
2020-03-21 10:28:26 +01:00
2020-04-07 14:34:29 +02:00
let arrnavi = await NavePersistente.findAllIdApp(idapp);
2020-03-21 10:28:26 +01:00
for (nave of arrnavi) {
2020-04-07 14:34:29 +02:00
//nave.rec = await Nave.getNaveByRigaCol(idapp, nave.riga, nave.col);
nave._doc.rec = {
donatore: {},
mediatore: null
};
let riganave = nave.riga;
let colnave = nave.col;
// if (riganave < 4) {
// riganave = 4;
// colnave = 1;
// }
// nave._doc.rec.donatore.navepersistente = await NavePersistente.findByRigaColByDonatore(idapp, riganave, colnave, 0);
nave._doc.rec.donatore.navepersistente = await NavePersistente.findOne({ idapp, riga: riganave, col: colnave });
2020-03-21 10:28:26 +01:00
}
2020-03-31 20:34:24 +02:00
const navi_partenza = await NavePersistente.findAllIdApp(idapp);
2020-03-21 10:28:26 +01:00
ris = { arrnavi, navi_partenza };
if (ris)
res.send({ code: server_constants.RIS_CODE_OK, ris });
else
res.status(400).send(e);
});
router.post('/getdoninavi', authenticate, async (req, res) => {
const idapp = req.body.idapp;
2020-03-25 18:26:51 +01:00
const ricalcola = req.body.ricalcola;
2020-03-21 10:28:26 +01:00
2020-03-25 18:26:51 +01:00
let arrnavi = await NavePersistente.findAllIdApp(idapp);
2020-03-21 10:28:26 +01:00
let test = false;
2020-03-25 18:26:51 +01:00
//arrnavi.push({ riga: indriga, col: indcol, rigadon: indriga + 3, coldon: (indcol * 8) - 7 });
2020-03-21 10:28:26 +01:00
2020-03-25 18:26:51 +01:00
try {
if (ricalcola) {
let index = 1;
for (nave of arrnavi) {
nave.rec = await Nave.getNaveByRigaCol(idapp, nave.riga1don, nave.col1don);
/*mypos = {
riga: nave.riga,
col: nave.col,
numup: 3,
};
tools.getRigaColByPosUp(mypos);*/
nave.index = index;
nave.DoniAttesaDiConferma = 0;
nave.DoniMancanti = 0;
nave.DoniConfermati = 0;
nave.tutor_namesurname = await User.getNameSurnameByUsername(idapp, nave.tutor);
if (!!nave.rec) {
if (!!nave.rec.donatore) {
nave.DoniAttesaDiConferma = nave.rec.donatore.arrdonatori.filter((rec) => (!!rec.date_made_gift && !rec.made_gift && !(rec.ind_order === nave.rec.donatore.recmediatore.ind_order && rec.num_tess === 2))).reduce((sum, item) => sum + 1, 0);
nave.DoniMancanti = nave.rec.donatore.arrdonatori.filter((rec) => (!rec.made_gift && !(rec.ind_order === nave.rec.donatore.recmediatore.ind_order && rec.num_tess === 2))).reduce((sum, item) => sum + 1, 0);
nave.DoniConfermati = nave.rec.donatore.arrdonatori.filter((rec) => rec.made_gift && !(rec.ind_order === nave.rec.donatore.recmediatore.ind_order && rec.num_tess === 2)).reduce((sum, item) => sum + 1, 0);
}
2020-03-21 10:28:26 +01:00
}
2020-03-25 18:26:51 +01:00
const fieldsvalue = {
DoniAttesaDiConferma: nave.DoniAttesaDiConferma,
DoniMancanti: nave.DoniMancanti,
DoniConfermati: nave.DoniConfermati,
tutor_namesurname: nave.tutor_namesurname,
};
const risu = await NavePersistente.findOneAndUpdate({ _id: nave._id }, { $set: fieldsvalue }, { new: false });
nave._doc.rec = nave.rec;
index++;
2020-03-21 10:28:26 +01:00
}
2020-03-25 18:26:51 +01:00
} else {
arrnavi = await NavePersistente.findAllIdApp(idapp);
for (nave of arrnavi) {
nave._doc.rec = await Nave.getNaveByRigaCol(idapp, nave.riga1don, nave.col1don);
2020-03-21 10:28:26 +01:00
}
}
ris = { arrnavi };
if (ris)
res.send({ code: server_constants.RIS_CODE_OK, ris });
else
res.status(400).send(e);
} catch (e) {
console.log(e)
}
});
2020-03-31 20:34:24 +02:00
router.post('/getdata', authenticate, async (req, res) => {
const idapp = req.body.idapp;
const data = req.body.data;
try {
const mystr = await Nave.getNavePos(idapp, parseInt(data.riga), parseInt(data.col));
if (mystr)
res.send({ code: server_constants.RIS_CODE_OK, ris: mystr });
else
res.status(400).send(e);
} catch (e) {
console.log(e)
}
});
2020-03-21 10:28:26 +01:00
2019-12-31 00:44:53 +01:00
module.exports = router;