From c6acadb3e6e0f0bbd74e11812349c180d65e7cf9 Mon Sep 17 00:00:00 2001 From: Paolo Arena Date: Mon, 11 May 2020 22:43:14 +0200 Subject: [PATCH] Grosse Modifiche Completate ! --- docs/passi.txt | 19 ++- src/server/models/listaingresso.js | 19 ++- src/server/models/nave.js | 60 +++----- src/server/models/navepersistente.js | 9 +- src/server/models/user.js | 91 +++++++----- src/server/router/dashboard_router.js | 12 +- src/server/router/index_router.js | 194 +++++++++++++++----------- src/server/router/users_router.js | 27 +--- src/server/telegram/telegrambot.js | 22 +-- src/server/tools/general.js | 45 +++--- 10 files changed, 269 insertions(+), 229 deletions(-) diff --git a/docs/passi.txt b/docs/passi.txt index db45952..9dc6c40 100644 --- a/docs/passi.txt +++ b/docs/passi.txt @@ -4,13 +4,17 @@ AGGIORNARE: // ++Todo: DA FARE: TESTARE -> inviare il msg anche al Sognatore della Gift Chat -- Aggiornare il titolo della Gift Chat (da 5/5 a 12/5) -- Aggiornare il testo sulla Placca (Data Inizio e Data Fine Doni) +X - Aggiornare il titolo della Gift Chat (da 5/5 a 12/5) +X - Aggiornare il testo sulla Placca (Data Inizio e Data Fine Doni) + + +// ++Todo: SISTEMARE: + // ++Todo: TOGLIERE! -- AGGIONARE AMBIENTE DI TEST +x- AGGIONARE AMBIENTE DI TEST - ESEGUIRE LA CONVERSIONE 1 E 2 ! - CHECK getProssimiInLista @@ -20,10 +24,10 @@ X - CONTROLLARE arrIdTelegramUsers - TESTARE AGGIUNGI VIAGGIO -- Accorpare tutti i sotto account, in 1 unico ! - - Nel campo note, metterci l'username vecchio. +x- Accorpare tutti i sotto account, in 1 unico ! +x - Nel campo note, metterci l'username vecchio. - - Sistemare le navi con num_tess === 4 : indorder=0 e 46 : +x - Sistemare le navi con num_tess === 4 : indorder=0 e 46 : Prendere quelli del num_tess === 3 e SOSTITUISCI ind_order del num_Tess = 4 con ind_order di num_tess = 3 ------------- @@ -52,3 +56,6 @@ SOSTITUISCI: TRADURRE: 'Giorno in cui Inviare il DONO': 'Hai 4 giorni di tempo per inviare il tuo dono. Giorno di Chiusura:', + + +- Mettere le bandierine nella lista Zoom (su AYNI BOT). diff --git a/src/server/models/listaingresso.js b/src/server/models/listaingresso.js index e6d9d61..dec3af6 100755 --- a/src/server/models/listaingresso.js +++ b/src/server/models/listaingresso.js @@ -171,7 +171,7 @@ ListaIngressoSchema.statics.deleteUserInListaIngresso = async function (idapp, u }; -ListaIngressoSchema.statics.addUserInListaIngresso = async function (idapp, username, invitante_username, lang, addednowreal, nuovo, dateins, note, added) { +ListaIngressoSchema.statics.addUserInListaIngresso = async function (idapp, username, invitante_username, lang, addednowreal, nuovo, dateins, note, added, opt) { const ListaIngresso = this; const { User } = require('./user'); @@ -214,6 +214,16 @@ ListaIngressoSchema.statics.addUserInListaIngresso = async function (idapp, user const nome = await User.getNameSurnameByUsername(idapp, username); msgtext = '🔵 ' + nome + ' (' + username + ') ' + tools.gettranslate('ADDED_TOLISTAINGRESSO', lang); await telegrambot.sendMsgTelegram(idapp, username, msgtext, true); // Anche a STAFF + + if (!!opt) { + if (!!opt.sendmsgtoinvitante) { + if (opt.sendmsgtoinvitante) { + const nome = await User.getNameSurnameByUsername(idapp, invitante_username); + // msgtext = '🔵 ' + nome + ' (' + username + ') ' + tools.gettranslate('ADDED_TOLISTAINGRESSO', lang); + // await telegrambot.sendMsgTelegram(idapp, username, msgtext, true); // Anche a STAFF + } + } + } } } return ris; @@ -405,8 +415,7 @@ ListaIngressoSchema.statics.getProssimiInLista = async function (idapp, solonuov for (const rec of arrlista) { - // ++Todo: TOGLIERE! - if (false) { + if (true) { rec.numNaviEntrato = await Nave.getnumNaviByUsername(idapp, rec.username); rec.numinvitati = await ListaIngresso.getnumInvitati(idapp, rec.username); @@ -602,10 +611,6 @@ ListaIngressoSchema.statics.creaTessituraeConv = async function (idapp) { } }, { new: false }); - - // Crea Record ListaIngresso - // const newrecingr = await ListaIngresso.addUserInListaIngresso(idapp, myuser.username, invitante_username, myuser.lang, false, true, myuser.date_reg, note, added); - // Assegna l'Invitante agli Invitati ! trova tutti gli invitati che hanno questo username const arrinvitati = await User.find({ idapp, aportador_solidario: myuser.username }, { username: 1 }); for (const invitato of arrinvitati) { diff --git a/src/server/models/nave.js b/src/server/models/nave.js index 24f9c34..22931f3 100755 --- a/src/server/models/nave.js +++ b/src/server/models/nave.js @@ -10,6 +10,8 @@ const { User } = require('./user'); const { ObjectID } = require('mongodb'); +const printf = require('util').format; + const shared_consts = require('../tools/shared_nodejs'); mongoose.Promise = global.Promise; @@ -81,6 +83,7 @@ NaveSchema.statics.getTotInLista = async function (idapp) { NaveSchema.statics.findByIndOrder = function (idapp, ind_order) { const Nave = this; + try { return Nave.findOne({ 'idapp': idapp, @@ -297,7 +300,6 @@ NaveSchema.statics.findRecByRigaColParent = async function (idapp, riga, col, nu myrigacol.riga = lastrec.riga; myrigacol.col = lastrec.col; } else { - //lastrec = await User.findByIndOrder(idapp, 0); lastrec = await Nave.findGeneric({ idapp, riga: 0, col: 0 }); break; } @@ -306,7 +308,6 @@ NaveSchema.statics.findRecByRigaColParent = async function (idapp, riga, col, nu } if (!lastrec) { - // return await User.findByIndOrder(idapp, 0); return await Nave.findGeneric({ idapp, riga: 0, col: 0 }); } @@ -452,13 +453,13 @@ function getQueryProj(myfilter) { } }, { - $unwind: "$mylista" + $replaceRoot: { newRoot: { $mergeObjects: [ { $arrayElemAt: [ "$mylista", 0 ] }, "$$ROOT" ] } } }, { $lookup: { from: "users", as: "user", - let: {username: '$mylista.username' }, + let: {username: '$username' }, pipeline: [ { $match: { @@ -793,19 +794,22 @@ NaveSchema.statics.getNavePos = async function (idapp, riga, col, solorecord, in if (!!recnavepersistente.tutor_namesurname) 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, lang) + tools.ACAPO; + data += '💬 ' + printf(tools.get__('APERTURA_CHIUSURA_GIFT_CHAT', lang), tools.getstrDateLong(recnavepersistente.date_gift_chat_open, lang), tools.getstrDateLong(recnavepersistente.date_start, lang)) + tools.ACAPO; - data += '🎁 ' + tools.get__('Giorno in cui Inviare il DONO', lang) + ' : ' + tools.getstrDateLong(recnavepersistente.date_start, lang) + tools.ACAPO; + + // data += '💬 ' + tools.get__('Giorno di Apertura GIFT CHAT', lang) + ': ' + tools.getstrDateLong(recnavepersistente.date_gift_chat_open, lang) + tools.ACAPO; + + // data += '🎁 ' + tools.get__('Giorno in cui Inviare il DONO', lang) + ' : ' + tools.getstrDateLong(recnavepersistente.date_start, lang) + tools.ACAPO; if (!!recnavepersistente.note_bot) data += tools.get__('Note', lang) + ": " + recnavepersistente.note_bot + tools.ACAPO; if (recnavepersistente.provvisoria) - mystrtemp = tools.get__('TEMPORANEA', lang) + ' '; + mystrtemp = '' + tools.get__('TEMPORANEA', lang) + ' '; } else data = ""; - mystr = tools.ACAPO + tools.get__('NAVE', lang) + ' ' + '[' + riga + '.' + col + '] ' + mystrtemp + tools.ACAPO + data + tools.ACAPO + mystr; + mystr = tools.ACAPO + '⛵️ ' + tools.get__('NAVE', lang) + ' ' + '[' + riga + '.' + col + '] ' + mystrtemp + tools.ACAPO + data + tools.ACAPO + mystr; return mystr; } catch (e) { @@ -815,36 +819,6 @@ NaveSchema.statics.getNavePos = async function (idapp, riga, col, solorecord, in }; -// async function Fuochi8Completati(idapp, params) { -// // Inviare un msg al Mediatore che può aprire la Chat con gli 8 fuochi -// const telegrambot = require('../telegram/telegrambot'); -// -// let text = '\nCompletata NAVE [riga=' + params.riga + ',col=' + params.col + ', ind_order=' + params.ind_order + ']'; -// console.log(text); -// tools.writeNaveLog(text); -// -// const { User } = require('./user'); -// -// const rec = await User.findByIndOrder(idapp, params.ind_order); -// -// text = await Nave.getNaveByUser(idapp, params.ind_order, rec.lang, true); -// -// // Inviare un msg a questi 8 Fuochi, che la loro placca è Pronta ! -// -// if (tools.isAbilitaNave(idapp)) { -// // ............. -// } -// -// if (false) { -// await telegrambot.sendMsgTelegram(idapp, rec.username, text, true); -// } else { -// await telegrambot.sendMsgTelegramToTheAdmin(idapp, text); -// } -// -// // Inviare la placca a Managers -// // await telegrambot.sendMsgTelegramToTheManagers(idapp, txt); -// } - NaveSchema.statics.getArrPosizioniByIndOrder = async function (idapp, ind_order) { const Nave = this; @@ -911,7 +885,7 @@ 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) + ')'; + mystr += '[' + conta + '] [' + rec.riga + '.' + rec.col + '] ' + rec.ind_order + ' ' + rec.name + ' ' + rec.surname + ' (' + tools.getstrDateShort(recnavepersistente.date_gift_chat_open) + ')'; mystr += ' num_tess = ' + rec.num_tess; mystr += '\n'; } @@ -1097,7 +1071,7 @@ NaveSchema.statics.addUserFromListaIngresso_IntoNave = async function (init, ida } if ((params.riga === 4 + 3) && (params.col === (8 * 2) + 3)) { // Si ritesse il Fondo AYNI nella Nave 3.3 - const userFondo = await User.findByIndOrder(idapp, 0); + const userFondo = await User.findByIndex(idapp, 0); params.ind_order = userFondo.ind_order; params.id = userFondo._id; params.num_tess = userFondo.num_tess; @@ -1129,6 +1103,8 @@ NaveSchema.statics.generaNave = async function (idapp, mydata) { numpersone: mydata.numpersone, }; + //++Todo: date_gift_chat_open e date_start : Ricalcolarle in Automatico... + params.primavolta = (params.riga === 1) && (params.col === 1); // params.primavolta = false; @@ -1141,7 +1117,7 @@ NaveSchema.statics.generaNave = async function (idapp, mydata) { await NavePersistente.addRecordNavePersistenteByParams({ idapp, riga: 0, col: 0, riga1don: 0, col1don: 0 }); - const userFondo = await User.findByIndOrder(idapp, 0); + const userFondo = await User.findByIndex(idapp, 0); if (!userFondo || userFondo === undefined) { await telegrambot.sendMsgTelegramToTheAdmin(idapp, 'Devi creare l\'utente FONDO , con ind_order = 0 ! '); } @@ -1270,7 +1246,7 @@ NaveSchema.statics.getNaveByUser = async function (idapp, username, lang, fuoco) if (persistente.provvisoria) { mystr += tools.ACAPO + tools.get__('NAVE', lang) + ' ' + '[' + mypos.riga + '.' + mypos.col + '] - ' + tools.get__('TEMPORANEA', lang) + tools.ACAPO + tools.ACAPO; } else { - mystr += await Nave.getNavePos(idapp, mypos.riga, mypos.col, false, ind_order); + mystr += await Nave.getNavePos(idapp, mypos.riga, mypos.col, false, pos.ind_order); } } // mystr += await Nave.getPlaccaPerDonatore(idapp, pos.riga, pos.col, false, rec); diff --git a/src/server/models/navepersistente.js b/src/server/models/navepersistente.js index 9b33351..3b4c334 100755 --- a/src/server/models/navepersistente.js +++ b/src/server/models/navepersistente.js @@ -125,13 +125,13 @@ function getQueryProj(myfilter) { } }, { - $unwind: "$mylista" + $replaceRoot: { newRoot: { $mergeObjects: [ { $arrayElemAt: [ "$mylista", 0 ] }, "$$ROOT" ] } } }, { $lookup: { from: "users", as: "user", - let: {username: '$mylista.username' }, + let: {username: '$username' }, pipeline: [ { $match: { @@ -196,6 +196,7 @@ NavePersistenteSchema.statics.getListaNavi = function (idapp) { col: 1, riga1don: 1, col1don: 1, + date_gift_chat_open: 1, date_start: 1, provvisoria: 1, DoniConfermati: 1, @@ -252,6 +253,10 @@ NavePersistenteSchema.statics.getLastRigaCol = async function (idapp) { return NavePersistente.findOne({ idapp }).sort({ _id: -1 }); }; +NavePersistenteSchema.statics.getLastRigaColDefinitiva = async function (idapp) { + return NavePersistente.findOne({ idapp, provvisoria: false }).sort({ riga: -1, col: -1 }); +}; + NavePersistenteSchema.pre('save', async function (next) { if (this.isNew) { const myrec = await NavePersistente.findOne().limit(1).sort({ _id: -1 }); diff --git a/src/server/models/user.js b/src/server/models/user.js index 6ac73f4..8ac6f40 100755 --- a/src/server/models/user.js +++ b/src/server/models/user.js @@ -405,6 +405,7 @@ UserSchema.statics.getUserShortDataByUsername = async function (idapp, username) $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }], }, { lang: 1, + index: 1, ind_order: 1, username: 1, aportador_solidario: 1, @@ -647,17 +648,24 @@ UserSchema.statics.getLastUser = function (idapp) { return User.findOne({ idapp, $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }], - }).sort({ ind_order: -1 }) + }).sort({ index: -1 }) }; UserSchema.statics.findByIndOrder = function (idapp, ind_order) { const User = this; + return User.getRecByIndOrder(idapp, ind_order); + +}; + +UserSchema.statics.findByIndex = function (idapp, index) { + const User = this; + try { // ++Todo: non mettere tutti i campi !! return User.findOne({ idapp, - ind_order, + index, $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }], }); } catch (e) { @@ -711,7 +719,7 @@ UserSchema.pre('save', async function (next) { */ next(); - }catch (e) { + } catch (e) { console.error(e.message); } }); @@ -855,12 +863,9 @@ UserSchema.statics.SetTelegramIdSuccess = async function (idapp, id, teleg_id) { UserSchema.statics.getLangByIndOrder = async function (idapp, ind_order) { const User = this; - return await User.findOne({ idapp, ind_order }, { lang: 1 }) - .then((rec) => { - return (!!rec) ? rec.lang : ''; - }).catch((e) => { - return 'it'; - }); + const rec = await User.getSmallRecByIndOrder(idapp, ind_order); + return (!!rec) ? rec.lang : ''; + }; @@ -921,10 +926,14 @@ UserSchema.statics.getSmallRecByIndOrder = async function (idapp, ind_order) { }, { idapp: 1, + index: 1, ind_order: 1, + old_order: 1, username: 1, name: 1, - surname: 1 + lang: 1, + surname: 1, + 'profile.teleg_id': 1, }); if (!!rec) @@ -938,6 +947,27 @@ UserSchema.statics.getSmallRecByIndOrder = async function (idapp, ind_order) { }; +UserSchema.statics.getRecByIndOrder = async function (idapp, ind_order) { + + try { + const rec = await ListaIngresso.getarray(idapp, + { + idapp, + ind_order, + deleted: false, + }); + + if (!!rec) + return rec[0]; + + return null; + + } catch (e) { + console.error('getRecByIndOrder', e); + } + +}; + UserSchema.statics.getusersManagers = async function (idapp) { const User = this; @@ -1142,7 +1172,10 @@ UserSchema.statics.getDashboard = async function (idapp, aportador_solidario, us dashboard.arrposizioni = await Nave.getArrPosizioniByUsername(idapp, username); - const arrrec = await ListaIngresso.getProssimiInLista(idapp, true); + let arrrec = []; + if (dashboard.arrimbarchi.length > 0) { + arrrec = await ListaIngresso.getProssimiInLista(idapp, true); + } for (let myimbarco of dashboard.arrimbarchi) { if (!!myimbarco.invitante_username) @@ -1158,6 +1191,7 @@ UserSchema.statics.getDashboard = async function (idapp, aportador_solidario, us mypos._doc.nave_partenza = await NavePersistente.findByRigaColByDonatore(idapp, mypos.riga, mypos.col, 0); } + //for (let indriga = 0; indriga < 10; indriga++) { // dashboard.navi_partenza.push(await Nave.getPrimaNaveByRiga(idapp, indriga)); //} @@ -1196,7 +1230,7 @@ UserSchema.statics.getDashboard = async function (idapp, aportador_solidario, us myrec.nave_partenza = await NavePersistente.findByRigaColByDonatore(idapp, myrec.riga, myrec.col, 0); - arrnew.push(myrec); + arrnew.push(myrec); } } } @@ -1212,6 +1246,7 @@ UserSchema.statics.getDashboard = async function (idapp, aportador_solidario, us } }; +/* UserSchema.statics.fixUsername = async function (idapp, aportador_solidario_ind_order, username) { const User = this; @@ -1229,6 +1264,7 @@ UserSchema.statics.fixUsername = async function (idapp, aportador_solidario_ind_ }; +*/ UserSchema.statics.findByCellAndNameSurname = function (idapp, cell, name, surname) { const User = this; @@ -1371,7 +1407,7 @@ UserSchema.statics.visuUtentiNonInNavi = async function (idapp) { visualizza = true; if (visualizza) { - mystr += user.username + ' ' + user.name + ' ' + user.surname + ' [' + user.ind_order + '] [inv=' + user.numinvitati + ']' + mystr += user.username + ' ' + user.name + ' ' + user.surname + ' [' + user.index + '] [inv=' + user.numinvitati + ']' trovato = true; } @@ -1524,7 +1560,7 @@ UserSchema.statics.getLastUsers = async function (idapp) { name: 1, surname: 1, date_reg: 1, - ind_order: 1, + index: 1, 'profile.nationality': 1, }).sort({ date_reg: -1 }).limit(lastn).then((arr) => { //return JSON.stringify(arr) @@ -1717,26 +1753,10 @@ async function addUtentiInLista(idapp, mode, arrusers) { } -UserSchema.statics.deveRitessersi = async function (idapp, ind_order) { - - const myrec = await User.findOne({ - 'idapp': idapp, - 'ind_order': ind_order, - "profile.vuole_ritessersi": true - }); - - return (!!myrec) - -}; - UserSchema.statics.getUsernameByIndOrder = async function (idapp, ind_order) { - const myrec = await User.findOne({ - 'idapp': idapp, - 'ind_order': ind_order, - }, { username: 1 }); - - return (!!myrec) ? myrec.username : '' + const myrec = await User.getSmallRecByIndOrder(idapp, ind_order); + return (!!myrec) ? myrec.username : ''; }; @@ -1755,7 +1775,7 @@ UserSchema.statics.ricalcolaIndex = async function (idapp) { const User = this; const arrusers = await User.find({ idapp }).sort({ ind_order: 1 }); - let index = 1; + let index = 0; try { for (const user of arrusers) { let field = { @@ -1766,7 +1786,7 @@ UserSchema.statics.ricalcolaIndex = async function (idapp) { const ris = await User.findOneAndUpdate({ _id: user._id }, { $set: field }, { new: false }); } - }catch (e) { + } catch (e) { console.error(e.message); } @@ -1799,7 +1819,8 @@ UserSchema.statics.changeInvitante = async function (idapp, username, invitante_ // ** const rec_ingr = await ListaIngresso.findOne({ idapp, username: username }); if (!!rec_ingr) { - await ListaIngresso.findByIdAndUpdate(rec_ingr._id, { $set: { invitante_username, ind_order: ind_order_ingr } }); + // await ListaIngresso.findByIdAndUpdate(rec_ingr._id, { $set: { invitante_username, ind_order: ind_order_ingr } }); + await ListaIngresso.findByIdAndUpdate(rec_ingr._id, { $set: { invitante_username } }); } diff --git a/src/server/router/dashboard_router.js b/src/server/router/dashboard_router.js index 8004aef..0319278 100755 --- a/src/server/router/dashboard_router.js +++ b/src/server/router/dashboard_router.js @@ -122,6 +122,8 @@ router.post('/getnavi', authenticate, async (req, res) => { let arrnavi = await NavePersistente.findAllIdApp(idapp); + // let arrnavi = await NavePersistente.find({idapp, date_gift_chat_open: { $gte: tools.IncDateNow(-1000 * 3600 * 24 * 7 ) } }).sort({ riga: 1, col: 1 }); + for (nave of arrnavi) { //nave.rec = await Nave.getNaveByRigaCol(idapp, nave.riga, nave.col); nave._doc.rec = { @@ -153,8 +155,14 @@ router.post('/getnavi', authenticate, async (req, res) => { router.post('/getdoninavi', authenticate, async (req, res) => { const idapp = req.body.idapp; const ricalcola = req.body.ricalcola; + const showall = req.body.showall; + + let arrnavi = null; + if (showall) + arrnavi = await NavePersistente.findAllIdApp(idapp); + else + arrnavi = await NavePersistente.find({idapp, date_gift_chat_open: { $gte: tools.IncDateNow(-1000 * 3600 * 24 * 7 ) } }).sort({ riga: 1, col: 1 }); - let arrnavi = await NavePersistente.findAllIdApp(idapp); let test = false; //arrnavi.push({ riga: indriga, col: indcol, rigadon: indriga + 3, coldon: (indcol * 8) - 7 }); @@ -168,7 +176,7 @@ router.post('/getdoninavi', authenticate, async (req, res) => { index++; } } else { - arrnavi = await NavePersistente.findAllIdApp(idapp); + // arrnavi = await NavePersistente.findAllIdApp(idapp); for (nave of arrnavi) { if (nave.provvisoria || nave.DoniTotali !== nave.DoniConfermati) { nave._doc.rec = await Nave.getNaveByRigaCol(idapp, nave.riga1don, nave.col1don); diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js index f555627..bb7976d 100755 --- a/src/server/router/index_router.js +++ b/src/server/router/index_router.js @@ -315,15 +315,15 @@ async function checkIfSbloccatiRequisiti(idapp, allData, id) { // CHECK APORTADOR SOLIDARIO: if (!!allData.useraportador) { -/* - const is9reqAportador = await User.isUserQualified9(idapp, allData.myuser.aportador_solidario); + /* + 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.myuser.aportador_solidario, msgtext, true); // Anche a STAFF - } -*/ + 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.myuser.aportador_solidario, msgtext, true); // Anche a STAFF + } + */ } } @@ -405,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, true); + telegrambot.sendMsgTelegramToTheManagers(idapp, addtext, true); } if (mydata.table === 'users') { @@ -534,107 +534,137 @@ router.patch('/callfunz', authenticate, async (req, res) => { } } - const myuser = await User.findOne({ idapp, username }); + let myuser = await User.findOne({ idapp, username }); let rimosso = 0; if (mydata.myfunc === shared_consts.CallFunz.SOSTITUISCI) { // SOSTITUISCI + + username_da_sostituire = mydata.data.username_da_sostituire; + mianavedasost = await Nave.findOne({ idapp, riga: mydata.data.riga, col: mydata.data.col }); + if (!!mianavedasost) { - // Sostituisci l'Utente - myusernuovo = await User.getUserShortDataByUsername(idapp, mydata.data.username); - let navepersistente = await NavePersistente.findByRigaColByDonatore(idapp, mydata.data.riga, mydata.data.col, 0); + // Sostituisci l'Utente + myusernuovo = await User.getUserShortDataByUsername(idapp, mydata.data.username); + let navepersistente = await NavePersistente.findByRigaColByDonatore(idapp, mydata.data.riga, mydata.data.col, 0); - if (!!myusernuovo) { - // Controlla prima se è in una Nave Temporanea, allora lo elimina - miaarrnavi = await Nave.find({ idapp, ind_order: myusernuovo.ind_order }); - if (miaarrnavi) { - for (const mianave of miaarrnavi) { - let persistente = await NavePersistente.findByRigaColByDonatore(idapp, mianave.riga, mianave.col, 0); - if (persistente.provvisoria) { + if (!!myusernuovo) { + + if (!mydata.data.AddImbarco && !!mianavedasost && mianavedasost.ind_order > 0) { + // Controlla prima se è in una Nave Temporanea, allora lo elimina dalla Nave Temporanea + + miaarrnavi = await Nave.getArrPosizioniByUsername(idapp, username); + if (miaarrnavi) { + for (const mianave of miaarrnavi) { + let persistente = await NavePersistente.findByRigaColByDonatore(idapp, mianave.riga, mianave.col, 0); + if (persistente.provvisoria) { + fieldsvalue = { + ind_order: -1 + }; + + let ris = await Nave.findByIdAndUpdate(mianave.id, { $set: fieldsvalue }); + if (!!ris) { + rimosso++; + break; // Rimuovilo solo 1 ! + } + } + } + } + } + + if (!!myuser) { + if (!!mianavedasost && mianavedasost.ind_order >= 0) { + // Metti campo 'delete': true su ListaIngresso + olduseringresso = await ListaIngresso.findOne({ idapp, ind_order: mianavedasost.ind_order }); + if (!!olduseringresso) { + let fieldsvalue = { + deleted: true + }; + const risul = await ListaIngresso.findByIdAndUpdate(olduseringresso.id, { $set: fieldsvalue }, { new: false }); + } + } + } + + if (!!myuser) { + if (mydata.data.deleteUser && !!mianavedasost && mianavedasost.ind_order > 0) { + // Metti Deleted allo User fieldsvalue = { - ind_order: -1 + deleted: true }; - - let ris = await Nave.findByIdAndUpdate(mianave.id, { $set: fieldsvalue }); - if (!!ris) { - rimosso++; - } + await User.findByIdAndUpdate(myuser.id, { $set: fieldsvalue }); + await telegrambot.sendMsgTelegramToTheManagers(idapp, `L\'utente ${myuser.name} ${myuser.surname} (${myuser.username}) è stato cancellato (nascosto) perchè sostituito (da ${req.user.name} ${req.user.surname} )`); } } - } - if (!!myuser) { - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - // CONTROLLARE !!! - // ++Todo: Controllare che sia corretto che lo nascondo !!! - // Metti campo 'delete': true su ListaIngresso - olduseringresso = await ListaIngresso.findOne({ idapp, ind_order: old_ind_order }); - if (!!olduseringresso) { - let fieldsvalue = { - deleted: true - }; - const risul = await ListaIngresso.findByIdAndUpdate(olduseringresso.id, { $set: fieldsvalue }, { new: false }); + let ind_order = -1; + let myingr = null; + // Estrai un ind_order dalla Lista, se era ancora in attesa + if (!mydata.data.AddImbarco) + myingr = await ListaIngresso.findOne({ idapp, added: false, username: myusernuovo.username }); + + if (!!myingr) { + ind_order = myingr.ind_order; + + myingr.added = true; + await myingr.save(); + } else { + // Crea un nuovo Ingresso + myingr = await ListaIngresso.addUserInListaIngresso(idapp, myuser.username, myuser.username, myuser.lang, false, true, null, null, true); + ind_order = myingr.ind_order; + + await myingr.save(); } - } - if (!!myuser) { - // Metti Deleted allo User + // Aggiorna la Nave con il Nuovo fieldsvalue = { - deleted: true + ind_order }; - await User.findByIdAndUpdate(myuser.id, { $set: fieldsvalue }); - } - - // Aggiorna la Nave con il Nuovo - fieldsvalue = { - ind_order: myusernuovo.ind_order - }; - - const dachi = req.user.name + ' ' + req.user.surname; + const dachi = req.user.name + ' ' + req.user.surname; - return await Nave.findByIdAndUpdate(mianavedasost.id, { $set: fieldsvalue }) - .then(async (rec) => { - // tools.mylogshow(' REC TO MODIFY: ', rec); - if (!rec) { - return res.status(404).send(); - } else { - if (mydata.notifBot && !!navepersistente.link_chat) { - // Send Notification to the BOT - let messaggio = tools.get__('SPOSTATO', req.user.lang); + return await Nave.findByIdAndUpdate(mianavedasost.id, { $set: fieldsvalue }) + .then(async (rec) => { + // tools.mylogshow(' REC TO MODIFY: ', rec); + if (!rec) { + return res.status(404).send(); + } else { + if (mydata.data.notifBot && !!navepersistente.link_chat) { + // Send Notification to the BOT + let messaggio = tools.get__('SPOSTATO', req.user.lang); - if (!!navepersistente.date_start) { - 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 + tools.get__('ENTRA_GIFT_CHAT', req.user.lang) + navepersistente.link_chat + tools.ACAPO; + if (!!navepersistente.date_start) { + messaggio += tools.ACAPO + tools.get__('DATA_PART_NAVE', req.user.lang) + tools.getstrDateLong(navepersistente.date_gift_chat_open) + tools.ACAPO; + } + if (!!navepersistente.link_chat) { + messaggio += tools.ACAPO + '👉🏻👉🏻 ' + tools.get__('ENTRA_GIFT_CHAT', req.user.lang) + ' ' + tools.ACAPO; + } + + const myplacca = await Nave.getNavePos(idapp, navepersistente.riga, navepersistente.col); + messaggio += tools.ACAPO + myplacca; + + await telegrambot.sendMsgTelegram(idapp, myusernuovo.username, messaggio); + + await telegrambot.sendMsgTelegramToTheManagers(idapp, mydata.notifBot.txt + ' ' + myusernuovo.name + ' ' + myusernuovo.surname + ' [da ' + dachi + ']' + tools.ACAPO + 'Inviato messaggio: ' + messaggio); + await telegrambot.sendMsgTelegram(idapp, req.user.username, mydata.notifBot.txt); + await telegrambot.sendMsgTelegram(idapp, req.user.username, myplacca); } - const myplacca = await Nave.getNavePos(idapp, navepersistente.riga, navepersistente.col); - messaggio += tools.ACAPO + myplacca; - await telegrambot.sendMsgTelegram(idapp, myusernuovo.username, messaggio); + // const nomecognomeprima = myuser.name + ' ' + myuser.surname + '(' + myuser.username + ')'; + // const nomecognomenuovo = await User.getNameSurnameByUsername(idapp,); - await telegrambot.sendMsgTelegramToTheManagers(idapp, mydata.notifBot.txt + ' ' + myusernuovo.name + ' ' + myusernuovo.surname + ' [da ' + dachi + ']' + tools.ACAPO + 'Inviato messaggio: ' + messaggio); - await telegrambot.sendMsgTelegram(idapp, req.user.username, mydata.notifBot.txt); - await telegrambot.sendMsgTelegram(idapp, req.user.username, myplacca); + res.send({ code: server_constants.RIS_CODE_OK, msg: '' }); } - - // const nomecognomeprima = myuser.name + ' ' + myuser.surname + '(' + myuser.username + ')'; - // const nomecognomenuovo = await User.getNameSurnameByUsername(idapp,); - - res.send({ code: server_constants.RIS_CODE_OK, msg: '' }); - } - - }).catch((e) => { - tools.mylogserr('Error patch USER: ', e); - res.status(400).send(); - }) + }).catch((e) => { + tools.mylogserr('Error patch USER: ', e); + res.status(400).send(); + }) + } } } else if (mydata.myfunc === shared_consts.CallFunz.AGGIUNGI_NUOVO_IMBARCO) { // Ottieni il prossimo Numero di Tessitura diff --git a/src/server/router/users_router.js b/src/server/router/users_router.js index a9663b3..5df10b2 100755 --- a/src/server/router/users_router.js +++ b/src/server/router/users_router.js @@ -125,21 +125,6 @@ router.post('/', async (req, res) => { // nomeaportador_corretto = recextra.aportador_solidario_originale_name_surname; // } - const lastuser = await User.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 (lastindorder > 0) - user.ind_order = lastindorder + 1; - const numero = user.name.slice(-1); if ((numero === '2') || (numero === '3') || (numero === '4') || (numero === '5') || (numero === '6')) { recorig = await User.findByCellAndNameSurname(user.idapp, user.profile.cell, user.name.slice(0, -1), user.surname); @@ -238,7 +223,7 @@ router.post('/', async (req, res) => { recextra.username = user.username; await recextra.save(); - await User.fixUsername(user.idapp, user.ind_order, user.username); + // await User.fixUsername(user.idapp, user.ind_order, user.username); } return token; }) @@ -646,7 +631,7 @@ router.post('/dbop', authenticate, async (req, res) => { lastrec = await User.find({ idapp }).sort({ _id: -1 }).limit(1); let last = 1; if (lastrec) { - last = lastrec[0].ind_order; + last = lastrec[0].index; } if (!last) { last = 1; @@ -655,15 +640,15 @@ router.post('/dbop', authenticate, async (req, res) => { for (let ind = 0; ind < 100; ind++) { let myuser = new User(); myuser._id = new ObjectID(); - myuser.ind_order = last + ind + 1; + myuser.index = last + 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.surname = 'Ar' + myuser.ind_order; + myuser.name = 'U' + myuser.index; + myuser.surname = 'Ar' + myuser.index; myuser.verified_email = true; - if (myuser.ind_order < 2) + if (myuser.index < 2) myuser.perm = "3"; myuser.username = "Userna_" + myuser.name; myuser.profile.special_req = true; diff --git a/src/server/telegram/telegrambot.js b/src/server/telegram/telegrambot.js index 5a33fa4..f0d7db1 100755 --- a/src/server/telegram/telegrambot.js +++ b/src/server/telegram/telegrambot.js @@ -462,7 +462,7 @@ module.exports = { let userdest = mylocalsconf.user.aportador_solidario; let langdest = mylocalsconf.user.lang; let NameFrom = `${mylocalsconf.user.name} ${mylocalsconf.user.surname}`; - const ind_order = mylocalsconf.user.ind_order; + const index = mylocalsconf.user.index; let aportador = ''; if (userdest) { @@ -478,7 +478,7 @@ module.exports = { NameFrom = await User.getNameSurnameByUsername(mylocalsconf.idapp, userdest) + aportador; aportador = NameFrom; } - text = printf(getstr(langdest, '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})`, index, aportador); } let addtext = ""; @@ -501,7 +501,7 @@ module.exports = { if (usersmanagers) { for (const rec of usersmanagers) { await this.sendMsgTelegramByIdTelegram(idapp, rec.profile.teleg_id, emo.ROBOT_FACE + '[BOT-STAFF]' + emo.ADMIN + ': ' + text, undefined, undefined, true); - await tools.snooze(300) + await tools.snooze(200) } } } @@ -840,6 +840,10 @@ class Telegram { } + geturlfaq() { + return tools.getHostByIdApp(this.idapp) + '/faq' + } + async IsTesto(msg) { let risp = ''; @@ -855,7 +859,7 @@ class Telegram { const rec = this.getRecInMem(msg); let myname = ''; if (rec.user) { - myname = rec.user.name + ' ' + rec.user.surname + ' (n.' + rec.user.ind_order + ')'; + myname = rec.user.name + ' ' + rec.user.surname + ' (n.' + rec.user.index + ')'; } if (rec.statusmsg === Status.WAITFOR_RISPOSTA) { @@ -917,7 +921,7 @@ class Telegram { if (!!rec.user) { const myrec = await User.getUserShortDataByUsername(this.idapp, rec.user.username); - risp += '\nSul sito ti sei registrato come:\n\n[N. ' + rec.user.ind_order + ']: ' + rec.user.name + ' ' + rec.user.surname + '\nUsername: ' + rec.user.username + '\n' + 'Email: ' + rec.user.email + '\nLang: ' + rec.user.lang + tools.ACAPO; + risp += '\nSul sito ti sei registrato come:\n\n[N. ' + rec.user.index + ']: ' + rec.user.name + ' ' + rec.user.surname + '\nUsername: ' + rec.user.username + '\n' + 'Email: ' + rec.user.email + '\nLang: ' + rec.user.lang + tools.ACAPO; risp += 'Num Invitati: ' + myrec.numinvitati + tools.ACAPO; risp += 'Num Invitati Attivi: ' + myrec.numinvitatiattivi + tools.ACAPO; } else { @@ -986,13 +990,14 @@ class Telegram { risp = emo.JOY + emo.JOY + emo.JOY; } else if (testo.length >= 10) { noanswer = true; - risp = 'Questo messaggio è stato inviato alla Chat Help\nIo sono solo un Robot ' + emo.ROBOT_FACE + emo.JOY2 + '\n\nPer AIUTO, contatta la Chat AYNI - HELP'; + let myfaq = this.geturlfaq(); + risp = 'Io sono solo un Robot ' + emo.ROBOT_FACE + emo.JOY2 + '\n\nPer AIUTO, clicca qui:\n👉🏻👉🏻FAQ di AIUTO (risposte alle domande più frequenti)\n\nSe non trovi risposta allora contatta la Chat AYNI - HELP.\nGrazie\nStaff AYNI'; // risp += '\nClicca qui per entrare nella Chat AYNI - HELP di Supporto\n' + 'https://t.me/joinchat/AL2qKE80rxDkgbeMGO-0bw' + '\n\nI miei colleghi umani ti aiuteranno a risolvere !'; await local_sendMsgTelegramToTheManagers(this.idapp, testo, msg, rec.username_bo); } } - let keyboard = {}; + let keyboard = null; if (contastiera) { keyboard = { @@ -1250,6 +1255,7 @@ class Telegram { if (!!mystrnave) { mystr += '✨✨✨' + tools.get__('TUE_NAVI', this.getlang(msg)) + ':\n'; mystr += mystrnave; + } else { if (!tuttie9) { @@ -1291,7 +1297,7 @@ class Telegram { let index = 1; dashboard.downline.forEach((user) => { mystr += emoji.get('star-struck') + ` ${index}°: `; - mystr += (user._doc.qualified) ? emo.CHECK_VERDE : emo.CROSS_ROSSA; + mystr += (user.qualified) ? emo.CHECK_VERDE : emo.CROSS_ROSSA; mystr += `${user.name} ${user.surname} (${user.username})\n`; index++; }); diff --git a/src/server/tools/general.js b/src/server/tools/general.js index 91f9aa8..3c7c032 100755 --- a/src/server/tools/general.js +++ b/src/server/tools/general.js @@ -65,8 +65,8 @@ textlang = { 'HAI_I_9_REQUISITI': 'COMPLIMENTI!\nHai Completato TUTTI i 9 Passi della Guida! Grazie per Aiutare AYNI ad Espandersi!', 'NON_HAI_I_9_REQUISITI': 'Ricqorda che puoi Aiutare a far Crescere ed Espandere il Movimento, Condividendo con chiunque questo nostro viaggio!', 'INFO_LA_MIA_LAVAGNA': '✨ Lista dei Passi: ✨ \n', - 'INFO_LAVAGNA_SITO_COMPLETARE': 'Per completare tutti i requisiti vai sul sito:\n%s\nPer vedere lo stato della tua Nave e dei tuoi invitati, clicca sulle 3 linee in alto a sinistra ed accedi alla voce "Lavagna".\n', - 'INFO_LAVAGNA_SITO': 'Per vedere in dettaglio lo stato della tua Nave, sul sito AYNI, clicca sulle 3 linee in alto a sinistra ed accedi alla voce "Lavagna".\n', + 'INFO_LAVAGNA_SITO_COMPLETARE': 'Per completare tutti i requisiti vai sul sito:\n%s\nPer vedere lo stato della tua Nave e dei tuoi invitati:\n 👉🏻 Entra nella tua Lavagna.\n', + 'INFO_LAVAGNA_SITO': 'Per vedere in dettaglio lo STATO della tua Nave, sul sito AYNI\n 👉🏻 Entra nella tua Lavagna.\n', 'INFO_LINK_DA_CONDIVIDERE': 'Link da condividere ai tuoi invitati per farli registrare al sito di Ayni:\n\n%s', 'INFO_LINK_ZOOM': 'Link da condividere per partecipare allo Zoom (Conferenza OnLine):\n%s', 'ZOOM_CONFERENCE': 'Ecco il programma delle Conferenze (Zoom) aperti a TUTTI:', @@ -91,7 +91,8 @@ textlang = { 'SCEGLI_VOCE': 'scegli una voce:', 'INVITATI_LISTA': 'I Tuoi Invitati (in verde con almeno i primi 7 Requisiti)', 'CIAO': 'Ciao', - 'ADDED_TOLISTAINGRESSO': 'Complimenti ! Hai completato i 7 Passi!🎊\nSei stato aggiunto alla Lista delle persone che entreranno nella Lista D\'Imbarco !\nNei prossimi giorni riceverai un messaggio quando la tua Nave partirà.', + 'ADDED_TOLISTAINGRESSO': 'Complimenti! 🎊\nSei stato aggiunto alla Lista D\'Imbarco !\nNei prossimi giorni riceverai un messaggio qui quando la tua Nave sarà pronta a partire.\nRicorda che per salire di graduatoria, puoi condividere il Movimento con i tuoi amici ❤️.', + 'REGALATO_INVITANTE': 'da fare.... 😍🎊 Hai ricevuto in Regalo un Invitato {invitato} da parte di {mittente} !', 'NO_PROG': 'Attualmente non sei ancora dentro alla Lista d\'Imbarco!', 'SEND_LINK_CHAT_DONATORI': 'Ciao %s!\nLa tua NAVE sta finalmente Salpando!\nEntra nella Gift Chat della nave {%s} cliccando qui: %s', 'SEND_LINK_CHAT_SOGNATORE': 'Ciao %s!\nOggi Diventi Sognatore !!! 🎊🎊🎊 Entra nella Gift Chat della nave {%s} cliccando qui: %s', @@ -104,8 +105,9 @@ textlang = { 'NAVE COMPLETATA': 'NAVE COMPLETATA', 'Doni Effettuati': 'Doni Effettuati', 'Tutor che affianchèra il Mediatore': 'Tutor che affianchèra il Mediatore', + 'APERTURA_CHIUSURA_GIFT_CHAT': '%s: Apertura GIFT CHAT\n%s Chiusura GIFT CHAT\nNota Bene: Hai tempo 4 giorni dall\'apertura per entrare in Chat ed effettuare il tuo Dono, dopodichè effettueremo la sostituzione.', 'Giorno di Apertura GIFT CHAT': 'Giorno di Apertura GIFT CHAT', - 'Giorno in cui Inviare il DONO': 'Hai 4 giorni di tempo per inviare il tuo dono. Giorno di Chiusura:', + 'Giorno in cui Inviare il DONO': 'Hai 4 giorni di tempo per inviare il tuo dono.\nGiorno di Chiusura', 'SPOSTATO': 'Sei stato Spostato in una Nuova Nave !', 'Note': 'Note', 'TEMPORANEA': 'TEMPORANEA', @@ -132,7 +134,7 @@ textlang = { 'HAI_I_9_REQUISITI': 'ČESTITAMO!\nIzpolnil si VSEH 9 korakov v navodilih! Hvala ker pomagaš k širitvi AYNI !', 'NON_HAI_I_9_REQUISITI': 'Zapomni si, če želiš Pomagati Rasti in Širit Gibanje, lahko to storiš z delitvijo med ljudmi!', 'INFO_LA_MIA_LAVAGNA': '✨ Seznam Krajev: ✨ \n', - 'INFO_LAVAGNA_SITO_COMPLETARE': 'Da izpolneš vse zahteve, pojdi na spletno stran:\n%s\nDa pogledaš status svoje Ladje in status svojih povabljencev, klikni na levi strani zgoraj na tri črte in izberi "Tabla".\n', + 'INFO_LAVAGNA_SITO_COMPLETARE': 'Da izpolneš vse zahteve, pojdi na spletno stran:\n%s\nDa pogledaš status svoje Ladje in status svojih povabljencev, klikni na levi strani zgoraj na tri črte in izberi "Tabla".\n👉🏻 Table', 'INFO_LAVAGNA_SITO': 'Da lahko podrobno pogledaš status svoje Ladje,na spletni strani AYNI, klikni, na levi strani zgoraj, na tri črtice in izberi "Tabla".\n', 'INFO_LINK_DA_CONDIVIDERE': 'Link, ki ga deliš svojim povabljencem, da se lahko registrirajo na spletni strani Ayni:\n\n%s', 'INFO_LINK_ZOOM': 'Link, ki ga deliš za udeležbo na Zoom (Konferenca OnLine):\n%s', @@ -171,8 +173,7 @@ textlang = { 'NAVE COMPLETATA': 'LADJE DOSTAVLJEN', 'Doni Effettuati': 'Darila narejena', 'Tutor che affianchèra il Mediatore': 'Tutor, ki bo podpiral Mediatorja', - 'Giorno di Apertura GIFT CHAT': 'Dan odpiranja GIFT CHAT', - 'Giorno in cui Inviare il DONO': 'Dan za pošiljanje DARILA', + 'APERTURA_CHIUSURA_GIFT_CHAT': '%s: Apertura GIFT CHAT\n%s Zapiranje DARILNEGA KLEPETA\nBodi pozoren: Časa imaš 4 dni od odprtja za vstop v Klepet- ladjico in izpeljati svoje Vplačilo, po tem času bomo izvedli zamenjavo', 'SPOSTATO': 'Prestavljen si v Novo Ladjico !', 'Note': 'Opombe', 'TEMPORANEA': 'ZAČASNA', @@ -197,7 +198,7 @@ textlang = { 'HAI_I_9_REQUISITI': '¡FELICITACIONES!\n¡Has completado los 9 pasos de la Guía! Gracias por ayudar a AYNI a expandirse!', 'NON_HAI_I_9_REQUISITI': 'Recuerda que puedes ayudar a que el Movimiento crezca y se expanda compartiendo nuestro viaje con todos.!', 'INFO_LA_MIA_LAVAGNA': '✨ Lista de pasos: ✨ \n', - 'INFO_LAVAGNA_SITO_COMPLETARE': 'Para completar todos los requisitos vaya al sitio:\n%s\nPara ver el estado de su nave y sus invitados, haga clic en las 3 líneas de arriba a la izquierda y vaya a "Pizarra".\n', + 'INFO_LAVAGNA_SITO_COMPLETARE': 'Para completar todos los requisitos vaya al sitio:\n%s\nPara ver el estado de su nave y sus invitados,👉🏻 Pizarra.\n', 'INFO_LAVAGNA_SITO': 'Para ver en detalle el estado de su nave, en el sitio web de AYNI, haga clic en las 3 líneas de la parte superior izquierda y vaya a "Pizarra"..\n', 'INFO_LINK_DA_CONDIVIDERE': 'Enlaces para compartir con sus invitados para que se registren en el sitio web de Ayni:\n\n%s', 'INFO_LINK_ZOOM': 'Enlaces para compartir para participar en el Zoom (Conferencia en línea):\n%s', @@ -236,8 +237,7 @@ textlang = { 'NAVE COMPLETATA': 'NAVE COMPLETADA', 'Doni Effettuati': 'Regalos Realizados', 'Tutor che affianchèra il Mediatore': 'Tutor de apoyo al Donante', - 'Giorno di Apertura GIFT CHAT': 'Día de apertura GIFT CHAT', - 'Giorno in cui Inviare il DONO': 'Día en el que enviar el REGALO', + 'APERTURA_CHIUSURA_GIFT_CHAT': '%s: Apertura del CHAT DE REGALOS\n%s Cierre del CHAT DE REGALOS\nNota: Tienes 4 días desde la apertura para entrar en el Chat y hacer tu Regalo, después de lo cual haremos el reemplazo', 'SPOSTATO': 'Has sido trasladado a una nueva nave !', 'Note': 'Notas', 'TEMPORANEA': 'TEMPORAL', @@ -259,7 +259,7 @@ textlang = { 'HAI_I_9_REQUISITI': 'CONGRATULATIONS!\nYou have completed ALL 9 steps of the Guide! Thank you for Helping AYNI Expand!', 'NON_HAI_I_9_REQUISITI': 'Remember that you can help the Movement grow and expand by sharing our journey with everyone.!', 'INFO_LA_MIA_LAVAGNA': '✨ Step List: ✨ \n', - 'INFO_LAVAGNA_SITO_COMPLETARE': 'To complete all the requirements go to the site:%s\nTo see the status of your Ship and your guests, click on the 3 lines at the top left and go to "Dashboard"\n', + 'INFO_LAVAGNA_SITO_COMPLETARE': 'To complete all the requirements go to the site:%s\nTo see the status of your Ship and your guests\n👉🏻 Dashboard\n', 'INFO_LAVAGNA_SITO': 'To see in detail the status of your ship, on the AYNI website, click on the 3 lines at the top left and go to "Blackboard".\n', 'INFO_LINK_DA_CONDIVIDERE': 'Links to share with your guests to have them register on Ayni\'s website:\n\n%s', 'INFO_LINK_ZOOM': 'Links to share to participate in Zoom (Online Conference):\n%s', @@ -298,8 +298,7 @@ textlang = { 'NAVE COMPLETATA': 'SHIP COMPLETED', 'Doni Effettuati': 'Gifts Made', 'Tutor che affianchèra il Mediatore': 'Tutor supporting the Mediator', - 'Giorno di Apertura GIFT CHAT': 'Opening Day GIFT CHAT', - 'Giorno in cui Inviare il DONO': 'Day on which to send the Gift', + 'APERTURA_CHIUSURA_GIFT_CHAT': '%s: Opening GIFT CHAT\n%s Closing GIFT CHAT\nNote: You have 4 days from the opening to enter the Chat and make your Gift, after which we will make the replacement.', 'SPOSTATO': 'You\'ve been moved to a New Ship !', 'Note': 'Note', 'TEMPORANEA': 'TEMPORARY', @@ -325,8 +324,8 @@ textlang = { 'HAI_I_9_REQUISITI': 'FÉLICITATIONS!\n!Vous avez franchi les 9 étapes de la conduite ! Merci d\'avoir aidé AYNI à se développer!', 'NON_HAI_I_9_REQUISITI': 'N\'oubliez pas que vous pouvez aider le Mouvement à grandir et à se développer en partageant notre voyage avec tout le monde.!', 'INFO_LA_MIA_LAVAGNA': '✨ Liste des étapes: ✨ \n', - 'INFO_LAVAGNA_SITO_COMPLETARE': 'Pour remplir toutes les conditions, rendez-vous sur le site:\n%s\nPour voir le statut de votre navire et de vos invités, cliquez sur les 3 lignes en haut à gauche et allez sur "Tableau noir".\n', - 'INFO_LAVAGNA_SITO': 'Pour voir en détail le statut de votre navire, sur le site de l\'AYNI, cliquez sur les 3 lignes en haut à gauche et allez sur "Tableau noir".\n', + 'INFO_LAVAGNA_SITO_COMPLETARE': 'Pour remplir toutes les conditions, rendez-vous sur le site:\n%s\nPour voir le statut de votre navire et de vos invités\n 👉🏻 Tableau.\n', + 'INFO_LAVAGNA_SITO': 'Pour voir en détail le statut de votre navire, sur le site de l\'AYNI, cliquez sur les 3 lignes en haut à gauche et allez sur "Tableau".\n', 'INFO_LINK_DA_CONDIVIDERE': 'Liens à partager avec vos invités pour qu\'ils s\'inscrivent sur le site web d\'Ayni:\n\n%s', 'INFO_LINK_ZOOM': 'Liens à partager pour participer à Zoom (Conférence en ligne):\n%s', 'ZOOM_CONFERENCE': 'Vous trouverez ici les dates de programmation sur Zoom:', @@ -364,8 +363,7 @@ textlang = { 'NAVE COMPLETATA': 'NAVIRE COMPLÉTÉ', 'Doni Effettuati': 'Don effectués', 'Tutor che affianchèra il Mediatore': 'Le tuteur qui soutient le Mediateur', - 'Giorno di Apertura GIFT CHAT': 'Jour d\'ouverture GIFT CHAT', - 'Giorno in cui Inviare il DONO': 'Envoyer le jour il DONO', + 'APERTURA_CHIUSURA_GIFT_CHAT': '%s : Chat d\'ouverture\n%s Clôture du GIFT CHAT\nNote: Vous avez 4 jours à partir de l\'ouverture pour entrer dans le Chat et faire votre Cadeau, après quoi nous ferons le remplacement', 'SPOSTATO': 'Vous avez été transféré sur un nouveau navire !', 'Note': 'Notes', 'TEMPORANEA': 'TEMPORAIRE', @@ -391,7 +389,7 @@ textlang = { 'HAI_I_9_REQUISITI': 'FELICITAÇÕES!\nVocê completou TODAS as 9 etapas da condução! Obrigado por ajudar a AYNI a expandir!', 'NON_HAI_I_9_REQUISITI': 'Lembre-se que pode ajudar o Movimento a crescer e expandir-se, partilhando a nossa jornada com todos!', 'INFO_LA_MIA_LAVAGNA': '✨ Lista de etapas: ✨ \n', - 'INFO_LAVAGNA_SITO_COMPLETARE': 'Para completar todos os requisitos ir para o sitio:\n%s\nPer vedere lo stato della tua Nave e dei tuoi invitati, clicca sulle 3 linee in alto a sinistra ed accedi alla voce "Lavagna".\n', + 'INFO_LAVAGNA_SITO_COMPLETARE': 'Para completar todos os requisitos ir para o sitio:\n%s\nPara ver o estado do seu navio e dos seus convidados:\n 👉🏻 Entre no seu Tablero.\n', 'INFO_LAVAGNA_SITO': 'Para ver em detalhe o estado do seu navio, no site da AYNI, clique nas 3 linhas no canto superior esquerdo e vá para "DashBoard"..\n', 'INFO_LINK_DA_CONDIVIDERE': 'Links para partilhar com os seus convidados para que se registem no website da Ayni:\n\n%s', 'INFO_LINK_ZOOM': 'Links para partilhar para participar na Zoom (Conferência Online):\n%s', @@ -430,8 +428,7 @@ textlang = { 'NAVE COMPLETATA': 'NAVIO COMPLETADO', 'Doni Effettuati': 'Regalo Feitos', 'Tutor che affianchèra il Mediatore': 'Tutor que apoia o Mediator', - 'Giorno di Apertura GIFT CHAT': 'Dia de Abertura GIFT CHAT', - 'Giorno in cui Inviare il DONO': 'Dia em que enviar o REGALO', + 'APERTURA_CHIUSURA_GIFT_CHAT': '%s: Abertura do GIFT CHAT\n%s Fechamento GIFT CHAT\nNota: Você tem 4 dias desde a abertura para entrar no Chat e fazer o seu Presente, depois do qual faremos o substituição.', 'SPOSTATO': 'Você foi transferido para um novo navio !', 'Note': 'Notas', 'TEMPORANEA': 'TEMPORÁRIO', @@ -466,10 +463,10 @@ module.exports = { DONATORI: 1, TUTTI: 2, - STR_SOGNATORE: 'Sognatore', - STR_MEDIATORE: 'Mediatore', - STR_MEDIATORI: 'Mediatori', - STR_DONATORI: 'Donatori', + STR_SOGNATORE: 'Sognatore', + STR_MEDIATORE: 'Mediatore', + STR_MEDIATORI: 'Mediatori', + STR_DONATORI: 'Donatori', SOGNATORE: 'E1 🌈 ', MEDIATORE: 'A1 💦 ', SONOFUOCO: 0,