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

@@ -11,7 +11,7 @@ module.exports = {
try {
if (tablename === 'users') {
await ListaIngresso.deleteUserInListaIngresso(rec.idapp, rec.ind_order);
await ListaIngresso.deleteUserInListaIngresso(rec.idapp, rec.username);
// Controlla se aveva invitati, li regala a quello sopra
const arrap = await User.getDownlineByUsername(rec.idapp, rec.username);

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

View File

@@ -17,7 +17,7 @@ const _ = require('lodash');
const { ObjectID } = require('mongodb');
const { ExtraList } = require('../models/extralist');
// const { ExtraList } = require('../models/extralist');
router.post('/load', async (req, res) => {
const idapp = req.body.idapp;
@@ -32,7 +32,7 @@ router.post('/load', async (req, res) => {
num_teleg_attivo: await User.getUsersTelegramAttivo(idapp),
num_teleg_pending: await User.getUsersTelegramPending(idapp),
// num_qualificati: await User.getNumUsersQualified(idapp, 2),
num_requisiti: await User.getNumUsersQualified(idapp, 0),
// num_requisiti: await User.getNumUsersQualified(idapp, 0),
num_modalita_pagamento: await User.getnumPaymentOk(idapp),
num_part_zoom: await User.getUsersZoom(idapp),
num_part_accepted: await User.getSaw_and_Accepted(idapp),

View File

@@ -5,7 +5,7 @@ const { User } = require('../models/user');
const { Nave } = require('../models/nave');
const { NavePersistente } = require('../models/navepersistente');
const { ListaIngresso } = require('../models/listaingresso');
const { ExtraList } = require('../models/extralist');
// const { ExtraList } = require('../models/extralist');
const { ObjectID } = require('mongodb');
const sendemail = require('../sendemail');
@@ -126,16 +126,16 @@ router.post('/', async (req, res) => {
// }
const lastuser = await User.getLastUser(user.idapp);
const lastextra = await ExtraList.getLastUser(user.idapp);
// const lastextra = await ExtraList.getLastUser(user.idapp);
let lastindorder = 0;
if (lastuser) {
lastindorder = lastuser.ind_order;
}
if (lastextra) {
if (lastextra.ind_order > lastindorder)
lastindorder = lastextra.ind_order;
}
//if (lastextra) {
// if (lastextra.ind_order > lastindorder)
// lastindorder = lastextra.ind_order;
//}
if (lastindorder > 0)
user.ind_order = lastindorder + 1;
@@ -210,9 +210,9 @@ router.post('/', async (req, res) => {
user.perm = shared_consts.Permissions.Manager + shared_consts.Permissions.Admin;
}
const useraportador = await ExtraList.findByIndOrder(user.idapp, user.aportador_solidario_ind_order);
if (useraportador)
user.aportador_solidario = useraportador.username;
// const useraportador = await ExtraList.findByIndOrder(user.idapp, user.aportador_solidario_ind_order);
// if (useraportador)
// user.aportador_solidario = useraportador.username;
}
}
@@ -263,6 +263,10 @@ router.get('/:idapp/:username', async (req, res) => {
var username = req.params.username;
const idapp = req.params.idapp;
// if (username === 'pippo') {
// return res.status(200).send();
// }
await User.findByUsername(idapp, username, false).then((user) => {
if (!user) {
return res.status(404).send();
@@ -406,7 +410,7 @@ router.post('/import_extralist', async (req, res) => {
idapp = req.body.idapp;
locale = req.body.locale;
const ris = await ExtraList.ImportData(locale, idapp, strdata);
// const ris = await ExtraList.ImportData(locale, idapp, strdata);
console.log('ris', ris);
res.send(ris);
@@ -482,6 +486,51 @@ router.post('/dbop', authenticate, async (req, res) => {
ris = { mystr };
} else if (mydata.dbop === 'visuNaviUtentiEliminati') {
ris = await Nave.visuNaviUtentiEliminati(idapp);
} else if (mydata.dbop === 'creaTessituraeConv') {
ris = await ListaIngresso.creaTessituraeConv(idapp);
ris = { mystr };
} else if (mydata.dbop === 'convNaviTessinListaIngressoRec') {
let num = 0;
const arrnavitess = await Nave.find({idapp, num_tess: { $gte: 3 } });
for (const recnave of arrnavitess) {
if (recnave.num_tess === 3 || recnave.num_tess === 5 || recnave.num_tess === 7) {
const ind_order = recnave.ind_order;
// Prima controlla se ho già 2 record dello stesso ind_order, allora non lo faccio:
const arringr = await ListaIngresso.find({idapp, ind_order});
let dafare = true;
if (arringr.length > 0) {
const arringrtest = await ListaIngresso.find({idapp, ind_order}).distinct('num_tess');
if (arringr.length !== arringrtest.length){
dafare = false; // Ci sono 2 o piu record! pertanto probabilmente l'ho già fatto!
}
}
if (dafare) {
const user = await User.findByOldOrder(idapp, ind_order);
if (!!user) {
let note = recnave.num_tess;
// Crea record ListaIngresso
const newrecingr = await ListaIngresso.addUserInListaIngresso(idapp, user.username, user.username, user.lang, false, true, recnave.created, note, true);
const fieldsvalue = {
ind_order: newrecingr.ind_order,
num_tess: 1,
};
// Aggiorna la nave con l'Ind_order nuovo e il num_tess a 1
await Nave.findOneAndUpdate({ _id: recnave._id }, { $set: fieldsvalue }, { new: false });
num++;
}
}
}
}
ris = { num };
} else if (mydata.dbop === 'initListaIngresso') {
// const aaa = await User.updateMany({ idapp }, { $set: { 'profile.nationality': 'IT' } });
@@ -595,10 +644,18 @@ router.post('/dbop', authenticate, async (req, res) => {
let num = 0;
lastrec = await User.find({ idapp }).sort({ _id: -1 }).limit(1);
let last = 1;
if (lastrec) {
last = lastrec[0].ind_order;
}
if (!last) {
last = 1;
}
for (let ind = 0; ind < 100; ind++) {
let myuser = new User();
myuser._id = new ObjectID();
myuser.ind_order = lastrec[0].ind_order + ind + 1;
myuser.ind_order = last + ind + 1;
myuser.idapp = idapp;
myuser.password = "$2a$12$DEaX1h5saTUVC43f7kubyOAlah1xHDgqQTfSIux0.RFDT9WGbyCaG";
myuser.lang = 'it';
@@ -659,7 +716,7 @@ router.post('/dbop', authenticate, async (req, res) => {
const user = await User.getUserShortDataByUsername(idapp, mydata.username);
if (user) {
arrnavi = await Nave.getArrPosizioniByIndOrder(idapp, user.ind_order);
arrnavi = await Nave.getArrPosizioniByUsername(idapp, user.username);
for (let mynave of arrnavi) {
mynave._doc.rec = await Nave.getNaveByRigaCol(idapp, mynave.riga, mynave.col);