SubAccounts

This commit is contained in:
Paolo Arena
2020-05-10 21:07:51 +02:00
parent 7d0538f7ae
commit ae77637d33
17 changed files with 1535 additions and 499 deletions

View File

@@ -30,7 +30,7 @@ const _ = require('lodash');
const { User } = require('../models/user');
const { Nave } = require('../models/nave');
const { NavePersistente } = require('../models/navepersistente');
const { ExtraList } = require('../models/extralist');
// const { ExtraList } = require('../models/extralist');
const { Booking } = require('../models/booking');
const { Operator } = require('../models/operator');
const { Where } = require('../models/where');
@@ -179,8 +179,10 @@ function getTableByTableName(tablename) {
mytable = '';
if (tablename === 'users')
mytable = User;
else if (tablename === 'extralist')
mytable = ExtraList;
else if (tablename === 'tessitura')
mytable = Tessitura;
// else if (tablename === 'extralist')
// mytable = ExtraList;
else if (tablename === 'bookings')
mytable = Booking;
else if (tablename === 'operators')
@@ -280,7 +282,7 @@ router.post('/gettable', authenticate, (req, res) => {
async function checkIfSbloccatiRequisiti(idapp, allData, id) {
if (await Nave.findByIndOrder(idapp, allData.myuser.ind_order)) {
if (await Nave.checkIfNaveExist(idapp, allData.myuser.username)) {
// Se già sei dentro la Nave, allora sei OK
return true;
}
@@ -289,18 +291,18 @@ async function checkIfSbloccatiRequisiti(idapp, allData, id) {
const is7req = await User.isUserQualified7(idapp, allData.myuser.username);
const is9req = await User.isUserQualified9(idapp, allData.myuser.username);
const userlista = await ListaIngresso.findByIndOrder(idapp, allData.myuser.ind_order);
if (!userlista) {
const userlista = await ListaIngresso.getListaTessByUsername(idapp, allData.myuser.username);
if (userlista.length === 0) {
// Se non sono ancora dentro alla lista, allora controllo
if (!allData.precDataUser.is7req && is7req) {
// ORA HAI I 7 REQUISITI !
const msgtext = telegrambot.getCiao(idapp, allData.myuser.username, allData.myuser.lang) + tools.gettranslate('HAI_I_7_REQUISITI', allData.myuser.lang);
telegrambot.sendMsgTelegram(idapp, allData.myuser.username, msgtext, true); // Anche a STAFF
// const msgtext = telegrambot.getCiao(idapp, allData.myuser.username, allData.myuser.lang) + tools.gettranslate('HAI_I_7_REQUISITI', allData.myuser.lang);
// telegrambot.sendMsgTelegram(idapp, allData.myuser.username, msgtext, true); // Anche a STAFF
if (tools.isAbilitaNave(idapp)) {
// Aggiungilo alla ListaIngresso
ris = await ListaIngresso.addUserInListaIngresso(idapp, allData.myuser.ind_order, allData.myuser.lang, true, 1);
risingr = await ListaIngresso.addUserInListaIngresso(idapp, allData.myuser.username, allData.myuser.aportador_iniziale, allData.myuser.lang, true, false);
}
}
}
@@ -308,11 +310,12 @@ async function checkIfSbloccatiRequisiti(idapp, allData, id) {
if (!allData.precDataUser.is9req && is9req) {
// ORA HAI I 9 REQUISITI !
const msgtext = telegrambot.getCiao(idapp, allData.myuser.username, allData.myuser.lang) + tools.gettranslate('HAI_I_9_REQUISITI', allData.myuser.lang);
telegrambot.sendMsgTelegram(idapp, allData.myuser.username, msgtext, true); // Anche a STAFF
telegrambot.sendMsgTelegram(idapp, allData.myuser.username, msgtext, false); // Anche a STAFF
}
// CHECK APORTADOR SOLIDARIO:
if (!!allData.useraportador) {
/*
const is9reqAportador = await User.isUserQualified9(idapp, allData.myuser.aportador_solidario);
if (!allData.precDataAportador.is9req && is9reqAportador) {
@@ -320,6 +323,7 @@ async function checkIfSbloccatiRequisiti(idapp, allData, id) {
const msgtext = telegrambot.getCiao(idapp, allData.myuser.aportador_solidario, allData.useraportador.lang) + tools.gettranslate('HAI_I_9_REQUISITI', allData.useraportador.lang);
telegrambot.sendMsgTelegram(idapp, allData.myuser.aportador_solidario, msgtext, true); // Anche a STAFF
}
*/
}
}
@@ -385,8 +389,8 @@ router.patch('/chval', authenticate, async (req, res) => {
allData = {};
allData.myuser = await User.getUserById(idapp, id);
allData.precDataUser = await getInfoUser(idapp, allData.myuser.username);
allData.useraportador = await User.getUserByAportador(idapp, allData.myuser.aportador_solidario);
allData.precDataAportador = await getInfoUser(idapp, allData.myuser.aportador_solidario);
// allData.useraportador = await ListaIngresso.getUserByInvitante_Username(idapp, allData.myuser.aportador_solidario);
// allData.precDataAportador = await getInfoUser(idapp, allData.myuser.aportador_solidario);
}
}
@@ -401,7 +405,7 @@ router.patch('/chval', authenticate, async (req, res) => {
// Send Notification to the BOT
await telegrambot.sendMsgTelegram(idapp, mydata.notifBot.un, mydata.notifBot.txt);
addtext = '[Msg Inviato a ' + mydata.notifBot.un + ']:' + '\n' + mydata.notifBot.txt;
await telegrambot.sendMsgTelegramToTheManagers(idapp, addtext);
await telegrambot.sendMsgTelegramToTheManagers(idapp, addtext, true);
}
if (mydata.table === 'users') {
@@ -412,12 +416,26 @@ router.patch('/chval', authenticate, async (req, res) => {
if (mydata.table === 'users') {
if ('aportador_solidario' in fieldsvalue) {
ind_order_ingr = mydata.ind_order_ingr;
// SERVE SE CI METTO LE MINUSCOLE/MAIUSCOLE SBAGLIATE in invitante_username!
const myuserfound = await User.findByUsername(idapp, fieldsvalue.aportador_solidario, false);
if (!!myuserfound) {
if (!!myuserfound._id && !myuserfound.deleted) {
fieldsvalue.aportador_solidario = await User.getUsernameById(idapp, myuserfound._id);
const aportador = await User.getUsernameById(idapp, myuserfound._id);
fieldsvalue.aportador_solidario = aportador;
//Aggiorna record !
await mytable.findByIdAndUpdate(id, { $set: fieldsvalue });
const myfirstrec = await ListaIngresso.findOne({ username: rec.username, ind_order: ind_order_ingr });
if (!!myfirstrec) {
if (!!myfirstrec._id && !myfirstrec.deleted) {
let fieldsv2 = {
invitante_username: aportador
};
//Aggiorna record !
const ris = await ListaIngresso.findByIdAndUpdate(myfirstrec._id.toString(), { $set: fieldsv2 });
}
}
}
} else {
res.send({ code: server_constants.RIS_CODE_ERR, msg: 'Non aggiornato' });
@@ -427,6 +445,33 @@ router.patch('/chval', authenticate, async (req, res) => {
}
}
if (mydata.table === 'listaingressos') {
if ('invitante_username' in fieldsvalue) {
// SERVE SE CI METTO LE MINUSCOLE/MAIUSCOLE SBAGLIATE in invitante_username!
const myuserfound = await User.findByUsername(idapp, fieldsvalue.invitante_username, false);
if (!!myuserfound) {
if (!!myuserfound._id && !myuserfound.deleted) {
fieldsvalue.invitante_username = await User.getUsernameById(idapp, myuserfound._id);
//Aggiorna record !
const ris = await mytable.findByIdAndUpdate(id, { $set: fieldsvalue });
if (!!ris) {
/*let fieldsv2 = {
aportador_solidario: fieldsvalue.invitante_username
};
//Aggiorna record !
await User.findByIdAndUpdate(myuserfound._id, { $set: fieldsv2 });
*/
}
}
} else {
// res.send({ code: server_constants.RIS_CODE_ERR, msg: 'Non aggiornato' });
// res.status(400).send();
// return false;
}
}
}
if (tools.ModificheConsentite(mydata.table, fieldsvalue)) {
let msg = '';
if (mydata.table === 'users') {
@@ -463,12 +508,15 @@ router.patch('/chval', authenticate, async (req, res) => {
tools.mylogserr('Error patch USER: ', e.message);
res.status(400).send();
})
});
router.patch('/callfunz', authenticate, async (req, res) => {
// const idapp = req.body.idapp;
const id = req.body.data.id;
const ind_order = req.body.data.ind_order;
const username = req.body.data.username;
const idapp = req.body.idapp;
const mydata = req.body.data;
@@ -486,7 +534,7 @@ router.patch('/callfunz', authenticate, async (req, res) => {
}
}
const myuser = await User.findOne({ idapp, ind_order });
const myuser = await User.findOne({ idapp, username });
let rimosso = 0;
@@ -518,8 +566,12 @@ router.patch('/callfunz', authenticate, async (req, res) => {
}
if (!!myuser) {
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// CONTROLLARE !!!
// ++Todo: Controllare che sia corretto che lo nascondo !!!
// Metti campo 'delete': true su ListaIngresso
olduseringresso = await ListaIngresso.findOne({ idapp, ind_order: myuser.ind_order });
olduseringresso = await ListaIngresso.findOne({ idapp, ind_order: old_ind_order });
if (!!olduseringresso) {
let fieldsvalue = {
deleted: true
@@ -553,13 +605,13 @@ router.patch('/callfunz', authenticate, async (req, res) => {
} else {
if (mydata.notifBot && !!navepersistente.link_chat) {
// Send Notification to the BOT
let messaggio = 'Sei stato Spostato in una Nuova Nave !';
let messaggio = tools.get__('SPOSTATO', req.user.lang);
if (!!navepersistente.date_start) {
messaggio += tools.ACAPO + ' data di Partenza della Nave: ' + tools.getstrDateLong(navepersistente.date_start) + tools.ACAPO;
messaggio += tools.ACAPO + tools.get__('DATA_PART_NAVE', req.user.lang) + tools.getstrDateLong(navepersistente.date_start) + tools.ACAPO;
}
if (!!navepersistente.link_chat) {
messaggio += tools.ACAPO + 'Entra nella Gift Chat: ' + navepersistente.link_chat + tools.ACAPO;
messaggio += tools.ACAPO + tools.get__('ENTRA_GIFT_CHAT', req.user.lang) + navepersistente.link_chat + tools.ACAPO;
}
const myplacca = await Nave.getNavePos(idapp, navepersistente.riga, navepersistente.col);
@@ -586,21 +638,28 @@ router.patch('/callfunz', authenticate, async (req, res) => {
}
} else if (mydata.myfunc === shared_consts.CallFunz.AGGIUNGI_NUOVO_IMBARCO) {
// Ottieni il prossimo Numero di Tessitura
let num_tess = await Nave.getNextNumTess(idapp, ind_order);
//let num_tess = await Nave.getNextNumTess(idapp, ind_order);
const num_tess = 1;
/*
let listaingr = await ListaIngresso.find({ idapp, ind_order }).sort({ num_tess: 1 });
const trovato = listaingr.find((rec) => rec.num_tess === num_tess);
if (trovato) {
num_tess = listaingr.slice(-1)[0].num_tess + 2;
}
*/
ris = await ListaIngresso.addUserInListaIngresso(idapp, ind_order, myuser.lang, true, num_tess);
// metti l'invitante inizialmente a Te stesso !
const invitante_username = req.body.data.invitante_username;
arrimbarchi = await ListaIngresso.findAllByIndOrder(idapp, ind_order);
ris = await ListaIngresso.addUserInListaIngresso(idapp, username, invitante_username, myuser.lang, true, true);
arrimbarchi = await ListaIngresso.findAllByUsername(idapp, username);
return res.send({ code: server_constants.RIS_CODE_OK, arrimbarchi });
} else if (mydata.myfunc === shared_consts.CallFunz.CANCELLA_IMBARCO) {
await ListaIngresso.remove({ idapp, ind_order, num_tess: mydata.data.num_tess });
await ListaIngresso.remove({ idapp, username, ind_order });
return res.send({ code: server_constants.RIS_CODE_OK });