- Requirements
- Send Msg to Passeggeri
This commit is contained in:
Paolo Arena
2020-03-10 21:44:14 +01:00
parent 26715cda44
commit fbc85ce06a
37 changed files with 2392 additions and 673 deletions

View File

@@ -1,14 +1,36 @@
var mongoose = require('mongoose');
const Subscription = mongoose.model('subscribers');
const { ListaIngresso } = require('../../models/listaingresso');
const { User } = require('../../models/user');
const telegrambot = require('../../telegram/telegrambot');
module.exports = {
doOtherThingsAfterDeleted: async function (tablename, rec) {
try {
if (tablename === 'users') {
await ListaIngresso.deleteUserInListaIngresso(rec.idapp, rec.ind_order);
// Controlla se aveva invitati, li regala a quello sopra
const arrap = await User.getDownlineByUsername(rec.idapp, rec.username);
for (let user of arrap) {
await User.findOneAndUpdate({
idapp: rec.idapp,
username: user.username
}, { $set: { aportador_solidario: rec.aportador_solidario } }, { new: false });
let msg = 'Spostato ' + user.name + ' ' + user.surname + ' sotto di ' + rec.aportador_solidario;
telegrambot.sendMsgTelegramToTheManagers(idapp, msg);
}
// Delete also all the subscribers record of this User
return Subscription.deleteOne({ userId: rec._id })
}
} catch (e) {
console.error(e);
return false
}
return true;

View File

@@ -12,6 +12,8 @@ const { User } = require('../models/user');
const mongoose = require('mongoose');
const Subscription = mongoose.model('subscribers');
const telegrambot = require('../telegram/telegrambot');
const _ = require('lodash');
const { ObjectID } = require('mongodb');
@@ -49,4 +51,14 @@ router.post('/', authenticate, async (req, res) => {
});
router.post('/msgnave', authenticate, async (req, res) => {
const idapp = req.body.idapp;
let mydata = req.body;
const ris = await telegrambot.sendMsgTelegramToNave(idapp, mydata);
res.send({ code: server_constants.RIS_CODE_OK, ris });
});
module.exports = router;

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -12,6 +12,7 @@ const sendemail = require('../sendemail');
const { authenticate, authenticate_noerror } = require('../middleware/authenticate');
const { ObjectID } = require('mongodb');
const { ListaIngresso } = require('../models/listaingresso');
const mongoose = require('mongoose');
const cfgserver = mongoose.model('cfgserver');
@@ -27,6 +28,7 @@ if (!fs.existsSync(folder)) {
const _ = require('lodash');
const { User } = require('../models/user');
const { Nave } = require('../models/nave');
const { ExtraList } = require('../models/extralist');
const { Booking } = require('../models/booking');
const { Operator } = require('../models/operator');
@@ -52,6 +54,15 @@ const tools = require('../tools/general');
const server_constants = require('../tools/server_constants');
const actions = require('./api/actions');
UserCost = {
FIELDS_REQUISITI: ['verified_email',
'profile.teleg_id',
'profile.saw_zoom_presentation',
'profile.saw_and_accepted',
'profile.email_paypal',
'profile.my_dream',
'profile.paymenttypes']
};
router.post(process.env.LINKVERIF_REG, (req, res) => {
const body = _.pick(req.body, ['idapp', 'idlink']);
@@ -77,7 +88,10 @@ router.post(process.env.LINKVERIF_REG, (req, res) => {
user.lasttimeonline = new Date();
user.save().then(() => {
//console.log("TROVATOOOOOO!");
res.send({ code: server_constants.RIS_CODE_EMAIL_VERIFIED, msg: tools.getres__('EMAIL', res) + ' ' + tools.getres__('VERIF', res) });
res.send({
code: server_constants.RIS_CODE_EMAIL_VERIFIED,
msg: tools.getres__('EMAIL', res) + ' ' + tools.getres__('VERIF', res)
});
});
}
}
@@ -93,7 +107,7 @@ router.post(process.env.LINKVERIF_REG, (req, res) => {
router.post(process.env.LINK_REQUEST_NEWPASSWORD, (req, res) => {
const body = _.pick(req.body, ['idapp', 'email']);
const idapp = body.idapp;
const email = body.email;
const email = body.email.toLowerCase().trim();
console.log("POST " + process.env.LINK_REQUEST_NEWPASSWORD + " idapp= " + idapp + " email = " + email);
User.findByEmail(idapp, email).then(async (user) => {
@@ -124,7 +138,7 @@ router.post(process.env.LINK_REQUEST_NEWPASSWORD, (req, res) => {
router.post(process.env.LINK_UPDATE_PWD, (req, res) => {
const body = _.pick(req.body, ['idapp', 'email', 'tokenforgot', 'password']);
const idapp = body.idapp;
const email = body.email;
const email = body.email.toLowerCase().trim();
const tokenforgot = body.tokenforgot;
const password = body.password;
const msg = "Richiesta Nuova Password: idapp= " + idapp + " email = " + email;
@@ -198,6 +212,10 @@ function getTableByTableName(tablename) {
mytable = Permission;
else if (tablename === 'mailinglist')
mytable = MailingList;
else if (tablename === 'navi')
mytable = Nave;
else if (tablename === 'listaingressos')
mytable = ListaIngresso;
return mytable
}
@@ -255,8 +273,63 @@ router.post('/gettable', authenticate, (req, res) => {
});
async function checkIfSbloccatiRequisiti(idapp, allData, id) {
router.patch('/chval', authenticate, (req, res) => {
if (await Nave.findByIndOrder(idapp, allData.myuser.ind_order)) {
// Se già sei dentro la Nave, allora sei OK
return true;
}
// Controlla se Sblocca i 7 requisiti
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) {
// 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
if (tools.isAbilitaNave(idapp)) {
// Aggiungilo alla ListaIngresso
ris = await ListaIngresso.addUserInListaIngresso(idapp, allData.myuser.ind_order, allData.myuser.lang, true, 1);
}
}
}
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
}
// CHECK APORTADOR SOLIDARIO:
if (!!allData.useraportador) {
const is9reqAportador = await User.isUserQualified9(idapp, allData.myuser.aportador_solidario);
if (!allData.precDataAportador.is9req && is9reqAportador) {
// ORA HAI I 9 REQUISITI !
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.useraportador.username, msgtext, true); // Anche a STAFF
}
}
}
async function getInfoUser(idapp, username) {
return {
username,
is7req: await User.isUserQualified7(idapp, username),
is9req: await User.isUserQualified9(idapp, username),
}
}
router.patch('/chval', authenticate, async (req, res) => {
// const idapp = req.body.idapp;
const id = req.body.data.id;
const idapp = req.body.idapp;
@@ -265,7 +338,7 @@ router.patch('/chval', authenticate, (req, res) => {
const mytable = getTableByTableName(mydata.table);
const fieldsvalue = mydata.fieldsvalue;
tools.mylogshow('PATCH CHVAL: ', id, fieldsvalue);
// tools.mylogshow('PATCH CHVAL: ', id, fieldsvalue);
// If I change my record...
if ((!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm)) && !(req.user._id.toString() === id) && !tools.ModificheConsentite(mydata.table, fieldsvalue)) {
@@ -273,7 +346,20 @@ router.patch('/chval', authenticate, (req, res) => {
return res.status(404).send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' });
}
mytable.findByIdAndUpdate(id, { $set: fieldsvalue }).then(async (rec) => {
const camporequisiti = UserCost.FIELDS_REQUISITI.includes(Object.keys(fieldsvalue)[0]);
let allData = {};
if (mydata.table === 'users') {
if (camporequisiti) {
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);
}
}
await mytable.findByIdAndUpdate(id, { $set: fieldsvalue }).then(async (rec) => {
// tools.mylogshow(' REC TO MODIFY: ', rec);
if (!rec) {
return res.status(404).send();
@@ -285,6 +371,12 @@ router.patch('/chval', authenticate, (req, res) => {
telegrambot.sendMsgTelegramToTheManagers(idapp, addtext);
}
if (mydata.table === 'users') {
if (camporequisiti) {
await checkIfSbloccatiRequisiti(idapp, allData, id);
}
}
if (tools.ModificheConsentite(mydata.table, fieldsvalue)) {
let msg = '';
if (mydata.table === 'users') {
@@ -294,7 +386,13 @@ router.patch('/chval', authenticate, (req, res) => {
msg = `Variato l'invitante di ` + rec.name + ' ' + rec.surname + '\nmodificato da ' + req.user.name + ' ' + req.user.surname + ' \n' +
'Prima: ' + nomecognomeas + ' (' + rec.aportador_solidario + ')\n' +
'Dopo: ' + nomecognomenuovo + ' (' + fieldsvalue.aportador_solidario + ') ]';
// Metti l'iniziale
if (!await User.AportadorOrig(id)) {
await mytable.findByIdAndUpdate(id, { $set: { aportador_iniziale: fieldsvalue.aportador_solidario } }, { new: false });
}
}
}
if (msg !== '')
@@ -351,7 +449,9 @@ router.delete('/delrec/:table/:id', authenticate, (req, res) => {
const mytable = getTableByTableName(tablename);
if ((!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm)) && (tablename !== 'extralist')) {
const fields = { 'ALL': 1 };
if ((!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm)) && (tablename !== 'extralist') && !tools.ModificheConsentite(tablename, fields, id, req.user)) {
// If without permissions, exit
return res.status(404).send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' });
}
@@ -366,7 +466,7 @@ router.delete('/delrec/:table/:id', authenticate, (req, res) => {
tools.mylog('DELETED ', rec._id);
// Do extra things after deleted
return actions.doOtherThingsAfterDeleted(tablename, rec).then((ris) => {
return actions.doOtherThingsAfterDeleted(tablename, rec).then(async (ris) => {
if (ris) {
if (notifBot) {
@@ -378,7 +478,7 @@ router.delete('/delrec/:table/:id', authenticate, (req, res) => {
addtext = 'Eliminato il Record "' + nomerecord + '" dalla tabella ' + tablename + '\n' +
'Eseguito da ' + req.user.name + ' ' + req.user.surname + ' \n';
telegrambot.sendMsgTelegramToTheManagers(idapp, addtext);
await telegrambot.sendMsgTelegramToTheManagers(idapp, addtext);
}
tools.mylog('DELETED Others things ...');
@@ -549,7 +649,8 @@ router.get(process.env.LINK_CHECK_UPDATES, authenticate, (req, res) => {
// If User is Admin, then send user Lists
if (User.isAdmin(req.user.perm)) {
// Send UsersList
usersList = User.getUsersList(req.user.idapp)
// usersList = User.getUsersList(req.user.idapp)
usersList = null;
}
}

View File

@@ -29,13 +29,14 @@ router.post('/load', async (req, res) => {
email_non_verif: await User.getEmailNotVerified(idapp),
num_teleg_attivo: await User.getUsersTelegramAttivo(idapp),
num_teleg_pending: await User.getUsersTelegramPending(idapp),
num_qualificati: await User.getNumUsersQualified(idapp, 2),
// num_qualificati: await User.getNumUsersQualified(idapp, 2),
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),
num_users_dream: await User.getUsersDreams(idapp),
arr_nations: await User.findAllDistinctNationality(idapp),
numreg_untilday: await User.calcnumRegUntilDay(idapp),
reg_daily: await User.calcRegDaily(idapp),
lastsreg: await User.getLastUsers(idapp),
checkuser: await User.checkUser(idapp, username),

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 561 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

View File

@@ -2,10 +2,15 @@ const express = require('express');
const router = express.Router();
const { User } = require('../models/user');
const { Nave } = require('../models/nave');
const { ListaIngresso } = require('../models/listaingresso');
const { ExtraList } = require('../models/extralist');
const { ObjectID } = require('mongodb');
const sendemail = require('../sendemail');
const { Settings } = require('../models/settings');
const tools = require('../tools/general');
const shared_consts = require('../tools/shared_nodejs');
@@ -47,10 +52,10 @@ function getMobileComplete(user) {
router.post('/', async (req, res) => {
tools.mylog("POST /users");
const body = _.pick(req.body, ['email', 'password', 'username', 'name', 'surname', 'idapp', 'keyappid', 'lang', 'profile', 'aportador_solidario']);
const user = new User(body);
body.email = body.email.toLowerCase();
const user = new User(body);
// tools.mylog("LANG PASSATO = " + user.lang, "IDAPP", user.idapp);
user.linkreg = reg.getlinkregByEmail(body.idapp, body.email, body.username);
@@ -59,6 +64,10 @@ router.post('/', async (req, res) => {
user.lasttimeonline = new Date();
user.date_reg = new Date();
user.date_temp_reg = new Date();
user.aportador_iniziale = user.aportador_solidario;
if (user.idapp === tools.AYNI) {
user.profile.paymenttypes = ['paypal'];
}
// user.perm = 3;
if (tools.testing()) {
user.verified_email = true;
@@ -147,7 +156,7 @@ router.post('/', async (req, res) => {
msgseconda += 'QUARTA';
msgseconda += ' UTENZA di ' + recorig.name + ' ' + recorig.surname + ' (' + recorig.username + ') : ' + user.name + ' ' + user.surname + ' (' + user.username + ') ';
telegrambot.sendMsgTelegramToTheManagers(user.idapp, msgseconda);
await telegrambot.sendMsgTelegramToTheManagers(user.idapp, msgseconda);
}
}
@@ -158,7 +167,7 @@ router.post('/', async (req, res) => {
let msg = 'L\'utente ' + user.name + ' ' + user.surname + ' si sta registrando con il link di ' + user.aportador_solidario + ' (' + namesurname_aportador_reg + ') ' +
'invece è assegnato a ' + nomeaportador_corretto;
telegrambot.sendMsgTelegramToTheManagers(user.idapp, msg);
await telegrambot.sendMsgTelegramToTheManagers(user.idapp, msg);
res.status(400).send({ code: server_constants.RIS_CODE_USER_NOT_THIS_APORTADOR, msg: '' });
return 1;
}
@@ -173,8 +182,11 @@ router.post('/', async (req, res) => {
if (!recextra) {
const msg = 'Utente non trovato: ' + user.name + ' ' + user.surname + ' ' + user.profile.nationality + ' ' + user.profile.cell + ' email: ' + user.email + ' username: ' + user.username;
console.log('Utente non trovato; ', msg);
telegrambot.sendMsgTelegramToTheManagers(user.idapp, msg);
res.status(400).send({ code: server_constants.RIS_CODE_USER_EXTRALIST_NOTFOUND, msg: 'Controlla se il numero ' + user.profile.cell + ' è corretto.' });
await telegrambot.sendMsgTelegramToTheManagers(user.idapp, msg);
res.status(400).send({
code: server_constants.RIS_CODE_USER_EXTRALIST_NOTFOUND,
msg: 'Controlla se il numero ' + user.profile.cell + ' è corretto.'
});
return 1;
} else {
user.ind_order = recextra.ind_order;
@@ -244,11 +256,11 @@ router.post('/', async (req, res) => {
})
});
router.get('/:idapp/:username', (req, res) => {
router.get('/:idapp/:username', async (req, res) => {
var username = req.params.username;
const idapp = req.params.idapp;
User.findByUsername(idapp, username, false).then((user) => {
await User.findByUsername(idapp, username, false).then((user) => {
if (!user) {
return res.status(404).send();
}
@@ -397,17 +409,130 @@ router.post('/import_extralist', async (req, res) => {
res.send(ris);
});
router.post('/dbop', async (req, res) => {
router.post('/dbop', authenticate, async (req, res) => {
const mydata = req.body.mydata;
idapp = req.body.idapp;
locale = req.body.locale;
const mydata = req.body.mydata;
idapp = req.body.idapp;
locale = req.body.locale;
const ris = await User.DbOp(idapp, mydata);
console.log('ris', ris);
let ris = await User.DbOp(idapp, mydata);
res.send(ris);
});
if (mydata.dbop === 'creaNave') {
const num = await Nave.generaNave(idapp, mydata);
ris = { num };
} else if (mydata.dbop === 'delNavi') {
await Nave.setRiga(idapp, 1);
await Nave.setCol(idapp, 1);
const num = await Nave.remove({ idapp });
ris = { num };
} else if (mydata.dbop === 'delNaviNoStarted') {
await Nave.setRiga(idapp, 1);
await Nave.setCol(idapp, 1);
const num = await Nave.remove({ idapp, date_start : { $gte: tools.IncDateNow(-1000 * 60 * 60 * 24 * 3) } });
ris = { num };
} else if (mydata.dbop === 'visuListaNave') {
const mystr = await Nave.showListaOrd(idapp);
ris = { mystr };
} else if (mydata.dbop === 'checkInserimentiUtentiInNave') {
const mystr = await Nave.checkIfDevoAggiungereInNave(idapp);
ris = { mystr };
} else if (mydata.dbop === 'visuListaIngresso') {
const mystr = await ListaIngresso.showListaOrd(idapp);
ris = { mystr };
} else if (mydata.dbop === 'initListaIngresso') {
const num = await ListaIngresso.updateMany({ idapp }, { $set: { added: false } });
ris = { num };
} else if (mydata.dbop === 'ImpostaATuttiPaypal') {
const listautenti = await User.find({ idapp });
let num = 0;
for (let rec of listautenti) {
if (!rec._doc.profile.paymenttypes.includes('paypal')) {
rec._doc.profile.paymenttypes = [...rec._doc.profile.paymenttypes, 'paypal'];
const user = await User.findOneAndUpdate({ _id: rec._id }, { $set: { 'profile.paymenttypes': rec._doc.profile.paymenttypes } });
// await rec.save();
num++;
}
// const num = await User.f({ idapp }, { $set: { 'profile: false } });
}
ris = { num };
} else if (mydata.dbop === 'numtessUno') {
const listanavi = await ListaIngresso.find({ idapp });
let num = 0;
for (let rec of listanavi) {
if (!rec._doc.num_tess) {
rec._doc.num_tess = 1;
const risu = await ListaIngresso.findOneAndUpdate({ _id: rec._id }, { $set: { num_tess: rec._doc.num_tess } }, { new: false });
// await rec.save();
if (!!risu)
num++;
}
// const num = await User.f({ idapp }, { $set: { 'profile: false } });
}
ris = { num };
} else if (mydata.dbop === 'creaUtentiTest') {
let num = 0;
lastrec = await User.find({ idapp }).sort({ _id: -1 }).limit(1);
for (let ind = 0; ind < 1; ind++) {
let myuser = new User();
myuser._id = new ObjectID();
myuser.ind_order = lastrec[0].ind_order + ind + 1;
myuser.idapp = idapp;
myuser.password = "$2a$12$DEaX1h5saTUVC43f7kubyOAlah1xHDgqQTfSIux0.RFDT9WGbyCaG";
myuser.lang = 'it';
myuser.email = "miaemail@email.it";
myuser.name = 'U' + myuser.ind_order;
myuser.verified_email = true;
if (myuser.ind_order < 2)
myuser.perm = "3";
myuser.username = "Userna_" + myuser.name;
myuser.profile.special_req = true;
await myuser.save();
num++;
}
ris = { num };
} else if (mydata.dbop === 'visuPlacca') {
const placca = await Nave.getPlaccaPerDonatore(idapp, parseInt(mydata.riga), parseInt(mydata.col));
telegrambot.sendMsgTelegramToTheAdmin(idapp, placca);
ris = { placca };
} else if (mydata.dbop === 'visuNave') {
const mystr = await Nave.getNavePos(idapp, parseInt(mydata.riga), parseInt(mydata.col));
const visu_nave_Bot = await Settings.getValDbSettings(idapp, 'VISU_NAVE_BOT');
if (visu_nave_Bot)
telegrambot.sendMsgTelegramToTheAdmin(idapp, mystr);
ris = { mystr };
} else if (mydata.dbop === 'getnavibyuser') {
let arrnavi = null;
const user = await User.getUserShortDataByUsername(idapp, mydata.username);
if (user) {
arrnavi = await Nave.getArrPosizioniByIndOrder(idapp, user.ind_order);
for (let mynave of arrnavi) {
mynave._doc.rec = await Nave.getNaveByRigaCol(idapp, mynave.riga, mynave.col);
}
}
ris = { data: arrnavi };
}
// console.log('ris', ris);
res.send(ris);
}
);
module.exports = router;