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'); const { Nave } = require('../models/nave'); const { NavePersistente } = require('../models/navepersistente'); const mongoose = require('mongoose'); const Subscription = mongoose.model('subscribers'); const telegrambot = require('../telegram/telegrambot'); const _ = require('lodash'); const { ObjectID } = require('mongodb'); router.post('/', authenticate, async (req, res) => { const idapp = req.body.idapp; let username = req.body.username; 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; // } // } 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) res.send({ dashboard }); else res.status(400).send(e); }); router.post('/msgnave', authenticate, async (req, res) => { const idapp = req.body.idapp; let mydata = req.body; try { let ris = null; if (mydata.tipomsg === tools.TipoMsg.SEND_MSG_SINGOLO) ris = await telegrambot.sendMsgTelegram(idapp, mydata.username, mydata.msgpar1, true); // Anche a STAFF else 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 }); }catch (e) { res.status(400).send(e); } }); router.post('/getnavi', authenticate, async (req, res) => { const idapp = req.body.idapp; let arrnavi = []; let navi_partenza = []; let test = false; for (let indriga = 1; indriga <= 4; indriga++) { navi_partenza.push(await Nave.getPrimaNaveByRiga(idapp, indriga)); } if (test) { let indriga = 7; let indcol = 49; arrnavi.push({ riga: indriga, col: indcol }); } else { for (let indriga = 4; indriga <= 9; indriga++) { navi_partenza.push(await Nave.getPrimaNaveByRiga(idapp, indriga)); let numcol = Math.pow(2, indriga - 1); let quanti = Math.ceil(numcol / 8); for (let indquanti = 1; indquanti <= quanti; indquanti++) { arrnavi.push({ riga: indriga, col: (indquanti * 8) - 7 }); } } } for (nave of arrnavi) { nave.rec = await Nave.getNaveByRigaCol(idapp, nave.riga, nave.col); } 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; const ricalcola = req.body.ricalcola; let arrnavi = await NavePersistente.findAllIdApp(idapp); let test = false; //arrnavi.push({ riga: indriga, col: indcol, rigadon: indriga + 3, coldon: (indcol * 8) - 7 }); 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); } } 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++; } } else { arrnavi = await NavePersistente.findAllIdApp(idapp); for (nave of arrnavi) { nave._doc.rec = await Nave.getNaveByRigaCol(idapp, nave.riga1don, nave.col1don); } } ris = { arrnavi }; if (ris) res.send({ code: server_constants.RIS_CODE_OK, ris }); else res.status(400).send(e); } catch (e) { console.log(e) } }); module.exports = router;