diff --git a/docs/passi.txt b/docs/passi.txt index 9dc6c40..7708482 100644 --- a/docs/passi.txt +++ b/docs/passi.txt @@ -9,23 +9,19 @@ X - Aggiornare il testo sulla Placca (Data Inizio e Data Fine Doni) // ++Todo: SISTEMARE: + X - Devo comparire come mio invitato se aggiungo un nuovo Viaggio. + X - Fare la lista delle Navi (in alto alla Lavagna) con il loro tragitto. + X- Nel campo note, metterci il Sogno + X - Se nave Temporanea, mettere Info. + X- Mettere flag se si vuole spostare l'Utente oppure Aggiungerlo... + - Mettere Sfondo immagine su ogni nave + - Mettere il tragitto anche sul BOT. -// ++Todo: TOGLIERE! - x- AGGIONARE AMBIENTE DI TEST - ESEGUIRE LA CONVERSIONE 1 E 2 ! -- CHECK getProssimiInLista -X - CONTROLLARE arrIdTelegramUsers - -- TESTARE SOSTITUISCI UTENTE DA NAVE - -- TESTARE AGGIUNGI VIAGGIO - -x- Accorpare tutti i sotto account, in 1 unico ! -x - Nel campo note, metterci l'username vecchio. 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 @@ -41,7 +37,6 @@ x - Sistemare le navi con num_tess === 4 : indorder=0 e 46 : SOSTITUISCI: - - Mettere flag se si vuole spostare l'Utente oppure Aggiungerlo... - Sistemare che in Edit Pagina, se è troppo grande, va oltre l'altezza della finestra. @@ -55,7 +50,5 @@ 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 dec3af6..99078c0 100755 --- a/src/server/models/listaingresso.js +++ b/src/server/models/listaingresso.js @@ -171,6 +171,12 @@ ListaIngressoSchema.statics.deleteUserInListaIngresso = async function (idapp, u }; +ListaIngressoSchema.statics.getNumDaImbarcare = async function (idapp) { + const ListaIngresso = this; + + return await ListaIngresso.count({ idapp, added: false, deleted: false }) + +}; ListaIngressoSchema.statics.addUserInListaIngresso = async function (idapp, username, invitante_username, lang, addednowreal, nuovo, dateins, note, added, opt) { const ListaIngresso = this; @@ -212,8 +218,19 @@ ListaIngressoSchema.statics.addUserInListaIngresso = async function (idapp, user if (addednowreal) { if (!!ris) { 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 + const numimbarcare = await ListaIngresso.getNumDaImbarcare(idapp); + let msgtext = '🛳 '; + msgtext += nome + ' (' + username + ') ' + tools.gettranslate('ADDED_TOLISTAINGRESSO', lang); + await telegrambot.sendMsgTelegram(idapp, username, msgtext, false); + + msgtext = '🛳 '; + if (nuovo) { + msgtext += '🌠 '; + } + + const msgadd = msgtext + ' [' + numimbarcare + '] Imbarcare ' + nome + ' (' + username + ') '; + + await telegrambot.sendMsgTelegramToTheManagers(idapp, msgadd, false); // Anche a STAFF if (!!opt) { if (!!opt.sendmsgtoinvitante) { @@ -458,6 +475,22 @@ ListaIngressoSchema.statics.getProssimiInLista = async function (idapp, solonuov return arrrec; }; +ListaIngressoSchema.statics.eliminaListeIngressoNascoste = async function (idapp) { + const ListaIngresso = this; + + const { User } = require('./user'); + + const arrIngr = await ListaIngresso.find({ idapp, deleted: true }); + + for (const ingr of arrIngr) { + const user = await User.findOne({ idapp, old_order: ingr.ind_order }); + if (!user) { + await ListaIngresso.deleteOne({ _id: ingr._id }) + } + } + +}; + ListaIngressoSchema.statics.creaTessituraeConv = async function (idapp) { const ListaIngresso = this; @@ -501,6 +534,7 @@ ListaIngressoSchema.statics.creaTessituraeConv = async function (idapp) { .then((mynave) => { if (!!mynave) { ingr.date_added = mynave.created; + ingr.deleted = false; ingr.added = true; } return !!mynave; @@ -580,7 +614,7 @@ ListaIngressoSchema.statics.creaTessituraeConv = async function (idapp) { for (const myuser of arrIdTelegramUsers) { // Crea 1 record listaingresso per ogni record aggiuntivo ! escludendo il primo! - if (teleg_id !== myuser.profile.teleg_id) { + if (teleg_id !== myuser.profile.teleg_id && myuser.old_order > 0) { index = 0; teleg_id = myuser.profile.teleg_id; username = myuser.username; @@ -605,7 +639,7 @@ ListaIngressoSchema.statics.creaTessituraeConv = async function (idapp) { } }, { new: false }); - await Nave.updateMany({idapp, ind_order}, { + await Nave.updateMany({ idapp, ind_order }, { $set: { note: findlistaingresso.username, } @@ -666,17 +700,21 @@ ListaIngressoSchema.statics.getarray = async function (idapp, filtri, myobjField }; -ListaIngressoSchema.statics.getInvitati = async function (idapp, username, myobjField) { +ListaIngressoSchema.statics.getInvitati = async function (idapp, username, includemyself, myobjField) { const ListaIngresso = this; - return ListaIngresso.getarray(idapp, - { - idapp, - deleted: false, - invitante_username: username, - username: { $ne: username }, - }, - myobjField); + let myq = { + idapp, + deleted: false, + invitante_username: username, + }; + + if (!includemyself) { + myq = { ...myq, username: { $ne: username } } + } + + return ListaIngresso.getarray(idapp, myq, myobjField); + }; @@ -708,7 +746,7 @@ ListaIngressoSchema.statics.getnumInvitati = async function (idapp, username) { idapp, invitante_username: username, deleted: false, - username: { $ne: username }, + // username: { $ne: username }, }, { username: 1 }); const { User } = require('./user'); @@ -720,10 +758,10 @@ ListaIngressoSchema.statics.getnumInvitati = async function (idapp, username) { $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }] }); - for (const inv of arrinv) { + /*for (const inv of arrinv) { if (!arrlistainv.find((rec) => rec.username === inv.username)) arrlistainv.push(inv); - } + }*/ if (!!arrlistainv) return arrlistainv.length; @@ -745,7 +783,7 @@ ListaIngressoSchema.statics.getnumInvitatiAttivi = async function (idapp, userna let myquery = getQueryProj({ idapp, invitante_username: username, - username: { $ne: username }, + // username: { $ne: username }, deleted: false, }, { username: 1, ind_order: 1 }, @@ -764,10 +802,11 @@ ListaIngressoSchema.statics.getnumInvitatiAttivi = async function (idapp, userna $and: User.getQueryQualified() }); + /* for (const inv of arrinv) { if (!arrlistainv.find((rec) => rec.username === inv.username)) arrlistainv.push(inv); - } + }*/ if (!!arrlistainv) return arrlistainv.length; diff --git a/src/server/models/nave.js b/src/server/models/nave.js index 22931f3..f2452f0 100755 --- a/src/server/models/nave.js +++ b/src/server/models/nave.js @@ -160,7 +160,7 @@ NaveSchema.statics.findById = function (idapp, id) { } else { return null; } - }catch (e) { + } catch (e) { console.error(e.message); } }); @@ -453,13 +453,13 @@ function getQueryProj(myfilter) { } }, { - $replaceRoot: { newRoot: { $mergeObjects: [ { $arrayElemAt: [ "$mylista", 0 ] }, "$$ROOT" ] } } + $replaceRoot: { newRoot: { $mergeObjects: [{ $arrayElemAt: ["$mylista", 0] }, "$$ROOT"] } } }, { $lookup: { from: "users", as: "user", - let: {username: '$username' }, + let: { username: '$username' }, pipeline: [ { $match: { @@ -723,13 +723,22 @@ NaveSchema.statics.getNavePos = async function (idapp, riga, col, solorecord, in let recnavepersistente = await NavePersistente.findByRigaCol(idapp, riga, col, 0); - mystr = '🌈' + tools.get__('SOGNATORE', lang) + ': '; - for (let indsogn = 0; indsogn < recsognatori.length; indsogn++) { - mystr += 'A' + (3 - indsogn) + await getusertextbyrec(recsognatori[indsogn], '', '', riga, col, '') + tools.ACAPO; + mystr = '7️⃣° 🌈 ' + tools.get__('SOGNATORE', lang) + ': '; + mystr += '' + await getusertextbyrec(recsognatori[0], '', '', riga, col, '') + '' + tools.ACAPO; + for (let indsogn = 1; indsogn < recsognatori.length; indsogn++) { + if (indsogn === 1) + mystr += '6️⃣°'; + else + mystr += '5️⃣°'; + + mystr += ' ' + tools.get__('INTERMEDIO', lang) + ': '; + + mystr += await getusertextbyrec(recsognatori[indsogn], '', '', riga, col, '') + tools.ACAPO; } - mystr += tools.ACAPO + '🌀 ' + tools.get__('MEDIATORE', lang) + ':' + await getusertextbyrec(recmediatore, '', '', riga, col, '') + tools.ACAPO + tools.ACAPO; + mystr += tools.ACAPO + '4️⃣° 🌀 ' + tools.get__('MEDIATORE', lang) + ':' + await getusertextbyrec(recmediatore, '', '', riga, col, '') + tools.ACAPO + tools.ACAPO; + mystr += '3️⃣° ' + tools.get__('INTERMEDIO', lang) +':' + tools.ACAPO; for (let indterra = 1; indterra <= 2; indterra++) { miacol = calcval(riga, col, 2) + (indterra); miariga = riga + 1; @@ -739,6 +748,7 @@ NaveSchema.statics.getNavePos = async function (idapp, riga, col, solorecord, in mystr += tools.ACAPO; + mystr += '2️⃣° ' + tools.get__('INTERMEDIO', lang) + ':' + tools.ACAPO; for (let indaria = 1; indaria <= 4; indaria++) { miacol = calcval(riga, col, 4) + (indaria); miariga = riga + 2; @@ -750,7 +760,7 @@ NaveSchema.statics.getNavePos = async function (idapp, riga, col, solorecord, in let primofuoco = null; - mystr += '🎁 ' + tools.get__('DONATORI', lang) + ':' + tools.ACAPO; + mystr += '1️⃣° 🎁 ' + tools.get__('DONATORI', lang) + ':' + tools.ACAPO; let donitotali = 0; let donifatti = 0; @@ -794,7 +804,7 @@ 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 += '💬 ' + 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 += '💬 ' + 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 di Apertura GIFT CHAT', lang) + ': ' + tools.getstrDateLong(recnavepersistente.date_gift_chat_open, lang) + tools.ACAPO; @@ -1398,7 +1408,7 @@ NaveSchema.statics.getnumNaviByUsername = async function (idapp, username) { // Get array di ind_order const arrind_order = await ListaIngresso.find({ idapp, username }).distinct('ind_order'); - const arrrec = await Nave.find({ idapp, ind_order: arrind_order, num_tess: { $mod: [ 2 , 1] } }, { + const arrrec = await Nave.find({ idapp, ind_order: arrind_order, num_tess: { $mod: [2, 1] } }, { riga: 1, col: 1, ind_order: 1 @@ -1409,7 +1419,7 @@ NaveSchema.statics.getnumNaviByUsername = async function (idapp, username) { else return 0; - }catch (e) { + } catch (e) { console.error(e.message); } }; @@ -1435,7 +1445,6 @@ NaveSchema.statics.getSognatoreByRigaColMediatore = async function (idapp, navem }; - const Nave = mongoose.model('Nave', NaveSchema); module.exports = { Nave }; diff --git a/src/server/models/user.js b/src/server/models/user.js index 8ac6f40..4d998b5 100755 --- a/src/server/models/user.js +++ b/src/server/models/user.js @@ -445,12 +445,12 @@ UserSchema.statics.getUserShortDataByUsername = async function (idapp, username) return myrec }; -UserSchema.statics.getDownlineByUsername = async function (idapp, username) { +UserSchema.statics.getDownlineByUsername = async function (idapp, username, includemyself) { if (username === undefined) return null; - const arrrec = await ListaIngresso.getInvitati(idapp, username, + const arrrec = await ListaIngresso.getInvitati(idapp, username, includemyself, { index: 1, lang: 1, @@ -474,12 +474,18 @@ UserSchema.statics.getDownlineByUsername = async function (idapp, username) { } ); - // Ottieni gli invitati che ancora non hanno un'imbarco - const arrinv = await User.find({ + let myq = { idapp, aportador_solidario: username, $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }] - }); + }; + + if (!includemyself) { + myq = { ...myq, username: {$ne: username} } + } + + // Ottieni gli invitati che ancora non hanno un'imbarco + const arrinv = await User.find(myq); for (const inv of arrinv) { if (!arrrec.find((rec) => rec.username === inv.username)) @@ -1153,16 +1159,16 @@ UserSchema.statics.getDashboard = async function (idapp, aportador_solidario, us if (!!arrap) dashboard.numpeople_aportador = arrap.length; - dashboard.downline = await User.getDownlineByUsername(idapp, username); + dashboard.downline = await User.getDownlineByUsername(idapp, username, true); // dashboard.downnotreg = await ExtraList.getDownlineNotRegisteredByNameSurname(idapp, dashboard.myself.name + ' ' + dashboard.myself.surname); dashboard.downbyuser = {}; for (const down of dashboard.downline) { - dashboard.downbyuser[down.username] = await User.getDownlineByUsername(idapp, down.username); + dashboard.downbyuser[down.username] = await User.getDownlineByUsername(idapp, down.username, false); for (const down2 of dashboard.downbyuser[down.username]) { - dashboard.downbyuser[down2.username] = await User.getDownlineByUsername(idapp, down2.username); + dashboard.downbyuser[down2.username] = await User.getDownlineByUsername(idapp, down2.username, false); } } diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js index bb7976d..a9b1af2 100755 --- a/src/server/router/index_router.js +++ b/src/server/router/index_router.js @@ -543,6 +543,8 @@ router.patch('/callfunz', authenticate, async (req, res) => { username_da_sostituire = mydata.data.username_da_sostituire; + let myuservecchio = await User.findOne({ idapp, username: username_da_sostituire }); + mianavedasost = await Nave.findOne({ idapp, riga: mydata.data.riga, col: mydata.data.col }); if (!!mianavedasost) { @@ -574,8 +576,9 @@ router.patch('/callfunz', authenticate, async (req, res) => { } } - if (!!myuser) { + if (!!myusernuovo) { if (!!mianavedasost && mianavedasost.ind_order >= 0) { + // Metti campo 'delete': true su ListaIngresso olduseringresso = await ListaIngresso.findOne({ idapp, ind_order: mianavedasost.ind_order }); if (!!olduseringresso) { @@ -587,14 +590,14 @@ router.patch('/callfunz', authenticate, async (req, res) => { } } - if (!!myuser) { + if (!!myuservecchio) { if (mydata.data.deleteUser && !!mianavedasost && mianavedasost.ind_order > 0) { // Metti Deleted allo User fieldsvalue = { deleted: true }; - 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} )`); + await User.findByIdAndUpdate(myuservecchio.id, { $set: fieldsvalue }); + await telegrambot.sendMsgTelegramToTheManagers(idapp, `L\'utente ${myuservecchio.name} ${myuservecchio.surname} (${myuservecchio.username}) è stato cancellato (nascosto) perchè sostituito (da ${req.user.name} ${req.user.surname} )`); } } @@ -632,27 +635,31 @@ router.patch('/callfunz', authenticate, async (req, res) => { if (!rec) { return res.status(404).send(); } else { + // 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_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; + + const mymsg = mydata.notifBot.txt + ' ' + myusernuovo.name + ' ' + myusernuovo.surname + ' [da ' + dachi + ']' + tools.ACAPO + 'Inviato messaggio: ' + messaggio; + 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_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.sendMsgTelegramToTheManagers(idapp, mymsg); await telegrambot.sendMsgTelegram(idapp, req.user.username, mydata.notifBot.txt); await telegrambot.sendMsgTelegram(idapp, req.user.username, myplacca); } + tools.writeManagersLog(mymsg); // const nomecognomeprima = myuser.name + ' ' + myuser.surname + '(' + myuser.username + ')'; // const nomecognomenuovo = await User.getNameSurnameByUsername(idapp,); diff --git a/src/server/router/users_router.js b/src/server/router/users_router.js index 5df10b2..b9be6bb 100755 --- a/src/server/router/users_router.js +++ b/src/server/router/users_router.js @@ -474,6 +474,9 @@ router.post('/dbop', authenticate, async (req, res) => { } else if (mydata.dbop === 'creaTessituraeConv') { ris = await ListaIngresso.creaTessituraeConv(idapp); ris = { mystr }; + } else if (mydata.dbop === 'eliminaListeIngressoNascoste') { + ris = await ListaIngresso.eliminaListeIngressoNascoste(idapp); + ris = { mystr }; } else if (mydata.dbop === 'convNaviTessinListaIngressoRec') { let num = 0; diff --git a/src/server/telegram/telegrambot.js b/src/server/telegram/telegrambot.js index f0d7db1..69188ea 100755 --- a/src/server/telegram/telegrambot.js +++ b/src/server/telegram/telegrambot.js @@ -500,7 +500,7 @@ module.exports = { const usersmanagers = await User.getusersManagers(idapp); 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 this.sendMsgTelegramByIdTelegram(idapp, rec.profile.teleg_id, emo.ROBOT_FACE + ': ' + text, undefined, undefined, true); await tools.snooze(200) } } @@ -732,7 +732,7 @@ async function local_sendMsgTelegramToTheManagers(idapp, text, msg, username_bo) if (username_bo) username = username_bo; - text = emo.ROBOT_FACE + '[BOT-STAFF]' + emo.ADMIN + ': Da ' + msg.chat.first_name + ' ' + msg.chat.last_name + ' (' + username + '): \n' + text; + text = emo.ROBOT_FACE + ': Da ' + msg.chat.first_name + ' ' + msg.chat.last_name + ' (' + username + '): \n' + text; tools.writeEventsLog(text); if (usersmanagers) { @@ -2145,7 +2145,14 @@ class Telegram { async sendMsg(id, text, menu, form, msg_id, chat_id, ripr_menuPrec) { - return await this._inviaMsg(id, text, form, menu, msg_id, chat_id, ripr_menuPrec); + if (text.length > 4096) { + let text1 = text.slice(0, 4096); + let text2 = text.slice(4096, text.length); + await this._inviaMsg(id, text1, form, menu, msg_id, chat_id, ripr_menuPrec); + return await this._inviaMsg(id, text2, form, menu, msg_id, chat_id, ripr_menuPrec); + }else { + 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 3c7c032..0ddf3b7 100755 --- a/src/server/tools/general.js +++ b/src/server/tools/general.js @@ -99,6 +99,7 @@ textlang = { 'ENTRA_GIFT_CHAT': 'Entra nella Gift Chat', 'DATA_PART_NAVE': 'data di Partenza della Nave:', 'SOGNATORE': 'SOGNATORE', + 'INTERMEDIO': 'Intermedio', 'MEDIATORE': 'MEDIATORE', 'DONATORI': 'DONATORI', 'RITESSITURA': 'RITESSITURA', @@ -167,6 +168,7 @@ textlang = { 'ENTRA_GIFT_CHAT': 'Vstopi v Darilni Klepet', 'DATA_PART_NAVE': 'Datum odhoda ladje:', 'SOGNATORE': 'Sanjača', + 'INTERMEDIO': 'POTNIK', 'MEDIATORE': 'MEDIATOR', 'DONATORI': 'DONATOR', 'RITESSITURA': 'Avtomatičen Vpis', @@ -231,6 +233,7 @@ textlang = { 'ENTRA_GIFT_CHAT': 'Entre en el Chat de Regalos', 'DATA_PART_NAVE': 'fecha de salida de la nave:', 'SOGNATORE': 'SOÑADOR', + 'INTERMEDIO': 'Intermedio', 'MEDIATORE': 'MEDIATOR', 'DONATORI': 'DONANTES', 'RITESSITURA': 'RETEJIDO', @@ -292,6 +295,7 @@ textlang = { 'ENTRA_GIFT_CHAT': 'Enter the ship\'s Gift Chat', 'DATA_PART_NAVE': 'date of departure of the ship:', 'SOGNATORE': 'DREAMER', + 'INTERMEDIO': 'Intermediate', 'MEDIATORE': 'MEDIATOR', 'DONATORI': 'DONOR', 'RITESSITURA': 'RE-ENTER', @@ -357,6 +361,7 @@ textlang = { 'ENTRA_GIFT_CHAT': 'Entrez dans le chat des cadeaux', 'DATA_PART_NAVE': 'la date de départ du navire:', 'SOGNATORE': 'Rêveur', + 'INTERMEDIO': 'Intermediaire', 'MEDIATORE': 'Médiateur', 'DONATORI': 'DONATEUR', 'RITESSITURA': 'RETESSITURA', @@ -422,6 +427,7 @@ textlang = { 'ENTRA_GIFT_CHAT': 'Entre no Gift Chat do navio', 'DATA_PART_NAVE': 'data de partida do navio:', 'SOGNATORE': 'SONHEIROS', + 'INTERMEDIO': 'Intermediar', 'MEDIATORE': 'MEDIATOR', 'DONATORI': 'DONATORES', 'RITESSITURA': 'ENTRE EM',