From 7c575c06879ea3d8371c0c3f9c961b11cdd0f184 Mon Sep 17 00:00:00 2001 From: Paolo Arena Date: Tue, 7 Apr 2020 14:34:29 +0200 Subject: [PATCH] Lista Navi --- emails/registration_ayni/it/html.pug | 2 +- emails/registration_ayni/pt/html.pug | 8 +- emails/registration_ayni/si/html.pug | 2 +- src/server/models/listaingresso.js | 63 +++++++---- src/server/models/nave.js | 149 +++++++++++++++----------- src/server/models/navepersistente.js | 56 ++++++++++ src/server/models/user.js | 19 ++-- src/server/router/dashboard_router.js | 77 ++++++++----- src/server/router/index_router.js | 4 +- src/server/router/users_router.js | 9 +- src/server/server.js | 2 +- src/server/telegram/telegrambot.js | 48 ++++++--- src/server/tools/general.js | 31 ++++-- src/server/tools/shared_nodejs.js | 1 + 14 files changed, 317 insertions(+), 154 deletions(-) diff --git a/emails/registration_ayni/it/html.pug b/emails/registration_ayni/it/html.pug index a4dd27b..b5923fa 100755 --- a/emails/registration_ayni/it/html.pug +++ b/emails/registration_ayni/it/html.pug @@ -1,4 +1,4 @@ -p Dobrodošli #{name} nel portale di #{nomeapp}! +p Benvenuto #{name} nel portale di #{nomeapp}! p I tuoi dati di accesso da ricordare sono: span Username:  strong #{username}
diff --git a/emails/registration_ayni/pt/html.pug b/emails/registration_ayni/pt/html.pug index f94a3b1..c15daaf 100755 --- a/emails/registration_ayni/pt/html.pug +++ b/emails/registration_ayni/pt/html.pug @@ -1,11 +1,11 @@ -p Bem-vindo #{nome} ao portal de #{nomeapp}! +p Bem-vindo #{name} ao portal de #{nomeapp}! p Os seus dados de login a lembrar são: span Username:  strong #{username}
span você esqueceu sua senha? :  strong Encontre-o aqui>br> span Email:  - strong #{{emailto}
+ strong #{emailto}
p Clique no botão para confirmar o seu registo ou clique aqui #{strlinkreg}: div.divbtn button.btn.btn-lg Verificação de registro @@ -14,8 +14,8 @@ p Você pode então acessar sua área pessoal digitando seu nome de usuário e s strong ENTRAR
p Então, uma vez verificada a sua inscrição, inicie a sessão no site e   - COMPLETA TODOS OS PASSOS   - do "Guia Passo a Passo" através deste link:
+ strong COMPLETA TODOS OS PASSOS   + span do "Guia Passo a Passo" através deste link:
span #{strlinksito} diff --git a/emails/registration_ayni/si/html.pug b/emails/registration_ayni/si/html.pug index f1f1b01..9754aa9 100755 --- a/emails/registration_ayni/si/html.pug +++ b/emails/registration_ayni/si/html.pug @@ -1,4 +1,4 @@ -p Dobrodoli #{name} na portalu #{nomeapp}! +p Dobrodošli #{name} na portalu #{nomeapp}! p Vaši podatki za dostop so: span Username:  strong #{username}
diff --git a/src/server/models/listaingresso.js b/src/server/models/listaingresso.js index 9148788..4e52d5f 100755 --- a/src/server/models/listaingresso.js +++ b/src/server/models/listaingresso.js @@ -187,7 +187,7 @@ ListaIngressoSchema.statics.addUserInListaIngresso = async function (idapp, ind_ }; -function getQueryProj(myfilter) { +function getQueryProj(myfilter, myobjField, myfilter2) { const query = [ { $match: myfilter }, { @@ -201,6 +201,8 @@ function getQueryProj(myfilter) { { $replaceRoot: { newRoot: { $mergeObjects: [{ $arrayElemAt: ["$user", 0] }, "$$ROOT"] } } }, + { $match: myfilter2 }, + { $project: myobjField } ]; return query; @@ -210,24 +212,13 @@ function getQueryProj(myfilter) { ListaIngressoSchema.statics.showListaOrd = async function (idapp, solonuovi) { const ListaIngresso = this; - const { User } = require('./user'); - - let myquery = ''; - - if (solonuovi) - myquery = getQueryProj({ idapp, added: false }); - else - myquery = getQueryProj({ idapp }); - - arrrec = await ListaIngresso.aggregate(myquery).sort({ indprimario: 1 }); + arrrec = await ListaIngresso.getProssimiInLista(idapp, solonuovi); let mystr = ''; let conta = 1; for (const rec of arrrec) { - rec.numinvitati = await User.getnumInvitati(idapp, rec.username); - rec.numinvitatiattivi = await User.getnumInvitatiAttivi(idapp, rec.username); - mystr += '[' + conta + '] ' + rec.ind_order + ' [' + rec.numinvitatiattivi + '] - [' + rec.numinvitati + '] (' + rec.ind_order + ') ' + rec.name + ' ' + rec.surname; + mystr += ' num_tess = ' + rec.num_tess; if (rec.added) mystr += ' (ADDED ++)'; @@ -260,19 +251,46 @@ ListaIngressoSchema.statics.findAllIdApp = function (idapp) { function sortRec(rec) { return rec.sort(function (reca, recb) { - return recb.numinvitatiattivi - reca.numinvitatiattivi + return Math.round((recb.numinvitatiattivi + recb.numinvitati) / recb.num_tess) - Math.round((reca.numinvitatiattivi + reca.numinvitati) / reca.num_tess); }); } -ListaIngressoSchema.statics.getProssimiInLista = async function (idapp, tutti) { +ListaIngressoSchema.statics.getProssimiInLista = async function (idapp, solonuovi) { const ListaIngresso = this; - const myquery = getQueryProj({ - 'idapp': idapp, - ind_order: { $gt: 0 }, - added: false, - deleted: false, - }); + let myquery = ''; + + let myobjField = { + idapp: 1, + ind_order: 1, + name: 1, + surname: 1, + username: 1, + email: 1, + lang: 1, + num_tess: 1, + added: 1, + deleted: 1, + }; + + let myfilter2 = { + username: { $exists: true }, + }; + + if (solonuovi) { + myquery = getQueryProj({ + 'idapp': idapp, + ind_order: { $gte: 0 }, + added: false, + deleted: false, + }, myobjField, myfilter2); + } else { + myquery = getQueryProj({ + 'idapp': idapp, + ind_order: { $gte: 0 }, + deleted: false, + }, myobjField, myfilter2); + } arrrec = await ListaIngresso.aggregate(myquery).sort({ indprimario: 1 }) .then(async (arrlista) => { @@ -280,6 +298,7 @@ ListaIngressoSchema.statics.getProssimiInLista = async function (idapp, tutti) { const { User } = require('../models/user'); for (const rec of arrlista) { + rec.numinvitati = await User.getnumInvitati(idapp, rec.username); rec.numinvitatiattivi = await User.getnumInvitatiAttivi(idapp, rec.username); if (rec.numinvitatiattivi > 2) rec.numinvitatiattivi = 2; diff --git a/src/server/models/nave.js b/src/server/models/nave.js index 7b7c05e..9a3e4f6 100755 --- a/src/server/models/nave.js +++ b/src/server/models/nave.js @@ -43,15 +43,6 @@ const NaveSchema = new mongoose.Schema({ parent_id: { type: mongoose.Schema.Types.ObjectId, }, - /*date_start: { - type: Date - }, - date_gift_chat_open: { - type: Date - }, - link_chat: { - type: String, - },*/ sent_msg_howto_make_gift: { type: Boolean, default: false, @@ -80,18 +71,6 @@ const NaveSchema = new mongoose.Schema({ note: { type: String }, - /* provvisoria: { - type: Boolean - }, - note_bot: { - type: String - }, - note_interne: { - type: String - }, - tutor: { - type: String - }*/ }); NaveSchema.statics.getTotInLista = async function (idapp) { @@ -115,6 +94,20 @@ NaveSchema.statics.findByIndOrder = function (idapp, ind_order) { } }; +NaveSchema.statics.findByIndOrderAndNumTess = function (idapp, ind_order, num_tess) { + const Nave = this; + + try { + return Nave.findOne({ + idapp, + ind_order, + num_tess, + }); + } catch (e) { + + } +}; + NaveSchema.statics.findById = function (idapp, id) { const Nave = this; @@ -140,7 +133,9 @@ NaveSchema.statics.findByIndPrimario = function (idapp, indprimario) { NaveSchema.statics.getFieldsForSearch = function () { return [{ field: 'ind_order', type: tools.FieldType.number }, - { field: 'col', type: tools.FieldType.number }] + { field: 'riga', type: tools.FieldType.number }, + { field: 'col', type: tools.FieldType.number }, + { field: '_id', type: tools.FieldType.exact }] }; NaveSchema.statics.executeQueryTable = function (idapp, params) { @@ -365,7 +360,7 @@ NaveSchema.statics.findGeneric = function (myrigacol) { myarr = { ...newrec._doc, ...rec[0]._doc }; return myarr; } else { - let myarr = null; + let myarr = rec[0]; if (!!newrec) { if (rec[0]._doc === undefined) myarr = { ...newrec._doc, ...rec[0] }; @@ -426,6 +421,7 @@ function getQueryProj(myfilter) { username: 1, 'profile.paymenttypes': 1, 'profile.email_paypal': 1, + 'profile.cell': 1, made_gift: 1, sent_msg_howto_make_gift: 1, date_made_gift: 1, @@ -741,17 +737,19 @@ NaveSchema.statics.getNavePos = async function (idapp, riga, col, solorecord, in if (indfuoco === 1) primofuoco = recfuoco; - let symbol = ''; - if (recfuoco.made_gift) { - symbol = '🎁'; - donifatti++; - } - if (!!recfuoco && recmediatore) { - if (recfuoco.ind_order === recmediatore.ind_order && recfuoco.num_tess === 2) { - mystr += await getusertextbyrec(recfuoco, '', tools.get__('RITESSITURA', lang), miariga, miacol, '') + tools.ACAPO; - } else { - mystr += await getusertextbyrec(recfuoco, symbol, 'D', miariga, miacol, indfuoco) + tools.ACAPO; - donitotali++; + if (!!recfuoco) { + let symbol = ''; + if (recfuoco.made_gift) { + symbol = '🎁'; + donifatti++; + } + if (!!recfuoco && recmediatore) { + if (recfuoco.ind_order === recmediatore.ind_order && recfuoco.num_tess === 2) { + mystr += await getusertextbyrec(recfuoco, '', tools.get__('RITESSITURA', lang), miariga, miacol, '') + tools.ACAPO; + } else { + mystr += await getusertextbyrec(recfuoco, symbol, 'D', miariga, miacol, indfuoco) + tools.ACAPO; + donitotali++; + } } } } @@ -769,7 +767,7 @@ NaveSchema.statics.getNavePos = async function (idapp, riga, col, solorecord, in // tools.gettranslate('PLACCA_TUTOR', lang) if (!!recnavepersistente.tutor_namesurname) - data += '👤 ' + tools.get__('Tutor che affianchèra il Mediatore', lang) + ': "' + recnavepersistente.tutor_namesurname + '"' + tools.ACAPO; + data += '👤 ' + tools.get__('Tutor che affianchèra il Mediatore', lang) + ': "' + recnavepersistente.tutor_namesurname + '"' + tools.ACAPO; data += '💬 ' + tools.get__('Giorno di Apertura GIFT CHAT', lang) + ': ' + tools.getstrDateLong(recnavepersistente.date_gift_chat_open) + tools.ACAPO; @@ -852,7 +850,9 @@ NaveSchema.statics.showListaOrd = async function (idapp) { for (const rec of arrrec) { let recnavepersistente = await NavePersistente.findByRigaColByDonatore(idapp, rec.riga, rec.col, 0); if (!!recnavepersistente) { - mystr += '[' + conta + '] [' + rec.riga + '.' + rec.col + '] ' + rec.ind_order + ' ' + rec.name + ' ' + rec.surname + ' (' + tools.getstrDateShort(recnavepersistente.date_start) + ')\n'; + mystr += '[' + conta + '] [' + rec.riga + '.' + rec.col + '] ' + rec.ind_order + ' ' + rec.name + ' ' + rec.surname + ' (' + tools.getstrDateShort(recnavepersistente.date_start) + ')'; + mystr += ' num_tess = ' + rec.num_tess; + mystr += '\n'; } conta++; } @@ -911,9 +911,13 @@ async function addRecordNaveByParams(params, siRitesse) { }); myNave.created = new Date(); - console.log('[' + params.riga + ',' + params.col + ']'); + // console.log('[' + params.riga + ',' + params.col + ']'); + // console.log('parent = [' + params.rigaparent + ',' + params.colparent + ']'); const recfindparent = await Nave.findByRigaCol(idapp, params.rigaparent, params.colparent, false); + + // console.log('recfindparent = [' + recfindparent + ']'); + // console.table(recfindparent); if (!!recfindparent) { myNave.parent_id = recfindparent._id; } else { @@ -978,7 +982,7 @@ NaveSchema.statics.checkifDeveRitessersi = async function (recuser) { arrrec = await Nave.find({ idapp: recuser.idapp, ind_order: recuser.ind_order }); if (!!arrrec) { - if (arrrec.length > 2) { + if ((arrrec.length % 2) === 0) { // deveritessersi = await User.deveRitessersi(recuser.idapp, recuser.ind_order) deveritessersi = false; } @@ -1006,6 +1010,9 @@ NaveSchema.statics.addUserFromListaIngresso_IntoNave = async function (init, ida params.colparent = Math.ceil(params.col / 2); params.rigaparent = params.riga - 1; + if (params.rigaparent === 0) + params.colparent = 0; + myriga = params.riga; mycol = params.col; @@ -1013,25 +1020,16 @@ NaveSchema.statics.addUserFromListaIngresso_IntoNave = async function (init, ida if (inserito) { if (idapp === tools.AYNI) { if (((params.col) % 8) === 0) { - // Trova se la persona di 3 livelli sopra, si deve ritessere let recmediatore = await Nave.findMediatoreByFuoco(idapp, myriga, mycol, 0); if (!!recmediatore) { const ris = await Nave.checkifDeveRitessersi(recmediatore); - if (ris.num_tess >= 2) { - console.log('E\' arrivato alla TERZA RITESSITURA, PERTANTO LO METTIAMO IN CODA... [riga=', params.riga, 'col', params.col, '] indorder=' + recmediatore.ind_order); - // E' arrivato alla TERZA RITESSITURA, PERTANTO LO METTIAMO IN CODA... - - //++Todo: TESSITURA???? - - //const risultato = await ListaIngresso.addUserInListaIngresso(idapp, recmediatore.ind_order, rec.lang, false, ris.num_tess); - - } else { - console.log('Si deve ritessere: [riga=', params.riga, 'col', params.col, ']'); + if (ris.deveritessersi) { + console.log('Si deve ritesere: [riga=', params.riga, 'col', params.col, ']'); if (ris.deveritessersi) { params.indprimario = recmediatore.indprimario; params.ind_order = recmediatore.ind_order; params.id = recmediatore._id; - params.num_tess = ris.num_tess; + params.num_tess = ris.num_tess + 1; await addRecordNaveByParams(params, true); } @@ -1130,12 +1128,10 @@ NaveSchema.statics.checkIfDevoAggiungereInNave = async function (idapp) { const { ListaIngresso } = require('./listaingresso'); // Ottieni la lista Ordinata in base al numero d'invitati - arrlista = await ListaIngresso.getProssimiInLista(idapp, false); + arrlista = await ListaIngresso.getProssimiInLista(idapp, true); for (const rec of arrlista) { - if (rec.numinvitatiattivi >= 2) { - await addUserToNave(idapp, rec); - } + await addUserToNave(idapp, rec); } }; @@ -1157,7 +1153,7 @@ NaveSchema.statics.pulisciNonPresenzeInNave = async function (idapp) { arrrec = await ListaIngresso.aggregate(myquery) .then(async (arrlista) => { for (const rec of arrlista) { - const trovato = await Nave.findByIndOrder(idapp, rec.ind_order); + const trovato = await Nave.findByIndOrderAndNumTess(idapp, rec.ind_order, rec.num_tess); if (!trovato) { let fields_to_update = { added: false }; await ListaIngresso.findOneAndUpdate({ _id: rec._id }, { $set: fields_to_update }, { new: false }); @@ -1171,6 +1167,31 @@ NaveSchema.statics.pulisciNonPresenzeInNave = async function (idapp) { }; +NaveSchema.statics.visuNaviUtentiEliminati = async function (idapp) { + const Nave = this; + + let numrec = 0; + + const myquery = getQueryProj({ idapp }); + + arrrec = await Nave.aggregate(myquery).sort({ riga: 1, col: 1 }); + + let mystr = 'ELIMINATI: \n'; + let conta = 0; + for (const rec of arrrec) { + if (!rec.username) { + let navepersistente = await NavePersistente.findByRigaColByDonatore(idapp, rec.riga, rec.col, 0); + mystr += '[' + conta + '] [NAVI ' + navepersistente.riga + '.' + navepersistente.col + '] [' + rec.riga + '.' + rec.col + '] ' + rec.ind_order; + mystr += ' num_tess = ' + rec.num_tess; + mystr += '\n'; + conta++; + } + } + + return { mystr, num: conta }; +}; + + NaveSchema.statics.getNaveByUser = async function (idapp, ind_order, lang, fuoco) { const Nave = this; @@ -1195,19 +1216,17 @@ NaveSchema.statics.getNaveByUser = async function (idapp, ind_order, lang, fuoco return mystr; }; -NaveSchema.statics.getNaveByRigaCol = async function (idapp, riganave, colnave) { +NaveSchema.statics.getNaveByRigaCol = async function (idapp, rigapos, colpos) { const Nave = this; - const rigaprec = riganave; - rec = {}; - rec = await Nave.getPlaccaPerMediatore(idapp, riganave, colnave, true, rec); + rec = await Nave.getPlaccaPerMediatore(idapp, rigapos, colpos, true, rec); - if (riganave < 4) { - riganave = 4; - colnave = 1; + if (rigapos < 4) { + rigapos = 4; + colpos = 1; } - rec = await Nave.getPlaccaPerDonatore(idapp, riganave, colnave, true, rec); + rec = await Nave.getPlaccaPerDonatore(idapp, rigapos, colpos, true, rec); return rec; }; @@ -1215,8 +1234,8 @@ NaveSchema.statics.getNaveByRigaCol = async function (idapp, riganave, colnave) NaveSchema.statics.getDonatoridelSognatore = async function (idapp, riganave, colnave) { const Nave = this; - coldonatoreIni = calcval(riganave, colnave, 8) + (1); - coldonatoreFine = calcval(riganave, colnave, 8) + (64); + coldonatoreIni = ((colnave - 1) * 64) + (1); + coldonatoreFine = coldonatoreIni + (64); const myquery = getQueryProj({ idapp, diff --git a/src/server/models/navepersistente.js b/src/server/models/navepersistente.js index 06bdbc0..74f528c 100755 --- a/src/server/models/navepersistente.js +++ b/src/server/models/navepersistente.js @@ -77,6 +77,62 @@ const NavePersistenteSchema = new mongoose.Schema({ } }); +function getQueryProj(myfilter) { + + myobjField = { + _id: 1, + idapp: 1, + lang: 1, + ind_order: 1, + name: 1, + surname: 1, + username: 1, + 'profile.paymenttypes': 1, + 'profile.email_paypal': 1, + 'profile.cell': 1, + made_gift: 1, + sent_msg_howto_make_gift: 1, + date_made_gift: 1, + note: 1, + received_gift: 1, + date_received_gift: 1, + num_tess: 1, + indprimario: 1, + parent_id: 1, + riga: 1, + col: 1, + created: 1, + // date_start: 1, + // date_gift_chat_open: 1, + // link_chat: 1, + // provvisoria: 1, + // note_bot: 1, + // note_interne: 1, + // tutor: 1, + // tutor_namesurname: 1, + }; + + const query = [ + { $match: myfilter }, + { + $lookup: { + from: "users", + localField: "ind_order", + foreignField: "ind_order", // field in the user collection + as: "user" + } + }, + { + $replaceRoot: { newRoot: { $mergeObjects: [{ $arrayElemAt: ["$user", 0] }, "$$ROOT"] } } + // $replaceRoot: { newRoot: { $mergeObjects: [{ $arrayElemAt: ["$user", 0] },] } } + }, + { $project: myobjField } + ]; + + return query; +} + + NavePersistenteSchema.statics.findById = function (idapp, id) { const NavePersistente = this; diff --git a/src/server/models/user.js b/src/server/models/user.js index 5bc89a6..da357f0 100755 --- a/src/server/models/user.js +++ b/src/server/models/user.js @@ -267,6 +267,14 @@ UserSchema.statics.isManager = function (perm) { } }; +UserSchema.statics.isTutor = function (perm) { + try { + return ((perm & shared_consts.Permissions.Tutor) === shared_consts.Permissions.Tutor); + } catch (e) { + return false + } +}; + UserSchema.statics.findByToken = function (token, typeaccess) { const User = this; let decoded; @@ -962,8 +970,8 @@ UserSchema.statics.getUsersListByParams = function (params) { UserSchema.statics.getFieldsForSearch = function () { return [{field: 'username', type: tools.FieldType.string}, - {filed: 'name', type: tools.FieldType.string }, - {filed: 'ind_order', type: tools.FieldType.number }, + {field: 'name', type: tools.FieldType.string }, + {field: 'ind_order', type: tools.FieldType.number }, {field: 'surname', type: tools.FieldType.string }, {field: 'email', type: tools.FieldType.string }, {field: 'profile.cell', type: tools.FieldType.string}, @@ -1029,7 +1037,7 @@ UserSchema.statics.getDashboard = async function (idapp, aportador_solidario, us } } - dashboard.arrnavi = await Nave.getArrPosizioniByIndOrder(idapp, dashboard.myself.ind_order); + dashboard.arrposizioni = await Nave.getArrPosizioniByIndOrder(idapp, dashboard.myself.ind_order); dashboard.navi_partenza = await NavePersistente.getListaNavi(idapp); @@ -1037,9 +1045,8 @@ UserSchema.statics.getDashboard = async function (idapp, aportador_solidario, us // dashboard.navi_partenza.push(await Nave.getPrimaNaveByRiga(idapp, indriga)); //} - for (let mynave of dashboard.arrnavi) { - mynave._doc.rec = await Nave.getNaveByRigaCol(idapp, mynave.riga, mynave.col); - mynave._doc.listadonatoridelsognatore = await Nave.getDonatoridelSognatore(idapp, mynave.riga, mynave.col); + for (let mypos of dashboard.arrposizioni) { + mypos._doc.rec = await Nave.getNaveByRigaCol(idapp, mypos.riga, mypos.col); } // console.table(dashboard.arrnavi); diff --git a/src/server/router/dashboard_router.js b/src/server/router/dashboard_router.js index d57866a..51098f1 100755 --- a/src/server/router/dashboard_router.js +++ b/src/server/router/dashboard_router.js @@ -62,9 +62,14 @@ router.post('/msgnave', authenticate, async (req, res) => { 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 + 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 ris = await telegrambot.sendMsgTelegramToNave(idapp, mydata); if (ris) @@ -73,38 +78,60 @@ router.post('/msgnave', authenticate, async (req, res) => { res.send({ code: server_constants.RIS_CODE_ERR, ris: null }); - }catch (e) { + } catch (e) { res.status(400).send(e); } }); +router.post('/getnave', authenticate, async (req, res) => { + const idapp = req.body.idapp; + 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); + } + + const navi_partenza = await NavePersistente.findAllIdApp(idapp); + + ris = { nave, navi_partenza }; + + if (ris) + res.send({ code: server_constants.RIS_CODE_OK, ris }); + else + res.status(400).send(e); + +}); + router.post('/getnavi', authenticate, async (req, res) => { const idapp = req.body.idapp; - let arrnavi = []; - let test = false; - if (test) { - let indriga = 7; - let indcol = 49; - arrnavi.push({ riga: indriga, col: indcol }); - - } else { - - for (let indriga = 4; indriga <= 9; 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 }); - } - } - - } + let arrnavi = await NavePersistente.findAllIdApp(idapp); for (nave of arrnavi) { - nave.rec = await Nave.getNaveByRigaCol(idapp, nave.riga, nave.col); + //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 }); } const navi_partenza = await NavePersistente.findAllIdApp(idapp); diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js index 1265947..c218712 100755 --- a/src/server/router/index_router.js +++ b/src/server/router/index_router.js @@ -395,9 +395,9 @@ router.patch('/chval', authenticate, async (req, res) => { } else { if (mydata.notifBot) { // Send Notification to the BOT - telegrambot.sendMsgTelegram(idapp, mydata.notifBot.un, mydata.notifBot.txt); + await telegrambot.sendMsgTelegram(idapp, mydata.notifBot.un, mydata.notifBot.txt); addtext = '[Msg Inviato a ' + mydata.notifBot.un + ']:' + '\n' + mydata.notifBot.txt; - telegrambot.sendMsgTelegramToTheManagers(idapp, addtext); + await telegrambot.sendMsgTelegramToTheManagers(idapp, addtext); } if (mydata.table === 'users') { diff --git a/src/server/router/users_router.js b/src/server/router/users_router.js index 47d9b53..bcf9dcf 100755 --- a/src/server/router/users_router.js +++ b/src/server/router/users_router.js @@ -109,6 +109,8 @@ router.post('/', async (req, res) => { recuser = await User.findByCellAndNameSurname(user.idapp, user.profile.cell, user.name, user.surname); if (recuser) { + console.log('UTENTE GIA ESISTENTE:\n'); + console.log(user); // User already registered! res.status(400).send({ code: server_constants.RIS_CODE_USER_ALREADY_EXIST, msg: '' }); return 1; @@ -451,6 +453,9 @@ router.post('/dbop', authenticate, async (req, res) => { } } + // Pulisci gli added se era stato cancellato dalla nave + await Nave.pulisciNonPresenzeInNave(idapp); + const data = await Nave.getLastRigaCol(idapp); await Nave.setRiga(idapp, data.riga); await Nave.setCol(idapp, data.col + 1); @@ -471,6 +476,8 @@ router.post('/dbop', authenticate, async (req, res) => { } else if (mydata.dbop === 'visuListaIngressoNuovi') { const mystr = await ListaIngresso.showListaOrd(idapp, true); ris = { mystr }; + } else if (mydata.dbop === 'visuNaviUtentiEliminati') { + ris = await Nave.visuNaviUtentiEliminati(idapp); } else if (mydata.dbop === 'initListaIngresso') { // const aaa = await User.updateMany({ idapp }, { $set: { 'profile.nationality': 'IT' } }); @@ -515,7 +522,7 @@ router.post('/dbop', authenticate, async (req, res) => { const myarrrec = await Nave.find({ idapp, ind_order: rec.ind_order }).sort({ riga: 1, col: 1 }); let indextess = 1; for (let ind = 0; ind < myarrrec.length; ind++) { - if (myarrrec[ind].num_tess !== indextess) { + if (myarrrec[ind].num_tess !== indextess && myarrrec[ind].num_tess === 1) { myarrrec[ind].num_tess = indextess; const risu = await Nave.findOneAndUpdate({ _id: myarrrec[ind]._id }, { $set: { num_tess: myarrrec[ind].num_tess } }, { new: false }); num++; diff --git a/src/server/server.js b/src/server/server.js index daad855..f893282 100755 --- a/src/server/server.js +++ b/src/server/server.js @@ -181,7 +181,7 @@ if ((process.env.NODE_ENV === 'production') || (process.env.NODE_ENV === 'test') // }); if (process.env.PROD !== 1) { - // testmsgwebpush(); + testmsgwebpush(); // sendemail.testemail('2', 'it'); /* diff --git a/src/server/telegram/telegrambot.js b/src/server/telegram/telegrambot.js index 5fa2b06..9a38623 100755 --- a/src/server/telegram/telegrambot.js +++ b/src/server/telegram/telegrambot.js @@ -192,8 +192,8 @@ const Menu = { }, si: { ACCEDI: emo.PERSON + ' Prijava', - LAVAGNA: emoji.get('om_symbol') + ' Predstavitev', - LINK_CONDIVIDERE: emoji.get('link') + ' Povezava za skupno rabo', + LAVAGNA: emoji.get('om_symbol') + ' Tabla', + LINK_CONDIVIDERE: emoji.get('link') + ' Link za vpis oseb', ZOOM: emoji.get('information_source') + ' Zoom (Konference)', INFO: emoji.get('information_source') + ' Informacije', ASSISTENZA: emoji.get('open_hands') + ' AYNI-jev klepet', @@ -382,7 +382,7 @@ const txt_fr = { }; const txt_si = { - MSG_SCEGLI_MENU: emoji.get('dizzy') + 'Meni za prikaz glasov:' + emoji.get('omotično'), + MSG_SCEGLI_MENU: emoji.get('dizzy') + 'Izbirni meni:' + emoji.get('dizzy'), MSG_ASK_USERNAME_BO: 'Vpiši svoje uporabniško ime in e-naslov s katerimi si se registriral na spletni strani % s: ', MSG_ERRORE_USERNAME: 'Pozor! Vpiši samo uporabniško ime (40 znakov) maksimalno', MSG_ERRORE_USERNAME_NOT_FOUND: 'Ponovno preverite telegram BOT Uporabniško ime ali e-poštno sporočilo, s katerim ste registrirali na spletni strani AYNI: ', @@ -478,7 +478,7 @@ module.exports = { NameFrom = await User.getNameSurnameByUsername(mylocalsconf.idapp, userdest) + aportador; aportador = NameFrom; } - text = printf(getstr(langdest, txt.MSG_APORTADOR_USER_REGISTERED), `${mylocalsconf.user.name} ${mylocalsconf.user.surname} (${mylocalsconf.user.username})`, ind_order, aportador); + text = printf(getstr(langdest, 'MSG_APORTADOR_USER_REGISTERED'), `${mylocalsconf.user.name} ${mylocalsconf.user.surname} (${mylocalsconf.user.username})`, ind_order, aportador); } let addtext = ""; @@ -516,7 +516,12 @@ module.exports = { if (mydata.tipomsg === tools.TipoMsg.SEND_LINK_CHAT_DONATORI) { return printf(tools.gettranslate('SEND_LINK_CHAT_DONATORI', lang), user.name, mydata.msgpar1); } else if (mydata.tipomsg === tools.TipoMsg.SEND_MSG || mydata.tipomsg === tools.TipoMsg.SEND_MSG_SINGOLO) { - return mydata.msgpar1; + let mymsg = ''; + if (!!mydata.username_mitt) { + mymsg = '[' + tools.gettranslate('MSG_SEND_FROM', lang) + ' ' + mydata.username_mitt + ']:' + tools.ACAPO; + } + mymsg += mydata.msgpar1; + return mymsg; } }, @@ -555,12 +560,11 @@ module.exports = { } if ((nummsgsent === 1) && (mydata.inviareale)) { try { - this.sendMsgTelegramToTheManagers(idapp, 'Inviato messaggio a tutti i Donatori della Nave ' + mydata.navemediatore.riga + '.' + mydata.navemediatore.col + '\n' + mymsg) + await this.sendMsgTelegramToTheManagers(idapp, 'Inviato messaggio a tutti i Donatori della Nave ' + mydata.navemediatore.riga + '.' + mydata.navemediatore.col + '\n' + mymsg) } catch (e) { } } - } } @@ -612,7 +616,7 @@ module.exports = { }, - sendMsgTelegram: async function (idapp, username, text, alsotomanagers) { + sendMsgTelegram: async function (idapp, username, text, alsotomanagers, username_mitt) { const teleg_id = await User.TelegIdByUsername(idapp, username); const cl = getclTelegByidapp(idapp); let ris = null; @@ -624,6 +628,12 @@ module.exports = { if (alsotomanagers) { await this.sendMsgTelegramToTheManagers(idapp, text) } + if (!!username_mitt) { + const rec = cl.getRecByUsername(username); + if (rec) { + rec.msgall_username_specifico = username_mitt; + } + } } return ris; @@ -717,7 +727,7 @@ function getstr(lang, key) { let mystr = ''; - if (lang === 'si') { + if ((lang === 'si') || (lang === 'sl-si')) { try { mystr = txt_si[key] } catch (e) { @@ -1336,6 +1346,8 @@ class Telegram { mystr += emo.STARS + tools.get__('ZOOM_CONFERENCE', this.getlang(msg)) + emo.STARS + '\n\n'; + let pwd = 'Password: 123123'; + let index = 1; listazoom.forEach((evento) => { let iniziata = false; @@ -1352,7 +1364,8 @@ class Telegram { if (nextzoom) { if (iniziata) { mystr += emo.FIRE + tools.get__('CLICCA_ENTRA', this.getlang(msg)) + ' ' + emo.FIRE + '\n'; - mystr += tools.getlinkzoom(evento.id_conf_zoom) + '\n\n'; + mystr += tools.getlinkzoom(evento.id_conf_zoom) + '\n'; + mystr += pwd + '\n\n'; } } @@ -1362,7 +1375,7 @@ class Telegram { if (!nextzoom && index > 1) { mystr += "✨✨✨✨✨✨✨✨✨✨✨✨\n" + - tools.get__('CLICCA_PER_ZOOM', this.getlang(msg)) + ':\n' + tools.getlinkzoom(listazoom[0].id_conf_zoom) + '\n' + "✨✨✨✨✨✨✨✨✨✨✨✨\n" + '\n'; + tools.get__('CLICCA_PER_ZOOM', this.getlang(msg)) + ':\n' + tools.getlinkzoom(listazoom[0].id_conf_zoom) + '\n' + "✨✨✨✨✨✨✨✨✨✨✨✨\n" + pwd + '\n\n'; } return mystr @@ -1742,7 +1755,6 @@ class Telegram { tools.writeEventsLog(msgris); await this.sendMsg(msg.chat.id, msgris); } - } rec.start_write_msgall = false; } catch (e) { @@ -1978,17 +1990,23 @@ class Telegram { } } + let mylang = 'it'; + + if (!!recmem) { + mylang = recmem.lang; + } + try { if (!form) { form = { "message_id": msg_id, "reply_markup": { "resize_keyboard": true, - "keyboard": await this.getKeyboard(id, menu, recmem.lang) + "keyboard": await this.getKeyboard(id, menu, mylang) } }; } - const res = this.bot.sendMessage(id, text, form) + const res = await this.bot.sendMessage(id, text, form) .catch((e) => { let blocked = false; if ((e.message.indexOf('Forbidden') > 0) || (e.message.indexOf('chat not found') > 0)) { @@ -2029,7 +2047,7 @@ class Telegram { async sendMsg(id, text, menu, form, msg_id, chat_id, ripr_menuPrec) { - return this._inviaMsg(id, text, form, menu, msg_id, chat_id, ripr_menuPrec); + return await this._inviaMsg(id, text, form, menu, msg_id, chat_id, ripr_menuPrec); } diff --git a/src/server/tools/general.js b/src/server/tools/general.js index 341f3e1..5ff46a9 100755 --- a/src/server/tools/general.js +++ b/src/server/tools/general.js @@ -51,7 +51,7 @@ textlang = { "Nuova Registrazione": "Nuova Registrazione", "Effettuata una Nuova Registrazione": "Effettuata una Nuova Registrazione", "partecipanti": "partecipanti", - 'TESTO_ASSISTENZA': "Per entrare nel Sito AYNI:\nhttps://ayni.gifteconomy.app\n\nHai dimenticato la Password per accedere al sito?\nhttps://ayni.gifteconomy.app/requestresetpwd\n\nChat AYNI BOT (questa):\nhttps://t.me/notevoleaynibot\n\nChat AYNI - EMPOWER: Entra ⛩ nella nostra Community chat:\n https://t.me/joinchat/C741mkx5QYXu-kyYCYvA8g\n\nChat AYNI-BIBLIO: https://t.me/joinchat/AL2qKExZKvenLgpVhOyefQ \n\nChat di Aiuto e Supporto: 'AYNI - HELP'\nDa Lunedì al Sabato (8:00 - 21:00)\nhttps://t.me/joinchat/C741mlVmB_RMcOUpNqWC8w\n1 - Fai la tua domanda e chiedi assistenza.\n2 - Dopo aver ricevuto aiuto esci dalla chat.\nPotrai rientrare ogni qualvolta ne avrai la necessità.", + 'TESTO_ASSISTENZA': "Per entrare nel Sito AYNI:\nhttps://ayni.gifteconomy.app\n\nHai dimenticato la Password per accedere al sito?\nhttps://ayni.gifteconomy.app/requestresetpwd\n\nChat AYNI BOT (questa):\nhttps://t.me/notevoleaynibot\n\nChat AYNI - EMPOWER: Entra ⛩ nella nostra Community chat:\n ITA 🇮🇹: https://t.me/joinchat/C741mkx5QYXu-kyYCYvA8g\n SLO 🇸🇮: https://t.me/aynislovenija\n ESP 🇪🇸: https://t.me/joinchat/AL2qKBqJRuIEuc2FivgAzg\n ENG 🇬🇧: https://t.me/joinchat/AL2qKBYX0yVvOJ6Ssf9hKg\n FRA 🇫🇷: https://t.me/joinchat/Kz0wtxieJjzoC3L_DsrdZw \n\nChat AYNI-BIBLIO: https://t.me/joinchat/AL2qKExZKvenLgpVhOyefQ \n\nChat di Aiuto e Supporto: 'AYNI - HELP'\nDa Lunedì al Sabato (8:00 - 21:00)\nhttps://t.me/joinchat/C741mlVmB_RMcOUpNqWC8w\n1 - Fai la tua domanda e chiedi assistenza.\n2 - Dopo aver ricevuto aiuto esci dalla chat.\nPotrai rientrare ogni qualvolta ne avrai la necessità.", 'BENVENUTO': "Benvenuto", 'TUE_NAVI': "Ecco le tue Navi programmate", 'HAI_I_7_REQUISITI': 'PRIMI PASSI OK!\nHai i Primi 7 Requisiti per Entrare nella Lista d\'Imbarco!', @@ -67,7 +67,7 @@ textlang = { "VERIF": "Verificata", 'EMAIL': "Email", 'BOT': "AYNI BOT", - 'EMAIL_NON_VERIF': "Email Non Verificata\nleggi la tua casella email e trova **\"Confermare la Registrazione a Ayni\"**
e clicca sul bottone **\"Verifica Registrazione\"**", + 'EMAIL_NON_VERIF': "Email Non Verificata\nleggi la tua casella email e trova **\"Confermare la Registrazione a Ayni\"**\ne clicca sul bottone **\"Verifica Registrazione\"**", 'TELEGRAM_NOT_CONNECTED': "Telegram non associato al tuo account!", 'NESSUN_INVITATO': 'Non hai invitato nessuno', 'ZOOM_PARTECIPATO': 'Partecipazione ad almeno 1 Conferenza (Zoom)', @@ -99,13 +99,14 @@ textlang = { 'Note': 'Note', 'TEMPORANEA': 'TEMPORANEA', 'NAVE': 'NAVE', + 'MSG_SEND_FROM': 'Msg Inviato da', }, si: { "Email je že bila preverjena": "Email je že bila preverjenaL'Email è già stata Verificata", "Nuova Registrazione": "Nova Registracija", "Effettuata una Nuova Registrazione": "Izpelji novo Registracijo", "partecipanti": "Udeleženci", - 'TESTO_ASSISTENZA': "Za vstop na spletno stran:\nhttps://ayni.gifteconomy.app\n\nSi pozabil geslo za vstop na stran?\nhttps://ayni.gifteconomy.app/requestresetpwd\n\nKlepet AYNI BOT (questa):\nhttps://t.me/notevoleaynibot\n\nKlepet AYNI - EMPOWER: Vstopi ⛩ v našo Skupnost klepet:\n https://t.me/aynislovenija\n\nKlepet AYNI-BIBLIO: https://t.me/joinchat/AL2qKExZKvenLgpVhOyefQ \n\nKlepet za Pomoč in Suport: 'AYNI - HELP'\nhttps://t.me/joinchat/C741mlVmB_RMcOUpNqWC8w\n1 - Postavi svoje vprašanje in prosi za asistenco.\n2 - KO si sprejel pomoč, izstopi iz klepeta.\n Vstopil boš lahko vedno, ko boš potreboval pomoč.", + 'TESTO_ASSISTENZA': "Za vstop na spletno stran:\nhttps://ayni.gifteconomy.app\n\nSi pozabil geslo za vstop na stran?\nhttps://ayni.gifteconomy.app/requestresetpwd\n\nKlepet AYNI BOT (questa):\nhttps://t.me/notevoleaynibot\n\nKlepet AYNI - EMPOWER: Vstopi ⛩ v našo Skupnost klepet:\n ITA 🇮🇹: https://t.me/joinchat/C741mkx5QYXu-kyYCYvA8g\n SLO 🇸🇮: https://t.me/aynislovenija\n ESP 🇪🇸: https://t.me/joinchat/AL2qKBqJRuIEuc2FivgAzg\n ENG 🇬🇧: https://t.me/joinchat/AL2qKBYX0yVvOJ6Ssf9hKg\n FRA 🇫🇷: https://t.me/joinchat/Kz0wtxieJjzoC3L_DsrdZw \n\nKlepet AYNI-BIBLIO: https://t.me/joinchat/AL2qKExZKvenLgpVhOyefQ \n\nKlepet za Pomoč in Suport: 'AYNI - HELP'\nhttps://t.me/joinchat/C741mlVmB_RMcOUpNqWC8w\n1 - Postavi svoje vprašanje in prosi za asistenco.\n2 - KO si sprejel pomoč, izstopi iz klepeta.\n Vstopil boš lahko vedno, ko boš potreboval pomoč.", 'BENVENUTO': "Dobrodošel", 'TUE_NAVI': "Tvoje programirane Ladje", 'HAI_I_7_REQUISITI': 'PRVI KORAKI OK!\nIzpolnjuješ Prvih 7 Zahtev za vstop na Listo d\'Vkrcanje!', @@ -135,7 +136,7 @@ textlang = { 'CLICCA_PER_ZOOM': 'NA DOLOČENO URO IN DATUM, ZA VSTOP V VIDEO KONFERENCO,KLIKNI TU', 'CLICCA_ENTRA': 'KLIKNI TU ZA VSTOP !', 'ZOOM_INIZIATO': 'TA KONFERENCA JE\' PRIČELA!', - 'SCEGLI_VOCE': 'izberi en glas:', + 'SCEGLI_VOCE': 'Izberi eno možnost:', 'INVITATI_LISTA': 'Tvoji povabljenci (v zelenem, s izpolnjenimi vsaj 7-imi zahtevami)', 'CIAO': 'Zdravo', 'ADDED_TOLISTAINGRESSO': 'Si bil dodan na Seznam oseb, ki bodo vstopile v Listo D\'Vkrcanje !', @@ -144,7 +145,7 @@ textlang = { 'SOGNATORE': 'Sanjača', 'MEDIATORE': 'MEDIATOR', 'DONATORI': 'DONATOR', - 'RITESSITURA': 'PONOVNI VPIS', + 'RITESSITURA': 'Avtomatičen Vpis', 'NAVE COMPLETATA': 'LADJE DOSTAVLJEN', 'Doni Effettuati': 'Darila narejena', 'Tutor che affianchèra il Mediatore': 'Tutor, ki bo podpiral Mediatorja', @@ -153,13 +154,14 @@ textlang = { 'Note': 'Opombe', 'TEMPORANEA': 'ZAČASNA', 'NAVE': 'LADJE', + 'MSG_SEND_FROM': 'sporočilo, ki ga je poslal', }, es: { "L'Email è già stata Verificata": "El correo electrónico ya ha sido verificado", "Nuova Registrazione": "Nuevo Registro", "Effettuata una Nuova Registrazione": "Se ha realizado un nuevo registro", "partecipanti": "participantes", - 'TESTO_ASSISTENZA': "Para entrar en el sitio de AYNI:\nhttps://ayni.gifteconomy.app\n\n¿Olvidó su contraseña para acceder al sitio?\nhttps://ayni.gifteconomy.app/requestresetpwd\n\nChat AYNI BOT (este):\nhttps://t.me/notevoleaynibot\n\nChat AYNI - EMPOWER: Entra en ⛩ en nuestra comunidad de chat:\n https://t.me/joinchat/AL2qKBqJRuIEuc2FivgAzg\n\nChat de la AYNI-BIBLIO: https://t.me/joinchat/AL2qKExZKvenLgpVhOyefQ \n\nChat de ayuda y soporte: 'AYNI - HELP'\nDe lunes a sábado (8:00 - 21:00)\nhttps://t.me/joinchat/C741mlVmB_RMcOUpNqWC8w\n1 - Haga su pregunta y pida ayuda.\n2 - Después de que consigas ayuda, sal de la sala de chat.\nPuedes volver cuando necesites ayuda..", + 'TESTO_ASSISTENZA': "Para entrar en el sitio de AYNI:\nhttps://ayni.gifteconomy.app\n\n¿Olvidó su contraseña para acceder al sitio?\nhttps://ayni.gifteconomy.app/requestresetpwd\n\nChat AYNI BOT (este):\nhttps://t.me/notevoleaynibot\n\nChat AYNI - EMPOWER: Entra en ⛩ en nuestra comunidad de chat:\n ITA 🇮🇹: https://t.me/joinchat/C741mkx5QYXu-kyYCYvA8g\n SLO 🇸🇮: https://t.me/aynislovenija\n ESP 🇪🇸: https://t.me/joinchat/AL2qKBqJRuIEuc2FivgAzg\n ENG 🇬🇧: https://t.me/joinchat/AL2qKBYX0yVvOJ6Ssf9hKg\n FRA 🇫🇷: https://t.me/joinchat/Kz0wtxieJjzoC3L_DsrdZw \n\nChat de la AYNI-BIBLIO: https://t.me/joinchat/AL2qKExZKvenLgpVhOyefQ \n\nChat de ayuda y soporte: 'AYNI - HELP'\nDe lunes a sábado (8:00 - 21:00)\nhttps://t.me/joinchat/C741mlVmB_RMcOUpNqWC8w\n1 - Haga su pregunta y pida ayuda.\n2 - Después de que consigas ayuda, sal de la sala de chat.\nPuedes volver cuando necesites ayuda..", 'BENVENUTO': "Bienvenido", 'TUE_NAVI': "Aquí están sus naves programadas", 'HAI_I_7_REQUISITI': '¡LOS PRIMEROS PASOS ESTÁN BIEN!\nTiene los primeros 7 requisitos para entrar en la lista de embarque!', @@ -207,10 +209,11 @@ textlang = { 'Note': 'Notas', 'TEMPORANEA': 'TEMPORAL', 'NAVE': 'NAVE', + 'MSG_SEND_FROM': 'Mensaje enviado por', }, enUs: { "partecipanti": "participants", - 'TESTO_ASSISTENZA': "To enter the AYNI Site:\nhttps://ayni.gifteconomy.app\n\nForgot your password to access the site?\nhttps://ayni.gifteconomy.app/requestresetpwd\nChat AYNI BOT (this one):\nhttps://t.me/notevoleaynibot\n\nChat AYNI - EMPOWER: Enter ⛩ into our chat community:\nhttps://t.me/joinchat/AL2qKBYX0yVvOJ6Ssf9hKg\n\nChat AYNI-BIBLIO: https://t.me/joinchat/AL2qKExZKvenLgpVhOyefQ \n\nHelp and Support Chat: 'AYNI - HELP'.\nMonday to Saturday (8:00 - 21:00)\nhttps://t.me/joinchat/C741mlVmB_RMcOUpNqWC8w\n1 - Ask your question and ask for assistance.\n2 - After receiving help, exit the chat.\nYou can come back whenever you need help.", + 'TESTO_ASSISTENZA': "To enter the AYNI Site:\nhttps://ayni.gifteconomy.app\n\nForgot your password to access the site?\nhttps://ayni.gifteconomy.app/requestresetpwd\nChat AYNI BOT (this one):\nhttps://t.me/notevoleaynibot\n\nChat AYNI - EMPOWER: Enter ⛩ into our chat community:\nITA 🇮🇹: https://t.me/joinchat/C741mkx5QYXu-kyYCYvA8g\n SLO 🇸🇮: https://t.me/aynislovenija\n ESP 🇪🇸: https://t.me/joinchat/AL2qKBqJRuIEuc2FivgAzg\n ENG 🇬🇧: https://t.me/joinchat/AL2qKBYX0yVvOJ6Ssf9hKg\n FRA 🇫🇷: https://t.me/joinchat/Kz0wtxieJjzoC3L_DsrdZw \n\nChat AYNI-BIBLIO: https://t.me/joinchat/AL2qKExZKvenLgpVhOyefQ \n\nHelp and Support Chat: 'AYNI - HELP'.\nMonday to Saturday (8:00 - 21:00)\nhttps://t.me/joinchat/C741mlVmB_RMcOUpNqWC8w\n1 - Ask your question and ask for assistance.\n2 - After receiving help, exit the chat.\nYou can come back whenever you need help.", 'BENVENUTO': "Welcome", 'TUE_NAVI': "Here are your programmed ships", 'HAI_I_7_REQUISITI': 'FIRST STEPS OK!\nYou have the First 7 Requirements to Enter the Boarding List!', @@ -258,13 +261,14 @@ textlang = { 'Note': 'Note', 'TEMPORANEA': 'TEMPORARY', 'NAVE': 'SHIP', + 'MSG_SEND_FROM': 'Msg sent by', }, fr: { "L'Email è già stata Verificata": "Le courrier électronique a déjà été vérifié", "Nuova Registrazione": "Nouvelle inscription", "Effettuata una Nuova Registrazione": "Un nouvel enregistrement a été effectué", "partecipanti": "participants", - 'TESTO_ASSISTENZA': "Pour entrer sur le site AYNI:\nhttps://ayni.gifteconomy.app\n\nVous avez oublié votre mot de passe pour accéder au site ?\nhttps://ayni.gifteconomy.app/requestresetpwd\n\nChat AYNI BOT (ce):\nhttps://t.me/notevoleaynibot\n\nChat AYNI - EMPOWER : Entrez ⛩ dans notre Community chat:\nhttps://t.me/joinchat/Kz0wtxieJjzoC3L_DsrdZw\n\nChat AYNI-BIBLIO: https://t.me/joinchat/AL2qKExZKvenLgpVhOyefQ \n\nChat d’Aide et de Support: 'AYNI - HELP'\nDu lundi au samedi (8:00 - 21:00)\nhttps://t.me/joinchat/C741mlVmB_RMcOUpNqWC8w\n1 - Posez votre question et demandez d’être assisté.\n2 - Après avoir reçu l’aide, quittez le groupe .\\n Vous pourrez y entrer chaque fois qu’il vous sera nécessaire.", + 'TESTO_ASSISTENZA': "Pour entrer sur le site AYNI:\nhttps://ayni.gifteconomy.app\n\nVous avez oublié votre mot de passe pour accéder au site ?\nhttps://ayni.gifteconomy.app/requestresetpwd\n\nChat AYNI BOT (ce):\nhttps://t.me/notevoleaynibot\n\nChat AYNI - EMPOWER : Entrez ⛩ dans notre Community chat:\nITA 🇮🇹: https://t.me/joinchat/C741mkx5QYXu-kyYCYvA8g\n SLO 🇸🇮: https://t.me/aynislovenija\n ESP 🇪🇸: https://t.me/joinchat/AL2qKBqJRuIEuc2FivgAzg\n ENG 🇬🇧: https://t.me/joinchat/AL2qKBYX0yVvOJ6Ssf9hKg\n FRA 🇫🇷: https://t.me/joinchat/Kz0wtxieJjzoC3L_DsrdZw \n\nChat AYNI-BIBLIO: https://t.me/joinchat/AL2qKExZKvenLgpVhOyefQ \n\nChat d’Aide et de Support: 'AYNI - HELP'\nDu lundi au samedi (8:00 - 21:00)\nhttps://t.me/joinchat/C741mlVmB_RMcOUpNqWC8w\n1 - Posez votre question et demandez d’être assisté.\n2 - Après avoir reçu l’aide, quittez le groupe .\\n Vous pourrez y entrer chaque fois qu’il vous sera nécessaire.", 'BENVENUTO': "Bienvenue", 'TUE_NAVI': "Voici vos navires programmés", 'HAI_I_7_REQUISITI': 'PREMIÈRES ÉTAPES OK!\nvous avez les 7 premiers Requis pour Entrer dans la liste d\'embarquement!', @@ -312,13 +316,14 @@ textlang = { 'Note': 'Notes', 'TEMPORANEA': 'TEMPORAIRE', 'NAVE': 'NAVIRE', + 'MSG_SEND_FROM': 'Message envoyé par', }, pt: { "L'Email è già stata Verificata": "", "Nuova Registrazione": "Nuova Registrazione", "Effettuata una Nuova Registrazione": "Effettuata una Nuova Registrazione", "partecipanti": "partecipanti", - 'TESTO_ASSISTENZA': "Per entrare nel Sito AYNI:\nhttps://ayni.gifteconomy.app\n\nHai dimenticato la Password per accedere al sito?\nhttps://ayni.gifteconomy.app/requestresetpwd\n\nChat AYNI BOT (questa):\nhttps://t.me/notevoleaynibot\n\nChat AYNI - EMPOWER: Entra ⛩ nella nostra Community chat:\n https://t.me/joinchat/C741mkx5QYXu-kyYCYvA8g\n\nChat AYNI-BIBLIO: https://t.me/joinchat/AL2qKExZKvenLgpVhOyefQ \n\nChat di Aiuto e Supporto: 'AYNI - HELP'\nDa Lunedì al Sabato (8:00 - 21:00)\nhttps://t.me/joinchat/C741mlVmB_RMcOUpNqWC8w\n1 - Fai la tua domanda e chiedi assistenza.\n2 - Dopo aver ricevuto aiuto esci dalla chat.\nPotrai rientrare ogni qualvolta ne avrai la necessità.", + 'TESTO_ASSISTENZA': "Per entrare nel Sito AYNI:\nhttps://ayni.gifteconomy.app\n\nHai dimenticato la Password per accedere al sito?\nhttps://ayni.gifteconomy.app/requestresetpwd\n\nChat AYNI BOT (questa):\nhttps://t.me/notevoleaynibot\n\nChat AYNI - EMPOWER: Entra ⛩ nella nostra Community chat:ITA 🇮🇹: https://t.me/joinchat/C741mkx5QYXu-kyYCYvA8g\n SLO 🇸🇮: https://t.me/aynislovenija\n ESP 🇪🇸: https://t.me/joinchat/AL2qKBqJRuIEuc2FivgAzg\n ENG 🇬🇧: https://t.me/joinchat/AL2qKBYX0yVvOJ6Ssf9hKg\n FRA 🇫🇷: https://t.me/joinchat/Kz0wtxieJjzoC3L_DsrdZw \n\nChat AYNI-BIBLIO: https://t.me/joinchat/AL2qKExZKvenLgpVhOyefQ \n\nChat di Aiuto e Supporto: 'AYNI - HELP'\nDa Lunedì al Sabato (8:00 - 21:00)\nhttps://t.me/joinchat/C741mlVmB_RMcOUpNqWC8w\n1 - Fai la tua domanda e chiedi assistenza.\n2 - Dopo aver ricevuto aiuto esci dalla chat.\nPotrai rientrare ogni qualvolta ne avrai la necessità.", 'BENVENUTO': "Benvenuto", 'TUE_NAVI': "Ecco le tue Navi programmate", 'HAI_I_7_REQUISITI': 'PRIMI PASSI OK!\nHai i Primi 7 Requisiti per Entrare nella Lista d\'Imbarco!', @@ -366,6 +371,7 @@ textlang = { 'Note': 'Notas', 'TEMPORANEA': 'TEMPORÁRIO', 'NAVE': 'NAVE', + 'MSG_SEND_FROM': 'Mensagem enviada por', }, }; @@ -417,6 +423,7 @@ module.exports = { multiselect: 256, password: 512, listimages: 1024, + exact: 2048, }, MAX_PHASES: 5, @@ -454,7 +461,7 @@ module.exports = { }, getres__(text, res) { - let lang = getlangbyres(res); + let lang = this.getlangbyres(res); try { return textlang[lang][text] } catch (e) { @@ -857,7 +864,9 @@ module.exports = { const myfilters = []; params.fieldsearch.forEach((rec) => { const data = {}; - if (rec.type === this.FieldType.string) { + if (rec.type === this.FieldType.exact) { + data[rec.field] = params.filter.trim(); + }else if (rec.type === this.FieldType.string) { data[rec.field] = myregexp; } else if (rec.type === this.FieldType.number) { data[rec.field] = parseInt(params.filter.trim()); diff --git a/src/server/tools/shared_nodejs.js b/src/server/tools/shared_nodejs.js index 8a20690..b59db98 100755 --- a/src/server/tools/shared_nodejs.js +++ b/src/server/tools/shared_nodejs.js @@ -23,6 +23,7 @@ module.exports = { Admin: 1, Manager: 2, Teacher: 4, + Tutor: 8, }, MessageOptions: {