- Nave
- Requirements - Send Msg to Passeggeri
@@ -6,7 +6,7 @@ span Forgot your Password? :
|
||||
strong <a href=#{forgetpwd} target="_blank">Find it here</a><br>
|
||||
span Email:
|
||||
strong #{emailto}<br>
|
||||
p To confirm the registration click on the button:
|
||||
p To confirm the registration click on the button, or click here #{strlinkreg}:
|
||||
div.divbtn <a href=#{strlinkreg} target="_blank">
|
||||
button.btn.btn-lg Verify Registration</a>
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ span hai dimenticato la Password? :
|
||||
strong <a href=#{forgetpwd} target="_blank">Trovala qui</a><br>
|
||||
span Email:
|
||||
strong #{emailto}<br>
|
||||
p Per confermare la registrazione clicca sul bottone:
|
||||
p Per confermare la registrazione clicca sul bottone, oppure qui: #{strlinkreg}:
|
||||
div.divbtn <a href=#{strlinkreg} target="_blank">
|
||||
button.btn.btn-lg Verifica Registrazione</a>
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ span ¿Olvidaste tu contraseña? :
|
||||
strong <a href=#{forgetpwd} target="_blank">Encuéntrelo aquí</a><br>
|
||||
span Email:
|
||||
strong #{emailto}<br>
|
||||
p Para confirmar el registro haz clic en el botón:
|
||||
p Para confirmar el registro haz clic en el botón, o aquì #{strlinkreg}:
|
||||
div.divbtn <a href=#{strlinkreg} target="_blank">
|
||||
button.btn.btn-lg Verificar registro</a>
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ span avez-vous oublié votre mot de passe ? :
|
||||
strong <a href=#{forgetpwd} target="_blank">Essayez ici</a><br>
|
||||
span Email:
|
||||
strong #{emailto}<br>
|
||||
p Cliquez sur le bouton pour confirmer votre inscription :
|
||||
p Cliquez sur le bouton pour confirmer votre inscription ou cliquez ici #{strlinkreg}:
|
||||
div.divbtn <a href=#{strlinkreg} target="_blank">
|
||||
button.btn.btn-lg Vérifier l'enregistrement</a>
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ span hai dimenticato la Password? :
|
||||
strong <a href=#{forgetpwd} target="_blank">Trovala qui</a><br>
|
||||
span Email:
|
||||
strong #{emailto}<br>
|
||||
p Per confermare la registrazione clicca sul bottone:
|
||||
p Per confermare la registrazione clicca sul bottone oppure clicca qui #{strlinkreg}:
|
||||
div.divbtn <a href=#{strlinkreg} target="_blank">
|
||||
button.btn.btn-lg Verifica Registrazione</a>
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ span você esqueceu sua senha? :
|
||||
strong <a href=##{forgetpwd} target="_blank">Encontre-o aqui</a>>br>
|
||||
span Email:
|
||||
strong #{{emailto}<br>
|
||||
p Clique no botão para confirmar o seu registo:
|
||||
p Clique no botão para confirmar o seu registo ou clique aqui #{strlinkreg}:
|
||||
div.divbtn <a href=#{strlinkreg} target="_blank">
|
||||
button.btn.btn-lg Verificação de registro</a>
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ span ste pozabili geslo? :
|
||||
strong <a href=#{forgetpwd} target="_blank">Poiščite tukaj</a><br>
|
||||
span Email:
|
||||
strong #{emailto}<br>
|
||||
p Za potrditev registracije kliknite na gumb:
|
||||
p Za potrditev registracije kliknite na gumb ali kliknite tukaj: #{strlinkreg}
|
||||
div.divbtn <a href=#{strlinkreg} target="_blank">
|
||||
button.btn.btn-lg Preveri registracijo</a>
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
"jsonwebtoken": "^8.5.1",
|
||||
"lodash": "^4.17.15",
|
||||
"mongodb": "^3.4.1",
|
||||
"mongoose": "^5.8.4",
|
||||
"mongoose": "^5.9.3",
|
||||
"mysql": "^2.17.1",
|
||||
"node-cron": "^2.0.3",
|
||||
"node-emoji": "^1.10.0",
|
||||
|
||||
@@ -34,6 +34,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||
telegram_key:'',
|
||||
telegram_bot_name: '',
|
||||
pathreg_add:'',
|
||||
abilitanave: false,
|
||||
},
|
||||
{
|
||||
idapp: '2',
|
||||
@@ -49,6 +50,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||
telegram_key:'',
|
||||
telegram_bot_name: '',
|
||||
pathreg_add:'',
|
||||
abilitanave: false,
|
||||
},
|
||||
{
|
||||
idapp: '3',
|
||||
@@ -64,6 +66,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||
telegram_key:'',
|
||||
telegram_bot_name: '',
|
||||
pathreg_add:'',
|
||||
abilitanave: false,
|
||||
},
|
||||
{
|
||||
idapp: '4',
|
||||
@@ -79,6 +82,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||
telegram_key:'',
|
||||
telegram_bot_name: '',
|
||||
pathreg_add:'',
|
||||
abilitanave: false,
|
||||
},
|
||||
{
|
||||
idapp: '6',
|
||||
@@ -94,6 +98,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||
telegram_key:'',
|
||||
telegram_bot_name: '',
|
||||
pathreg_add:'',
|
||||
abilitanave: false,
|
||||
},
|
||||
{
|
||||
idapp: '7',
|
||||
@@ -109,6 +114,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||
telegram_key:'1037577457:AAGQbdIuYoB838v61ewJ0Hearx9UPpTBhMI',
|
||||
telegram_bot_name: 'notevoleaynibot',
|
||||
pathreg_add:'_ayni',
|
||||
abilitanave: false,
|
||||
},
|
||||
{
|
||||
idapp: '8',
|
||||
@@ -124,6 +130,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||
telegram_key:'',
|
||||
telegram_bot_name: '',
|
||||
pathreg_add:'',
|
||||
abilitanave: false,
|
||||
},
|
||||
];
|
||||
} else if (process.env.NODE_ENV === 'test') {
|
||||
@@ -143,6 +150,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||
telegram_key:'',
|
||||
telegram_bot_name: '',
|
||||
pathreg_add:'',
|
||||
abilitanave: false,
|
||||
},
|
||||
{
|
||||
idapp: '2',
|
||||
@@ -158,6 +166,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||
telegram_key:'',
|
||||
telegram_bot_name: '',
|
||||
pathreg_add:'',
|
||||
abilitanave: false,
|
||||
},
|
||||
{
|
||||
idapp: '3',
|
||||
@@ -172,6 +181,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||
telegram_key:'',
|
||||
telegram_bot_name: '',
|
||||
pathreg_add:'',
|
||||
abilitanave: false,
|
||||
},
|
||||
{
|
||||
idapp: '4',
|
||||
@@ -186,6 +196,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||
telegram_key:'',
|
||||
telegram_bot_name: '',
|
||||
pathreg_add:'',
|
||||
abilitanave: false,
|
||||
},
|
||||
{
|
||||
idapp: '6',
|
||||
@@ -200,6 +211,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||
telegram_key:'',
|
||||
telegram_bot_name: '',
|
||||
pathreg_add:'',
|
||||
abilitanave: false,
|
||||
},
|
||||
{
|
||||
idapp: '7',
|
||||
@@ -214,6 +226,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||
telegram_key:'1011893908:AAEThZB3fVPw8P5gTCFgTEsDmY21DdbV1Cw',
|
||||
telegram_bot_name: 'testnotevoleaynibot',
|
||||
pathreg_add:'_ayni',
|
||||
abilitanave: true,
|
||||
},
|
||||
{
|
||||
idapp: '8',
|
||||
@@ -229,6 +242,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||
telegram_key:'',
|
||||
telegram_bot_name: '',
|
||||
pathreg_add:'',
|
||||
abilitanave: false,
|
||||
},
|
||||
];
|
||||
} else {
|
||||
@@ -248,6 +262,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||
telegram_key:'',
|
||||
telegram_bot_name: '',
|
||||
pathreg_add:'',
|
||||
abilitanave: false,
|
||||
},
|
||||
{
|
||||
idapp: '2',
|
||||
@@ -263,6 +278,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||
telegram_key:'',
|
||||
telegram_bot_name: '',
|
||||
pathreg_add:'',
|
||||
abilitanave: false,
|
||||
},
|
||||
{
|
||||
idapp: '3',
|
||||
@@ -275,6 +291,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||
email_from: 'info.pianetalibero@gmail.com',
|
||||
email_pwd: '66ffeb915e71fada64ad5c26947dd087c262be3b343734a0447c6dee534b888aZcfbjXEuMBWKxvbh60cniw==',
|
||||
pathreg_add:'',
|
||||
abilitanave: false,
|
||||
},
|
||||
{
|
||||
idapp: '4',
|
||||
@@ -289,6 +306,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||
telegram_key:'',
|
||||
telegram_bot_name: '',
|
||||
pathreg_add:'',
|
||||
abilitanave: false,
|
||||
},
|
||||
{
|
||||
idapp: '6',
|
||||
@@ -303,6 +321,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||
telegram_key:'',
|
||||
telegram_bot_name: '',
|
||||
pathreg_add:'',
|
||||
abilitanave: false,
|
||||
},
|
||||
{
|
||||
idapp: '7',
|
||||
@@ -317,6 +336,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||
telegram_bot_name: 'paotestlocalebot',
|
||||
telegram_key:'353996190:AAEcEbfrm_zTK6mBKf8ye9j-PXt958SDxew',
|
||||
pathreg_add:'_ayni',
|
||||
abilitanave: true,
|
||||
},
|
||||
{
|
||||
idapp: '8',
|
||||
@@ -332,6 +352,7 @@ if (process.env.NODE_ENV === 'production') {
|
||||
telegram_key:'',
|
||||
telegram_bot_name: '',
|
||||
pathreg_add:'',
|
||||
abilitanave: false,
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
4
src/server/locales/back/en.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"Email Verificata!": "Email Verified! Close this window and return to the other.",
|
||||
"partecipanti": "participants",
|
||||
}
|
||||
8
src/server/locales/back/es.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"L'Email è già stata Verificata": "El email ya ha sido verificado",
|
||||
"Email Verificata!": "Email Verificada! Cierre esta ventana y regrese a la otra.",
|
||||
"a": "a",
|
||||
"Nuova Registrazione": "Nuevo Registro",
|
||||
"Effettuata una Nuova Registrazione": "Se ha realizado un nuevo registro",
|
||||
"partecipanti": "participantes",
|
||||
}
|
||||
8
src/server/locales/back/it.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"L'Email è già stata Verificata": "L'Email è già stata Verificata",
|
||||
"Email Verificata!": "Email Verificata! Chiudere questa finestra e ritornare sull'altra.",
|
||||
"a": "a",
|
||||
"Nuova Registrazione": "Nuova Registrazione",
|
||||
"Effettuata una Nuova Registrazione": "Effettuata una Nuova Registrazione",
|
||||
"partecipanti": "partecipanti",
|
||||
}
|
||||
@@ -1,412 +0,0 @@
|
||||
const mongoose = require('mongoose');
|
||||
const _ = require('lodash');
|
||||
|
||||
const tools = require('../tools/general');
|
||||
|
||||
const { ListaIngresso } = require('./listaingresso');
|
||||
const { Settings } = require('./settings');
|
||||
const { User } = require('./user');
|
||||
|
||||
const { ObjectID } = require('mongodb');
|
||||
|
||||
|
||||
const telegrambot = require('../telegram/telegrambot');
|
||||
|
||||
const shared_consts = require('../tools/shared_nodejs');
|
||||
|
||||
mongoose.Promise = global.Promise;
|
||||
|
||||
mongoose.level = "F";
|
||||
// Resolving error Unknown modifier: $pushAll
|
||||
mongoose.plugin(schema => {
|
||||
schema.options.usePushEach = true
|
||||
});
|
||||
|
||||
mongoose.set('debug', process.env.DEBUG);
|
||||
|
||||
const BilletteraSchema = new mongoose.Schema({
|
||||
idapp: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
riga: {
|
||||
type: Number,
|
||||
},
|
||||
col: {
|
||||
type: Number,
|
||||
},
|
||||
indprimario: {
|
||||
type: Number,
|
||||
},
|
||||
parent_indprimario: {
|
||||
type: Number,
|
||||
},
|
||||
date_start: {
|
||||
type: Date
|
||||
},
|
||||
made_gift: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
received_gift: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
created: {
|
||||
type: Date,
|
||||
},
|
||||
num_tess: { // numero di tessitura
|
||||
type: Boolean,
|
||||
default: 1
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
BilletteraSchema.statics.getTotInLista = async function (idapp) {
|
||||
const Billettera = this;
|
||||
|
||||
const myfind = { idapp };
|
||||
|
||||
return await Billettera.count(myfind);
|
||||
};
|
||||
|
||||
BilletteraSchema.statics.findByIndOrder = function (idapp, ind_order) {
|
||||
const User = this;
|
||||
|
||||
try {
|
||||
return User.findOne({
|
||||
'idapp': idapp,
|
||||
'ind_order': ind_order,
|
||||
});
|
||||
} catch (e) {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
BilletteraSchema.statics.getFieldsForSearch = function () {
|
||||
return ['username', 'name', 'surname', 'ind_order']
|
||||
};
|
||||
|
||||
BilletteraSchema.statics.executeQueryTable = function (idapp, params) {
|
||||
params.fieldsearch = this.getFieldsForSearch();
|
||||
return tools.executeQueryTable(this, idapp, params);
|
||||
};
|
||||
|
||||
BilletteraSchema.statics.findAllIdApp = function (idapp) {
|
||||
const Billettera = this;
|
||||
|
||||
const myfind = { idapp };
|
||||
|
||||
return Billettera.find(myfind, (err, arrrec) => {
|
||||
return arrrec
|
||||
});
|
||||
};
|
||||
|
||||
BilletteraSchema.statics.findByRigaCol = function (idapp, riga, col) {
|
||||
const Billettera = this;
|
||||
|
||||
const myfind = { idapp, riga, col };
|
||||
|
||||
return Billettera.findOne(myfind, (err, arrrec) => {
|
||||
return arrrec
|
||||
});
|
||||
};
|
||||
|
||||
BilletteraSchema.statics.findRecByRigaColParent = async function (idapp, riga, col, numparentUp) {
|
||||
const Billettera = this;
|
||||
|
||||
const myfind = { idapp, riga, col };
|
||||
|
||||
let parentup = 0;
|
||||
let myrec = null;
|
||||
while (parentup < numparentUp) {
|
||||
myrec = await Billettera.findOne(myfind);
|
||||
|
||||
if (myrec.parent_indprimario === 0)
|
||||
break;
|
||||
}
|
||||
|
||||
return myrec;
|
||||
|
||||
};
|
||||
|
||||
function getlimiti(mypos) {
|
||||
|
||||
if (mypos.col < 0) {
|
||||
mypos.col = 0;
|
||||
}
|
||||
|
||||
if (mypos.riga < 0) {
|
||||
mypos.riga = 0;
|
||||
mypos.col = 0;
|
||||
}
|
||||
|
||||
return mypos;
|
||||
}
|
||||
|
||||
function getRigaColByPosUp(mypos) {
|
||||
riga = riga - mypos.numup;
|
||||
col = Math.ceil(col / (Math.pow(2, mypos.numup)));
|
||||
if ((col % 2) !== 0)
|
||||
col++;
|
||||
|
||||
}
|
||||
|
||||
function getRigaColGenerica(idapp, riga, col, numup) {
|
||||
mypos = {
|
||||
riga,
|
||||
col,
|
||||
numup
|
||||
};
|
||||
|
||||
if (idapp === tools.AYNI) {
|
||||
this.getRigaColByPosUp(mypos);
|
||||
ris = this.getlimiti(mypos);
|
||||
riga = ris.riga;
|
||||
col = ris.col;
|
||||
}
|
||||
|
||||
return { riga, col };
|
||||
}
|
||||
|
||||
|
||||
function getRigaColSognatoreByFuoco(idapp, riga, col) {
|
||||
return this.getRigaColGenerica(idapp, riga, col, 6);
|
||||
}
|
||||
|
||||
function getRigaColMediatoreByFuoco(idapp, riga, col) {
|
||||
return this.getRigaColGenerica(idapp, riga, col, 3);
|
||||
}
|
||||
|
||||
|
||||
BilletteraSchema.statics.findMediatoreByFuoco = function (idapp, riga, col) {
|
||||
const Billettera = this;
|
||||
|
||||
const myrigacol = getRigaColMediatoreByFuoco(idapp, riga, col);
|
||||
|
||||
const myfind = { idapp, riga: myrigacol.riga, col: myrigacol.col };
|
||||
|
||||
return Billettera.findOne(myfind, (err, arrrec) => {
|
||||
return arrrec
|
||||
});
|
||||
};
|
||||
|
||||
function getQueryProj(myfilter) {
|
||||
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"] } }
|
||||
},
|
||||
];
|
||||
|
||||
return query;
|
||||
}
|
||||
|
||||
BilletteraSchema.statics.findSognatoreByFuoco = function (idapp, riga, col) {
|
||||
const Billettera = this;
|
||||
|
||||
const myrigacol = getRigaColSognatoreByFuoco(idapp, riga, col);
|
||||
|
||||
const myquery = this.getQueryProj({ idapp, riga: myrigacol.riga, col: myrigacol.col });
|
||||
|
||||
return Billettera.find(myquery, (err, arrrec) => {
|
||||
return arrrec
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
BilletteraSchema.statics.setRiga = async function (idapp, riga) {
|
||||
const newrec = new Settings({ key: 'riga' });
|
||||
newrec._id = new ObjectID();
|
||||
newrec.idapp = idapp;
|
||||
newrec.type = tools.FieldType.number;
|
||||
newrec.value_num = riga;
|
||||
|
||||
await newrec.save();
|
||||
};
|
||||
|
||||
BilletteraSchema.statics.getRiga = async function (idapp) {
|
||||
const ret = await Settings.findOne({ key: 'riga', idapp });
|
||||
if (!!ret) {
|
||||
return ret.value_num;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
};
|
||||
|
||||
BilletteraSchema.statics.setCol = async function (idapp, col) {
|
||||
const newrec = new Settings({ key: 'col' });
|
||||
newrec._id = new ObjectID();
|
||||
newrec.idapp = idapp;
|
||||
newrec.type = tools.FieldType.number;
|
||||
newrec.value_num = col;
|
||||
|
||||
await newrec.save();
|
||||
};
|
||||
|
||||
BilletteraSchema.statics.getCol = async function (idapp) {
|
||||
const ret = await Settings.findOne({ key: 'col', idapp });
|
||||
if (!!ret) {
|
||||
return ret.value_num;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
};
|
||||
|
||||
function getmaxcol(riga) {
|
||||
|
||||
let maxcol = 1;
|
||||
if (riga === 1) {
|
||||
maxcol = 1;
|
||||
} else if (riga === 2) {
|
||||
maxcol = 2;
|
||||
} else {
|
||||
maxcol = Math.pow(riga - 1, 2);
|
||||
}
|
||||
|
||||
return maxcol;
|
||||
}
|
||||
|
||||
function getPrimoFuocoByIndCol(col) {
|
||||
return Math.ceil(col / 8) + (col % 8);
|
||||
}
|
||||
|
||||
function getusertextbyrec(myrec, symbol) {
|
||||
return symbol + ' ' + recfuoco.ind_order + ' (' + recfuoco.name + ' ' + recfuoco.surname + ')';
|
||||
}
|
||||
|
||||
BilletteraSchema.statics.getPlaccaByFuoco = async function (idapp, riga, col) {
|
||||
const Billettera = this;
|
||||
|
||||
try {
|
||||
let recsognatore = await Billettera.findSognatoreByFuoco(idapp, riga, col);
|
||||
let recmediatore = await Billettera.findMediatoreByFuoco(idapp, riga, col);
|
||||
|
||||
let primofuoco = this.getPrimoFuocoByIndCol(col);
|
||||
|
||||
mystr = '🌈 Dreamer ' + this.getusertextbyrec(recsognatore, '🔥') + tools.ACAPO;
|
||||
mystr = '🌈 Mediator ' + this.getusertextbyrec(recmediatore, '🔥') + tools.ACAPO;
|
||||
|
||||
mystr = '🔥🌏💦💨🔥🌏💦💨' + tools.ACAPO;
|
||||
|
||||
for (let indcol = primofuoco; indcol < primofuoco + 8; indcol++) {
|
||||
let recfuoco = await Billettera.findByRigaCol(idapp, riga, indcol);
|
||||
mystr += this.getusertextbyrec(recfuoco, '🔥') + tools.ACAPO;
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function Fuochi8Completati(idapp, riga, col) {
|
||||
// Inviare un msg al Mediatore che può aprire la Chat con gli 8 fuochi
|
||||
|
||||
// Inviare un msg a questi 8 Fuochi, che la loro placca è Pronta !
|
||||
|
||||
txt = '';
|
||||
// Inviare la placca a Managers
|
||||
telegrambot.sendMsgTelegramToTheManagers(idapp, txt);
|
||||
}
|
||||
|
||||
BilletteraSchema.statics.generaBillettera = async function (idapp) {
|
||||
const Billettera = this;
|
||||
|
||||
let riga = await Billettera.getRiga(idapp);
|
||||
let col = await Billettera.getCol(idapp);
|
||||
|
||||
let primavolta = (riga === 1) && (col === 1);
|
||||
primavolta = false;
|
||||
|
||||
const recfindFondo = await Billettera.findByRigaCol(idapp, 0, 0);
|
||||
if (!recfindFondo) {
|
||||
billettera = new Billettera({ idapp, indprimario: 0, riga: 0, col: 0 });
|
||||
billettera.created = new Date();
|
||||
await billettera.save();
|
||||
|
||||
const UserFondo = await User.findByIndOrder(idapp, 0);
|
||||
if (!UserFondo) {
|
||||
telegrambot.sendMsgTelegramToTheAdmin(idapp, 'Devi creare l\'utente FONDO , con ind_order = 0 ! ');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
let maxcol = getmaxcol(riga);
|
||||
|
||||
// Identifica il prossimo d'aggiungere
|
||||
|
||||
arrlistaingresso = await ListaIngresso.find({ 'idapp': idapp, added: false }).sort({ indprimario: 1 });
|
||||
|
||||
let conta = 0;
|
||||
let colparent = Math.ceil(col / 2);
|
||||
let rigaparent = riga - 1;
|
||||
|
||||
for (const reclista of arrlistaingresso) {
|
||||
|
||||
billettera = new Billettera({ idapp, indprimario: reclista.indprimario, riga, col });
|
||||
billettera.created = new Date();
|
||||
|
||||
const recfind = await Billettera.findByRigaCol(idapp, rigaparent, colparent);
|
||||
if (!!recfind) {
|
||||
billettera.parent_indprimario = recfind.indprimario;
|
||||
} else {
|
||||
billettera.parent_indprimario = 0;
|
||||
}
|
||||
|
||||
await billettera.save()
|
||||
.then(async (result) => {
|
||||
let fields_to_update = { added: true };
|
||||
const ris = await ListaIngresso.findOneAndUpdate({ _id: reclista._id.toString() }, { $set: fields_to_update }, { new: false });
|
||||
|
||||
await Billettera.setRiga(idapp, riga);
|
||||
await Billettera.getCol(idapp, col);
|
||||
conta++;
|
||||
|
||||
// Check if Billetera has Completed
|
||||
if (idapp === tools.AYNI) {
|
||||
if ((col % 8) === 0) {
|
||||
// Completed 8 people
|
||||
let text = 'Completata Billettera [riga=' + riga + ',col=' + col + ']';
|
||||
tools.writeBilletteraLog(text);
|
||||
if (!primavolta) {
|
||||
telegrambot.sendMsgTelegramToTheManagers(idapp, text);
|
||||
this.Fuochi8Completati(idapp, riga, col);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Next
|
||||
if (col === maxcol) {
|
||||
riga++;
|
||||
rigaparent = riga - 1;
|
||||
col = 1;
|
||||
maxcol = getmaxcol(riga);
|
||||
} else {
|
||||
col++;
|
||||
}
|
||||
|
||||
if ((col % 2) !== 0)
|
||||
colparent++;
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
const Billettera = mongoose.model('Billettera', BilletteraSchema);
|
||||
|
||||
|
||||
module.exports = { Billettera };
|
||||
|
||||
|
||||
@@ -6,6 +6,10 @@ const _ = require('lodash');
|
||||
|
||||
const tools = require('../tools/general');
|
||||
|
||||
const { ObjectID } = require('mongodb');
|
||||
|
||||
const { Nave } = require('./nave');
|
||||
|
||||
const shared_consts = require('../tools/shared_nodejs');
|
||||
const queryclass = require('../classes/queryclass');
|
||||
|
||||
@@ -30,16 +34,17 @@ const ListaIngressoSchema = new mongoose.Schema({
|
||||
ind_order: {
|
||||
type: Number,
|
||||
},
|
||||
username: {
|
||||
type: String,
|
||||
date_added: {
|
||||
type: Date,
|
||||
},
|
||||
name: {
|
||||
type: String,
|
||||
added: { // Added into Programmation (Nave)
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
surname: {
|
||||
type: String,
|
||||
num_tess: {
|
||||
type: Number,
|
||||
},
|
||||
added: { // Added into Programmation (Billettera)
|
||||
deleted: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
}
|
||||
@@ -48,7 +53,7 @@ const ListaIngressoSchema = new mongoose.Schema({
|
||||
|
||||
ListaIngressoSchema.pre('save', async function (next) {
|
||||
if (this.isNew) {
|
||||
const myrec = await ListaIngresso.findOne().limit(1).sort({indprimario:-1});
|
||||
const myrec = await ListaIngresso.findOne().limit(1).sort({ indprimario: -1 });
|
||||
if (!!myrec) {
|
||||
if (myrec._doc.indprimario === 0)
|
||||
this.indprimario = 1;
|
||||
@@ -108,9 +113,123 @@ ListaIngressoSchema.statics.findByIndOrder = function (idapp, ind_order) {
|
||||
}
|
||||
};
|
||||
|
||||
ListaIngressoSchema.statics.findByIndOrderETess = function (idapp, ind_order, num_tess) {
|
||||
const ListaIngresso = this;
|
||||
|
||||
try {
|
||||
return ListaIngresso.findOne({
|
||||
'idapp': idapp,
|
||||
'ind_order': ind_order,
|
||||
num_tess,
|
||||
});
|
||||
} catch (e) {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
ListaIngressoSchema.statics.deleteUserInListaIngresso = async function (idapp, ind_order) {
|
||||
const ListaIngresso = this;
|
||||
|
||||
return ListaIngresso.findOneAndUpdate({
|
||||
idapp,
|
||||
ind_order,
|
||||
}, { $set: { deleted: true } }, { new: false })
|
||||
|
||||
};
|
||||
|
||||
ListaIngressoSchema.statics.addUserInListaIngresso = async function (idapp, ind_order, lang, addednowreal, num_tess) {
|
||||
const ListaIngresso = this;
|
||||
|
||||
const { User } = require('./user');
|
||||
const telegrambot = require('../telegram/telegrambot');
|
||||
|
||||
try {
|
||||
let listaingresso = null;
|
||||
if (!await ListaIngresso.findByIndOrderETess(idapp, ind_order, num_tess)) {
|
||||
listaingresso = new ListaIngresso({
|
||||
ind_order: ind_order,
|
||||
idapp,
|
||||
num_tess,
|
||||
date_added: new Date(),
|
||||
_id: new ObjectID()
|
||||
});
|
||||
|
||||
if (listaingresso) {
|
||||
return await listaingresso.save().then(async (ris) => {
|
||||
if (addednowreal) {
|
||||
if (!!ris) {
|
||||
msgtext = tools.gettranslate('ADDED_TOLISTAINGRESSO', lang);
|
||||
const username = await User.getUsernameByIndOrder(idapp, ind_order);
|
||||
await telegrambot.sendMsgTelegram(idapp, username, msgtext, true); // Anche a STAFF
|
||||
}
|
||||
}
|
||||
return ris;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const giapresente = await Nave.findOne({ idapp, ind_order: num_tess });
|
||||
if (!!giapresente) {
|
||||
// Era stato già aggiunto!
|
||||
let fields_to_update = { added: true };
|
||||
await ListaIngresso.findOneAndUpdate({ _id: params.id.toString() }, { $set: fields_to_update }, { new: false });
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
|
||||
function getQueryProj(myfilter) {
|
||||
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"] } }
|
||||
},
|
||||
];
|
||||
|
||||
return query;
|
||||
}
|
||||
|
||||
|
||||
ListaIngressoSchema.statics.showListaOrd = async function (idapp) {
|
||||
const ListaIngresso = this;
|
||||
|
||||
const myquery = getQueryProj({ idapp });
|
||||
|
||||
arrrec = await ListaIngresso.aggregate(myquery).sort({ indprimario: 1 });
|
||||
|
||||
let mystr = '';
|
||||
let conta = 1;
|
||||
for (const rec of arrrec) {
|
||||
mystr += '[' + conta + '] ' + rec.ind_order + ' (' + rec.ind_order + ') ' + rec.name + ' ' + rec.surname;
|
||||
if (rec.added)
|
||||
mystr += ' (ADDED ++)';
|
||||
|
||||
mystr += '\n';
|
||||
conta++;
|
||||
}
|
||||
|
||||
return mystr;
|
||||
};
|
||||
|
||||
|
||||
ListaIngressoSchema.statics.getFieldsForSearch = function () {
|
||||
return ['username', 'name', 'surname', 'ind_order']
|
||||
return ['ind_order']
|
||||
};
|
||||
|
||||
ListaIngressoSchema.statics.executeQueryTable = function (idapp, params) {
|
||||
@@ -128,6 +247,45 @@ ListaIngressoSchema.statics.findAllIdApp = function (idapp) {
|
||||
});
|
||||
};
|
||||
|
||||
function sortRec(rec) {
|
||||
return rec.sort(function (reca, recb) {
|
||||
return recb.numinvitatiattivi - reca.numinvitatiattivi
|
||||
});
|
||||
}
|
||||
|
||||
ListaIngressoSchema.statics.getProssimiInLista = async function (idapp, tutti) {
|
||||
const ListaIngresso = this;
|
||||
|
||||
const myquery = getQueryProj({
|
||||
'idapp': idapp,
|
||||
ind_order: { $gt: 0 },
|
||||
added: false,
|
||||
deleted: false,
|
||||
});
|
||||
|
||||
arrrec = await ListaIngresso.aggregate(myquery).sort({ indprimario: 1 })
|
||||
.then(async (arrlista) => {
|
||||
|
||||
const { User } = require('../models/user');
|
||||
|
||||
for (const rec of arrlista) {
|
||||
rec.numinvitatiattivi = await User.getnumInvitatiAttivi(idapp, rec.username);
|
||||
if (rec.numinvitatiattivi > 2)
|
||||
rec.numinvitatiattivi = 2;
|
||||
}
|
||||
if (arrlista) {
|
||||
arrlista = sortRec(arrlista);
|
||||
// arrlista.reverse();
|
||||
}
|
||||
|
||||
return arrlista;
|
||||
}).catch((e) => {
|
||||
console.error(e);
|
||||
return null
|
||||
});
|
||||
|
||||
return arrrec;
|
||||
};
|
||||
|
||||
const ListaIngresso = mongoose.model('ListaIngresso', ListaIngressoSchema);
|
||||
|
||||
|
||||
991
src/server/models/nave.js
Normal file
@@ -0,0 +1,991 @@
|
||||
const mongoose = require('mongoose');
|
||||
const _ = require('lodash');
|
||||
|
||||
const tools = require('../tools/general');
|
||||
|
||||
const { ListaIngresso } = require('./listaingresso');
|
||||
const { Settings } = require('./settings');
|
||||
const { User } = require('./user');
|
||||
|
||||
const { ObjectID } = require('mongodb');
|
||||
|
||||
const shared_consts = require('../tools/shared_nodejs');
|
||||
|
||||
mongoose.Promise = global.Promise;
|
||||
|
||||
mongoose.level = "F";
|
||||
// Resolving error Unknown modifier: $pushAll
|
||||
mongoose.plugin(schema => {
|
||||
schema.options.usePushEach = true
|
||||
});
|
||||
|
||||
mongoose.set('debug', process.env.DEBUG);
|
||||
|
||||
|
||||
const NaveSchema = new mongoose.Schema({
|
||||
idapp: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
riga: {
|
||||
type: Number,
|
||||
},
|
||||
col: {
|
||||
type: Number,
|
||||
},
|
||||
indprimario: {
|
||||
type: Number,
|
||||
},
|
||||
ind_order: {
|
||||
type: Number,
|
||||
},
|
||||
parent_id: {
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
},
|
||||
date_start: {
|
||||
type: Date
|
||||
},
|
||||
link_chat: {
|
||||
type: String,
|
||||
},
|
||||
sent_msg_howto_make_gift: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
made_gift: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
date_made_gift: {
|
||||
type: Date,
|
||||
},
|
||||
received_gift: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
date_received_gift: {
|
||||
type: Date,
|
||||
},
|
||||
created: {
|
||||
type: Date,
|
||||
},
|
||||
num_tess: { // numero di tessitura
|
||||
type: Number,
|
||||
default: 1
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
NaveSchema.statics.getTotInLista = async function (idapp) {
|
||||
const Nave = this;
|
||||
|
||||
const myfind = { idapp };
|
||||
|
||||
return await Nave.count(myfind);
|
||||
};
|
||||
|
||||
NaveSchema.statics.findByIndOrder = function (idapp, ind_order) {
|
||||
const Nave = this;
|
||||
|
||||
try {
|
||||
return Nave.findOne({
|
||||
'idapp': idapp,
|
||||
'ind_order': ind_order,
|
||||
});
|
||||
} catch (e) {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
NaveSchema.statics.findById = function (idapp, id) {
|
||||
const Nave = this;
|
||||
|
||||
const myquery = getQueryProj({ idapp, '_id': ObjectID(id) });
|
||||
|
||||
return Nave.aggregate(myquery);
|
||||
|
||||
};
|
||||
|
||||
NaveSchema.statics.findByIndPrimario = function (idapp, indprimario) {
|
||||
const Nave = this;
|
||||
|
||||
try {
|
||||
return Nave.findOne({
|
||||
idapp,
|
||||
indprimario,
|
||||
});
|
||||
} catch (e) {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
NaveSchema.statics.getFieldsForSearch = function () {
|
||||
return ['username', 'name', 'surname', 'ind_order']
|
||||
};
|
||||
|
||||
NaveSchema.statics.executeQueryTable = function (idapp, params) {
|
||||
params.fieldsearch = this.getFieldsForSearch();
|
||||
return tools.executeQueryTable(this, idapp, params);
|
||||
};
|
||||
|
||||
NaveSchema.statics.findAllIdApp = function (idapp) {
|
||||
const Nave = this;
|
||||
|
||||
const myfind = { idapp };
|
||||
|
||||
return Nave.find(myfind, (err, arrrec) => {
|
||||
return arrrec
|
||||
});
|
||||
};
|
||||
|
||||
NaveSchema.statics.findByRigaCol = function (idapp, riga, col, nullifnotexist) {
|
||||
const Nave = this;
|
||||
|
||||
myrigacol = {
|
||||
idapp,
|
||||
riga,
|
||||
col,
|
||||
nullifnotexist
|
||||
};
|
||||
|
||||
return Nave.findGeneric(myrigacol);
|
||||
|
||||
};
|
||||
|
||||
NaveSchema.statics.findDonatoreByNave = function (idapp, nave) {
|
||||
try {
|
||||
|
||||
const arrrigacol = nave.split(".");
|
||||
if (arrrigacol.length <= 0)
|
||||
return;
|
||||
|
||||
let riganave = parseInt(arrrigacol[0]);
|
||||
let colnave = parseInt(arrrigacol[1]);
|
||||
|
||||
let rigadonatore = riganave + 3;
|
||||
if (rigadonatore < 1)
|
||||
rigadonatore = 1;
|
||||
|
||||
coldonatoreIni = calcval(riganave, colnave, 8) + (1);
|
||||
coldonatoreFine = calcval(riganave, colnave, 8) + (8);
|
||||
|
||||
const miaquery = {
|
||||
idapp,
|
||||
riga: rigadonatore,
|
||||
$and: [{ col: { $gte: { coldonatoreIni } } }, { col: { $lte: { coldonatoreFine } } }]
|
||||
};
|
||||
|
||||
return Nave.findOne(miaquery);
|
||||
} catch (e) {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
function getIndColonneByNave(navemediatore) {
|
||||
let riga = navemediatore.riga;
|
||||
let col = navemediatore.col;
|
||||
|
||||
let col_ini = calcval(riga, col, 8) + 1;
|
||||
let col_fine = col_ini + 8;
|
||||
|
||||
return { riga: riga + 3, col_ini, col_fine }
|
||||
}
|
||||
|
||||
NaveSchema.statics.getusersByNave = function (idapp, navemediatore) {
|
||||
|
||||
const obj = getIndColonneByNave(navemediatore);
|
||||
|
||||
const miacol_ini = obj.col_ini;
|
||||
const miacol_fine = obj.col_fine;
|
||||
|
||||
const miaquery = {
|
||||
idapp,
|
||||
riga: obj.riga,
|
||||
$and: [
|
||||
{ col: { $gte: miacol_ini } },
|
||||
{ col: { $lte: miacol_fine } }
|
||||
],
|
||||
};
|
||||
|
||||
return Nave.find(miaquery);
|
||||
|
||||
};
|
||||
|
||||
|
||||
NaveSchema.statics.findRecByRigaColParent = async function (idapp, riga, col, numparentUp) {
|
||||
const Nave = this;
|
||||
|
||||
const { User } = require('./user');
|
||||
|
||||
const myrigacol = {
|
||||
idapp,
|
||||
riga,
|
||||
col
|
||||
};
|
||||
|
||||
if (numparentUp === 0) {
|
||||
return await Nave.findGeneric(myrigacol);
|
||||
}
|
||||
|
||||
let parentup = 0;
|
||||
let myrec = null;
|
||||
let lastrec = null;
|
||||
|
||||
while (parentup < numparentUp) {
|
||||
|
||||
myrec = await Nave.findGeneric(myrigacol);
|
||||
if (!!myrec) {
|
||||
if (myrec.parent_id === "0") {
|
||||
break;
|
||||
}
|
||||
|
||||
recfind = await Nave.findById(idapp, myrec.parent_id);
|
||||
if (!!recfind) {
|
||||
if (recfind.length > 0) {
|
||||
recfind = recfind[0];
|
||||
lastrec = recfind;
|
||||
myrigacol.riga = lastrec.riga;
|
||||
myrigacol.col = lastrec.col;
|
||||
} else {
|
||||
lastrec = await User.findByIndOrder(idapp, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
parentup++;
|
||||
}
|
||||
|
||||
if (!lastrec) {
|
||||
return await User.findByIndOrder(idapp, 0);
|
||||
}
|
||||
|
||||
return lastrec;
|
||||
|
||||
};
|
||||
|
||||
function getlimiti(mypos) {
|
||||
|
||||
if (mypos.col < 0) {
|
||||
mypos.col = 0;
|
||||
}
|
||||
|
||||
if (mypos.riga < 0) {
|
||||
mypos.riga = 0;
|
||||
mypos.col = 0;
|
||||
}
|
||||
|
||||
return mypos;
|
||||
}
|
||||
|
||||
function getRigaColByPosUp(mypos) {
|
||||
mypos.riga = mypos.riga - mypos.numup;
|
||||
mypos.col = Math.floor(mypos.col / (Math.pow(2, mypos.numup)));
|
||||
// if ((mypos.col % 2) !== 0)
|
||||
// mypos.col++;
|
||||
|
||||
}
|
||||
|
||||
function getRigaColGenerica(idapp, riga, col, numup) {
|
||||
mypos = {
|
||||
idapp,
|
||||
riga,
|
||||
col,
|
||||
numup
|
||||
};
|
||||
|
||||
if (idapp === tools.AYNI) {
|
||||
getRigaColByPosUp(mypos);
|
||||
ris = getlimiti(mypos);
|
||||
}
|
||||
|
||||
return ris;
|
||||
}
|
||||
|
||||
function getRigaColSognatoreByFuoco(idapp, riga, col) {
|
||||
return getRigaColGenerica(idapp, riga, col, 6);
|
||||
}
|
||||
|
||||
function getRigaColMediatoreByFuoco(idapp, riga, col) {
|
||||
return getRigaColGenerica(idapp, riga, col, 3);
|
||||
}
|
||||
|
||||
NaveSchema.statics.findGeneric = function (myrigacol) {
|
||||
|
||||
const { ListaIngresso } = require('./listaingresso');
|
||||
|
||||
const myquery = getQueryProj({ idapp: myrigacol.idapp, riga: myrigacol.riga, col: myrigacol.col });
|
||||
|
||||
return Nave.aggregate(myquery)
|
||||
.then(async (rec) => {
|
||||
if (!rec || rec.length === 0) {
|
||||
if (myrigacol.nullifnotexist)
|
||||
return null;
|
||||
|
||||
const ris = await ListaIngresso.findByIndOrder(myrigacol.idapp, 0);
|
||||
const arr = [];
|
||||
arr.push(ris);
|
||||
return arr;
|
||||
}
|
||||
else {
|
||||
return rec;
|
||||
}
|
||||
}
|
||||
).then(async (rec) => {
|
||||
|
||||
const { User } = require('./user');
|
||||
|
||||
if (!!rec) {
|
||||
if (rec.length > 0) {
|
||||
// console.log('rec', rec);
|
||||
// console.table('myrigacol', myrigacol);
|
||||
if (!!rec[0]) {
|
||||
const newrec = await User.getSmallRecByIndOrder(myrigacol.idapp, rec[0].ind_order);
|
||||
if (!!newrec) {
|
||||
let myarr = {};
|
||||
if (rec[0]._doc === undefined)
|
||||
myarr = { ...newrec._doc, ...rec[0] };
|
||||
else
|
||||
myarr = { ...newrec._doc, ...rec[0]._doc };
|
||||
return myarr;
|
||||
} else {
|
||||
let myarr = null;
|
||||
if (rec[0]._doc === undefined)
|
||||
myarr = { ...newrec._doc, ...rec[0] };
|
||||
else
|
||||
myarr = { ...newrec._doc, ...rec[0]._doc };
|
||||
|
||||
return myarr;
|
||||
}
|
||||
} else {
|
||||
const ris = await ListaIngresso.findByIndOrder(myrigacol.idapp, 0);
|
||||
if (!!ris)
|
||||
return ris[0]
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}).catch((e) => {
|
||||
console.error(e);
|
||||
});
|
||||
|
||||
}
|
||||
;
|
||||
|
||||
|
||||
NaveSchema.statics.findSognatoriByFuoco = async function (idapp, riga, col, offset) {
|
||||
const Nave = this;
|
||||
|
||||
// const myrigacol = getRigaColSognatoreByFuoco(idapp, riga, col);
|
||||
|
||||
// return Nave.findGeneric(myrigacol);
|
||||
|
||||
return [await Nave.findRecByRigaColParent(idapp, riga, col, 6 - offset),
|
||||
await Nave.findRecByRigaColParent(idapp, riga, col, 5 - offset),
|
||||
await Nave.findRecByRigaColParent(idapp, riga, col, 4 - offset)
|
||||
]
|
||||
|
||||
};
|
||||
|
||||
|
||||
NaveSchema.statics.findMediatoreByFuoco = async function (idapp, riga, col, offset) {
|
||||
const Nave = this;
|
||||
|
||||
// const myrigacol = getRigaColMediatoreByFuoco(idapp, riga, col);
|
||||
// return Nave.findGeneric(myrigacol);
|
||||
return await Nave.findRecByRigaColParent(idapp, riga, col, 3 - offset);
|
||||
|
||||
|
||||
};
|
||||
|
||||
function getQueryProj(myfilter) {
|
||||
|
||||
myobjField = {
|
||||
_id: 1,
|
||||
lang: 1,
|
||||
ind_order: 1,
|
||||
name: 1,
|
||||
surname: 1,
|
||||
username: 1,
|
||||
date_start: 1,
|
||||
made_gift: 1,
|
||||
link_chat: 1,
|
||||
date_made_gift: 1,
|
||||
received_gift: 1,
|
||||
date_received_gift: 1,
|
||||
num_tess: 1,
|
||||
indprimario: 1,
|
||||
parent_id: 1,
|
||||
riga: 1,
|
||||
col: 1,
|
||||
created: 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;
|
||||
}
|
||||
|
||||
|
||||
NaveSchema.statics.setRiga = function (idapp, riga) {
|
||||
return Settings.setKeyNum(idapp, 'riga', riga);
|
||||
};
|
||||
|
||||
NaveSchema.statics.getRiga = function (idapp) {
|
||||
return Settings.getKeyNum(idapp, 'riga', 1);
|
||||
};
|
||||
|
||||
NaveSchema.statics.setCol = function (idapp, col) {
|
||||
return Settings.setKeyNum(idapp, 'col', col);
|
||||
};
|
||||
|
||||
NaveSchema.statics.getCol = function (idapp) {
|
||||
return Settings.getKeyNum(idapp, 'col', 1);
|
||||
};
|
||||
|
||||
function getmaxcol(riga) {
|
||||
|
||||
return Math.pow(2, riga - 1);
|
||||
}
|
||||
|
||||
function getPrimoFuocoByIndCol(col) {
|
||||
return Math.floor(col - (col % 8)) + 1;
|
||||
}
|
||||
|
||||
async function getusertextbyrec(myrec, symbol, lettera, riga, col, ind) {
|
||||
let visu_test = false;
|
||||
if (!!myrec)
|
||||
visu_test = await Settings.getValDbSettings(myrec.idapp, 'VISU_TEST');
|
||||
|
||||
if (!visu_test) {
|
||||
if (myrec)
|
||||
return lettera + ind + ' - ' + symbol + ' ' + myrec.name + ' ' + tools.getFirst2Car(myrec.surname) + ' (' + myrec.username + ')';
|
||||
else
|
||||
return lettera + ind + ' - ' + symbol;
|
||||
|
||||
} else {
|
||||
if (myrec)
|
||||
return lettera + ind + ' - ' + symbol + '[' + miariga + ',' + miacol + ']' + ' ' + myrec.name + ' ' + myrec.surname + '';
|
||||
else
|
||||
return lettera + ind + ' - ' + symbol;
|
||||
}
|
||||
}
|
||||
|
||||
NaveSchema.statics.getPlaccaGenerica = async function (idapp, riga, col, offset, solorecord) {
|
||||
const Nave = this;
|
||||
|
||||
try {
|
||||
let recsognatori = await Nave.findSognatoriByFuoco(idapp, riga, col, offset);
|
||||
let recmediatore = await Nave.findMediatoreByFuoco(idapp, riga, col, offset);
|
||||
|
||||
let primofuoco = getPrimoFuocoByIndCol(col);
|
||||
|
||||
mystr = tools.ACAPO;
|
||||
|
||||
mystr += 'GIFTING CHAT (' + riga + '.' + col + ') ' + tools.ACAPO + tools.ACAPO;
|
||||
|
||||
if (offset === tools.Placca.SONOFUOCO) {
|
||||
mystr += tools.Placca.SOGNATORE + tools.Placca.STR_SOGNATORE + ': ' + await getusertextbyrec(recsognatori[0], '', '', riga, col, '') + tools.ACAPO + tools.ACAPO;
|
||||
mystr += tools.Placca.MEDIATORE + tools.Placca.STR_MEDIATORE + ': ' + await getusertextbyrec(recmediatore, '', '', riga, col, '') + tools.ACAPO + tools.ACAPO;
|
||||
}
|
||||
|
||||
if (offset === tools.Placca.SONOACQUA) {
|
||||
mystr += tools.Placca.SOGNATORE + tools.Placca.STR_SOGNATORE + ': ' + await getusertextbyrec(recmediatore, '', '', riga, col, '') + tools.ACAPO + tools.ACAPO;
|
||||
}
|
||||
|
||||
let symb = {
|
||||
car: 'D',
|
||||
icona: '🔥'
|
||||
};
|
||||
|
||||
if (offset === tools.Placca.SONOFUOCO) {
|
||||
mystr += tools.Placca.STR_DONATORI + ':' + tools.ACAPO;
|
||||
} else if (offset === tools.Placca.SONOACQUA) {
|
||||
mystr += tools.Placca.STR_MEDIATORI + ':' + tools.ACAPO;
|
||||
symb = {
|
||||
car: 'A',
|
||||
icona: '💦'
|
||||
};
|
||||
}
|
||||
|
||||
// mystr += '🔥🌏💦💨🔥🌏💦💨' + tools.ACAPO;
|
||||
|
||||
let arrdonatori = [];
|
||||
let ind = 1;
|
||||
for (let indcol = primofuoco; indcol < primofuoco + 8; indcol++) {
|
||||
let indr = riga + offset;
|
||||
let indc = indcol + (offset * indr);
|
||||
|
||||
indr = riga + offset;
|
||||
indc = calcval(riga, col, 8) + (indcol - primofuoco + 1);
|
||||
// miacol = calcval(riga, col, 8) + (indfuoco);
|
||||
|
||||
|
||||
let recfuoco = await Nave.findByRigaCol(idapp, indr, indc, true);
|
||||
arrdonatori.push(recfuoco);
|
||||
mystr += await getusertextbyrec(recfuoco, symb.icona, symb.car, indr, indc, ind) + tools.ACAPO;
|
||||
ind++;
|
||||
}
|
||||
|
||||
if (solorecord) {
|
||||
res = {
|
||||
recsognatori,
|
||||
recmediatore,
|
||||
arrdonatori
|
||||
};
|
||||
|
||||
return res;
|
||||
} else {
|
||||
return mystr;
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
NaveSchema.statics.getPlaccaPerDonatore = async function (idapp, riga, col, solorecord) {
|
||||
const Nave = this;
|
||||
return Nave.getPlaccaGenerica(idapp, riga, col, tools.Placca.SONOFUOCO, solorecord);
|
||||
};
|
||||
|
||||
NaveSchema.statics.getPlaccaPerMediatore = async function (idapp, riga, col, solorecord) {
|
||||
const Nave = this;
|
||||
return Nave.getPlaccaGenerica(idapp, riga, col, tools.Placca.SONOACQUA, solorecord);
|
||||
};
|
||||
|
||||
function calcval(riga, col, quanti) {
|
||||
return (quanti * (col - 1));
|
||||
}
|
||||
|
||||
NaveSchema.statics.getNavePos = async function (idapp, riga, col, solorecord) {
|
||||
const Nave = this;
|
||||
|
||||
try {
|
||||
let recsognatori = [await Nave.findRecByRigaColParent(idapp, riga, col, 3),
|
||||
await Nave.findRecByRigaColParent(idapp, riga, col, 2),
|
||||
await Nave.findRecByRigaColParent(idapp, riga, col, 1)];
|
||||
|
||||
let recmediatore = await Nave.findByRigaCol(idapp, riga, col, true);
|
||||
|
||||
|
||||
mystr = '🌈SOGNATORE: ';
|
||||
for (let indsogn = 0; indsogn < recsognatori.length; indsogn++) {
|
||||
mystr += 'A' + (3 - indsogn) + await getusertextbyrec(recsognatori[indsogn], '', '', riga, col, '') + tools.ACAPO;
|
||||
}
|
||||
|
||||
mystr += tools.ACAPO + '🌀 MEDIATORE:' + await getusertextbyrec(recmediatore, '', '', riga, col, '') + tools.ACAPO + tools.ACAPO;
|
||||
|
||||
for (let indterra = 1; indterra <= 2; indterra++) {
|
||||
miacol = calcval(riga, col, 2) + (indterra);
|
||||
miariga = riga + 1;
|
||||
let recterra = await Nave.findByRigaCol(idapp, miariga, miacol, true);
|
||||
mystr += await getusertextbyrec(recterra, '', 'B', miariga, miacol, indterra) + tools.ACAPO;
|
||||
}
|
||||
|
||||
mystr += tools.ACAPO;
|
||||
|
||||
for (let indaria = 1; indaria <= 4; indaria++) {
|
||||
miacol = calcval(riga, col, 4) + (indaria);
|
||||
miariga = riga + 2;
|
||||
let recaria = await Nave.findByRigaCol(idapp, miariga, miacol, true);
|
||||
mystr += await getusertextbyrec(recaria, '', 'C', miariga, miacol, indaria) + tools.ACAPO;
|
||||
}
|
||||
|
||||
mystr += tools.ACAPO;
|
||||
|
||||
let primofuoco = null;
|
||||
|
||||
mystr += '🎁 DONATORI:' + tools.ACAPO;
|
||||
for (let indfuoco = 1; indfuoco <= 8; indfuoco++) {
|
||||
miacol = calcval(riga, col, 8) + (indfuoco);
|
||||
miariga = riga + 3;
|
||||
// miariga = riga + 2;
|
||||
let recfuoco = await Nave.findByRigaCol(idapp, miariga, miacol, true);
|
||||
if (indfuoco === 1)
|
||||
primofuoco = recfuoco;
|
||||
mystr += await getusertextbyrec(recfuoco, '', 'D', miariga, miacol, indfuoco) + tools.ACAPO;
|
||||
}
|
||||
|
||||
let data = "";
|
||||
if (primofuoco)
|
||||
data = "Partenza il " + tools.getstrDateLong(primofuoco.date_start) + tools.ACAPO;
|
||||
else
|
||||
data = "";
|
||||
|
||||
mystr = tools.ACAPO + 'NAVE (' + riga + '.' + col + ') ' + tools.ACAPO + data + tools.ACAPO + mystr;
|
||||
|
||||
return mystr;
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
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;
|
||||
|
||||
arrposizioni = await Nave.find({ 'idapp': idapp, ind_order }).sort({ riga: 1, col: 1 });
|
||||
|
||||
return arrposizioni;
|
||||
};
|
||||
|
||||
NaveSchema.statics.getPrimaNaveByRiga = async function (idapp, riga) {
|
||||
const Nave = this;
|
||||
|
||||
nave = await Nave.find({ 'idapp': idapp, riga: (riga + 3), col: 1 });
|
||||
|
||||
return nave;
|
||||
};
|
||||
|
||||
NaveSchema.statics.showListaOrd = async function (idapp) {
|
||||
const Nave = this;
|
||||
|
||||
const myquery = getQueryProj({ idapp });
|
||||
|
||||
arrrec = await Nave.aggregate(myquery).sort({ riga: 1, col: 1 });
|
||||
|
||||
let mystr = '';
|
||||
let conta = 1;
|
||||
for (const rec of arrrec) {
|
||||
mystr += '[' + conta + '] [' + rec.riga + '.' + rec.col + '] ' + rec.ind_order + ' ' + rec.name + ' ' + rec.surname + ' (' + tools.getstrDateShort(rec.date_start) + ')\n';
|
||||
conta++;
|
||||
}
|
||||
|
||||
|
||||
return mystr;
|
||||
};
|
||||
|
||||
async function addRecordNaveByParams(params, siRitesse) {
|
||||
const { ListaIngresso } = require('./listaingresso');
|
||||
|
||||
if (!siRitesse) {
|
||||
// Check if Exist:
|
||||
const giapresente = await Nave.findOne({ idapp: params.idapp, ind_order: params.ind_order, num_tess: params.num_tess });
|
||||
if (!!giapresente) {
|
||||
let fields_to_update = { added: true };
|
||||
await ListaIngresso.findOneAndUpdate({ _id: params.id.toString() }, { $set: fields_to_update }, { new: false });
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
let myNave = new Nave({
|
||||
idapp: params.idapp,
|
||||
indprimario: params.indprimario,
|
||||
ind_order: params.ind_order,
|
||||
riga: params.riga,
|
||||
col: params.col,
|
||||
date_start: params.date_start,
|
||||
num_tess: params.num_tess,
|
||||
});
|
||||
myNave.created = new Date();
|
||||
|
||||
console.log('[' + params.riga + ',' + params.col + ']');
|
||||
|
||||
const recfindparent = await Nave.findByRigaCol(idapp, params.rigaparent, params.colparent, false);
|
||||
if (!!recfindparent) {
|
||||
myNave.parent_id = recfindparent._id;
|
||||
} else {
|
||||
myNave.parent_id = "0";
|
||||
}
|
||||
|
||||
console.log('addRecordNaveByParams (' + myNave.parent_id + ')');
|
||||
|
||||
return await myNave.save()
|
||||
.then(async (result) => {
|
||||
|
||||
if (!!result) {
|
||||
|
||||
let fields_to_update = { added: true };
|
||||
await ListaIngresso.findOneAndUpdate({ _id: params.id.toString() }, { $set: fields_to_update }, { new: false });
|
||||
|
||||
params.conta++;
|
||||
|
||||
// Check if the Ship has Completed
|
||||
if (idapp === tools.AYNI) {
|
||||
if ((params.col % 8) === 0) {
|
||||
// Completed 8 people
|
||||
if (!params.primavolta) {
|
||||
await Fuochi8Completati(idapp, params);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Next
|
||||
if (params.col === params.maxcol) {
|
||||
params.riga++;
|
||||
params.rigaparent = params.riga - 1;
|
||||
params.col = 1;
|
||||
params.maxcol = getmaxcol(params.riga);
|
||||
} else {
|
||||
params.col++;
|
||||
}
|
||||
|
||||
if (params.riga === 2)
|
||||
params.colparent = 1;
|
||||
else
|
||||
params.colparent = Math.ceil(params.col / 2);
|
||||
|
||||
await Nave.setRiga(idapp, params.riga);
|
||||
await Nave.setCol(idapp, params.col);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}).catch((e) => {
|
||||
console.error(e);
|
||||
});
|
||||
}
|
||||
|
||||
NaveSchema.statics.checkifDeveRitessersi = async function (recuser) {
|
||||
const Nave = this;
|
||||
|
||||
let deveritessersi = true;
|
||||
|
||||
arrrec = await Nave.find({ idapp: recuser.idapp, ind_order: recuser.ind_order });
|
||||
|
||||
if (!!arrrec) {
|
||||
if (arrrec.length > 2) {
|
||||
// deveritessersi = await User.deveRitessersi(recuser.idapp, recuser.ind_order)
|
||||
deveritessersi = false;
|
||||
}
|
||||
}
|
||||
|
||||
return { deveritessersi, num_tess: arrrec.length };
|
||||
|
||||
};
|
||||
|
||||
|
||||
NaveSchema.statics.addUserFromListaIngresso_IntoNave = async function (init, idapp, params, addednowreal) {
|
||||
const Nave = this;
|
||||
|
||||
const { User } = require('./user');
|
||||
|
||||
if (init) {
|
||||
params.idapp = idapp;
|
||||
params.conta = 0;
|
||||
}
|
||||
|
||||
params.primavolta = (params.riga === 1) && (params.col === 1);
|
||||
params.riga = await Nave.getRiga(idapp);
|
||||
params.col = await Nave.getCol(idapp);
|
||||
params.maxcol = getmaxcol(params.riga);
|
||||
params.colparent = Math.ceil(params.col / 2);
|
||||
params.rigaparent = params.riga - 1;
|
||||
|
||||
myriga = params.riga;
|
||||
mycol = params.col;
|
||||
|
||||
const inserito = await addRecordNaveByParams(params, false);
|
||||
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...
|
||||
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) {
|
||||
params.indprimario = recmediatore.indprimario;
|
||||
params.ind_order = recmediatore.ind_order;
|
||||
params.id = recmediatore._id;
|
||||
params.num_tess = ris.num_tess;
|
||||
|
||||
await addRecordNaveByParams(params, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
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);
|
||||
params.indprimario = userFondo.indprimario;
|
||||
params.ind_order = userFondo.ind_order;
|
||||
params.id = userFondo._id;
|
||||
params.num_tess = userFondo.num_tess;
|
||||
|
||||
await addRecordNaveByParams(params, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Se ho completato 8 persone, allora
|
||||
if (addednowreal) {
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
NaveSchema.statics.generaNave = async function (idapp, mydata) {
|
||||
const Nave = this;
|
||||
|
||||
const { User } = require('./user');
|
||||
const { ListaIngresso } = require('./listaingresso');
|
||||
|
||||
let params = {
|
||||
idapp,
|
||||
riga: await Nave.getRiga(idapp),
|
||||
col: await Nave.getCol(idapp),
|
||||
date_start: mydata.date_start,
|
||||
numpersone: mydata.numpersone,
|
||||
};
|
||||
|
||||
params.primavolta = (params.riga === 1) && (params.col === 1);
|
||||
// params.primavolta = false;
|
||||
|
||||
const recfindFondo = await Nave.findByRigaCol(params.idapp, 0, 0, true);
|
||||
if (!recfindFondo) {
|
||||
let myNave = new Nave({ idapp, indprimario: 0, ind_order: 0, riga: 0, col: 0 });
|
||||
myNave.created = new Date();
|
||||
myNave.parent_id = ObjectID("5e592aecbfd0b75f3021d9c9");
|
||||
myNave.date_start = params.date_start;
|
||||
await myNave.save();
|
||||
|
||||
const userFondo = await User.findByIndOrder(idapp, 0);
|
||||
if (!userFondo || userFondo === undefined) {
|
||||
await telegrambot.sendMsgTelegramToTheAdmin(idapp, 'Devi creare l\'utente FONDO , con ind_order = 0 ! ');
|
||||
}
|
||||
}
|
||||
|
||||
const arrlistaingresso = await ListaIngresso.getProssimiInLista(idapp, true);
|
||||
|
||||
let index = 0;
|
||||
for (const reclista of arrlistaingresso) {
|
||||
|
||||
params.indprimario = reclista.indprimario;
|
||||
params.ind_order = reclista.ind_order;
|
||||
params.id = reclista._id;
|
||||
params.num_tess = reclista.num_tess;
|
||||
|
||||
await Nave.addUserFromListaIngresso_IntoNave(index === 0, idapp, params, false);
|
||||
index++;
|
||||
|
||||
if (index >= params.numpersone)
|
||||
break;
|
||||
}
|
||||
|
||||
return params.conta;
|
||||
|
||||
};
|
||||
|
||||
async function addUserToNave(idapp, rec) {
|
||||
|
||||
let params = {};
|
||||
|
||||
params.indprimario = rec.indprimario;
|
||||
params.ind_order = rec.ind_order;
|
||||
params.id = rec._id;
|
||||
params.num_tess = rec.num_tess;
|
||||
|
||||
return await Nave.addUserFromListaIngresso_IntoNave(true, idapp, params, true);
|
||||
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
for (const rec of arrlista) {
|
||||
if (rec.numinvitatiattivi >= 2) {
|
||||
await addUserToNave(idapp, rec);
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
NaveSchema.statics.getNaveByUser = async function (idapp, ind_order, lang, fuoco) {
|
||||
const Nave = this;
|
||||
|
||||
let mystr = '';
|
||||
const arrposiz = await Nave.getArrPosizioniByIndOrder(idapp, ind_order);
|
||||
if (!!arrposiz) {
|
||||
for (const pos of arrposiz) {
|
||||
mystr += await Nave.getNavePos(idapp, pos.riga - 3, Math.floor(pos.col / (2 * 4)), false);
|
||||
mystr += await Nave.getPlaccaPerDonatore(idapp, pos.riga, pos.col, false);
|
||||
mystr += await Nave.getPlaccaPerMediatore(idapp, pos.riga, pos.col, false);
|
||||
}
|
||||
}
|
||||
|
||||
if (mystr === '') {
|
||||
mystr = tools.gettranslate('NO_PROG', lang);
|
||||
}
|
||||
|
||||
return mystr;
|
||||
};
|
||||
|
||||
NaveSchema.statics.getNaveByRigaCol = async function (idapp, riga, col) {
|
||||
const Nave = this;
|
||||
|
||||
rec = {};
|
||||
rec.donatore = await Nave.getPlaccaPerDonatore(idapp, riga, col, true);
|
||||
rec.mediatore = await Nave.getPlaccaPerMediatore(idapp, riga, col, true);
|
||||
|
||||
return rec;
|
||||
};
|
||||
|
||||
|
||||
const Nave = mongoose.model('Nave', NaveSchema);
|
||||
|
||||
|
||||
module.exports = { Nave };
|
||||
|
||||
|
||||
@@ -95,7 +95,37 @@ SettingsSchema.statics.findAllIdApp = function (idapp, serv) {
|
||||
});
|
||||
};
|
||||
|
||||
SettingsSchema.statics.setKeyNum = async function (idapp, key, value) {
|
||||
const Settings = this;
|
||||
|
||||
const Settings = mongoose.model('Settings', SettingsSchema);
|
||||
let myrec = await Settings.findOne({ idapp, key });
|
||||
if (!myrec) {
|
||||
myrec = new Settings({ key });
|
||||
myrec._id = new ObjectID();
|
||||
myrec.idapp = idapp;
|
||||
myrec.type = tools.FieldType.number;
|
||||
myrec.value_num = value;
|
||||
|
||||
return await myrec.save();
|
||||
} else {
|
||||
myrec = await Settings.findOneAndUpdate({ idapp, key }, { $set: { value_num: value } }, { new: false});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
SettingsSchema.statics.getKeyNum = async function (idapp, key, mydefault) {
|
||||
const Settings = this;
|
||||
|
||||
const ret = await Settings.findOne({ idapp, key});
|
||||
if (!!ret) {
|
||||
return ret.value_num;
|
||||
} else {
|
||||
return mydefault;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
const Settings = mongoose.model('Settings', SettingsSchema);
|
||||
|
||||
module.exports = { Settings };
|
||||
|
||||
@@ -8,7 +8,7 @@ const tools = require('../tools/general');
|
||||
|
||||
const { Settings } = require('../models/settings');
|
||||
const { ListaIngresso } = require('../models/listaingresso');
|
||||
const { Billettera } = require('./billettera');
|
||||
const { Nave } = require('../models/nave');
|
||||
const { ExtraList } = require('../models/extralist');
|
||||
|
||||
const { ObjectID } = require('mongodb');
|
||||
@@ -126,6 +126,9 @@ const UserSchema = new mongoose.Schema({
|
||||
aportador_solidario: {
|
||||
type: String,
|
||||
},
|
||||
aportador_iniziale: {
|
||||
type: String,
|
||||
},
|
||||
aportador_solidario_nome_completo: {
|
||||
type: String,
|
||||
},
|
||||
@@ -188,6 +191,9 @@ const UserSchema = new mongoose.Schema({
|
||||
special_req: {
|
||||
type: Boolean
|
||||
},
|
||||
vuole_ritessersi: {
|
||||
type: Boolean
|
||||
},
|
||||
sex: {
|
||||
type: Number,
|
||||
},
|
||||
@@ -338,7 +344,7 @@ UserSchema.statics.findByUsername = async function (idapp, username, alsoemail)
|
||||
if ((!ris) && (alsoemail)) {
|
||||
regexemail = new RegExp(["^", username.toLowerCase(), "$"].join(""), "i");
|
||||
|
||||
return await User.findOne({
|
||||
return User.findOne({
|
||||
'idapp': idapp,
|
||||
'email': regexemail,
|
||||
});
|
||||
@@ -365,6 +371,7 @@ UserSchema.statics.getUserShortDataByUsername = async function (idapp, username)
|
||||
'profile.email_paypal': 1,
|
||||
'profile.my_dream': 1,
|
||||
'profile.paymenttypes': 1,
|
||||
'profile.cell': 1,
|
||||
made_gift: 1,
|
||||
email: 1,
|
||||
date_reg: 1,
|
||||
@@ -389,6 +396,9 @@ UserSchema.statics.getUserShortDataByUsername = async function (idapp, username)
|
||||
};
|
||||
|
||||
UserSchema.statics.getDownlineByUsername = async function (idapp, username) {
|
||||
if (username === undefined)
|
||||
return null;
|
||||
|
||||
const User = this;
|
||||
const arrrec = await User.find({
|
||||
'idapp': idapp,
|
||||
@@ -406,6 +416,7 @@ UserSchema.statics.getDownlineByUsername = async function (idapp, username) {
|
||||
'profile.email_paypal': 1,
|
||||
'profile.my_dream': 1,
|
||||
'profile.paymenttypes': 1,
|
||||
'profile.cell': 1,
|
||||
made_gift: 1,
|
||||
email: 1,
|
||||
date_reg: 1,
|
||||
@@ -430,32 +441,45 @@ UserSchema.statics.getDownlineByUsername = async function (idapp, username) {
|
||||
UserSchema.statics.getnumInvitatiAttivi = function (idapp, username) {
|
||||
const User = this;
|
||||
|
||||
return User.count({
|
||||
if (username === undefined)
|
||||
return 0;
|
||||
|
||||
// return User.count({
|
||||
return User.countDocuments({
|
||||
idapp,
|
||||
aportador_solidario: username,
|
||||
$or: [
|
||||
{
|
||||
'profile.special_req': true
|
||||
},
|
||||
{
|
||||
|
||||
verified_email: true,
|
||||
'profile.teleg_id': { $gt: 1 },
|
||||
'profile.saw_and_accepted': shared_consts.ALL_SAW_AND_ACCEPTED,
|
||||
'profile.saw_zoom_presentation': true,
|
||||
'profile.my_dream': { $exists: true },
|
||||
'profile.paymenttypes': { "$in": ['paypal'] },
|
||||
$and: [
|
||||
{ "$expr": { "$gt": [{ "$strLenCP": "$profile.my_dream" }, 10] } },
|
||||
{ "$expr": { "$gt": [{ "$strLenCP": "$profile.email_paypal" }, 6] } }
|
||||
],
|
||||
$where: "this.profile.paymenttypes.length >= 1",
|
||||
'profile.email_paypal': { $exists: true },
|
||||
}]
|
||||
});
|
||||
};
|
||||
|
||||
UserSchema.statics.isUserQualified7 = async function (idapp, username) {
|
||||
const User = this;
|
||||
|
||||
const myrec = await User.findOne({
|
||||
if (username === undefined)
|
||||
return false;
|
||||
|
||||
const myquery = {
|
||||
'idapp': idapp,
|
||||
'username': username,
|
||||
$or: [
|
||||
{
|
||||
special_req: true
|
||||
'profile.special_req': true
|
||||
},
|
||||
{
|
||||
verified_email: true,
|
||||
@@ -464,22 +488,39 @@ UserSchema.statics.isUserQualified7 = async function (idapp, username) {
|
||||
'profile.saw_zoom_presentation': true,
|
||||
'profile.my_dream': { $exists: true },
|
||||
'profile.email_paypal': { $exists: true },
|
||||
'profile.paymenttypes': { "$in": ['paypal'] },
|
||||
$and: [
|
||||
{ "$expr": { "$gt": [{ "$strLenCP": "$profile.my_dream" }, 10] } },
|
||||
{ "$expr": { "$gt": [{ "$strLenCP": "$profile.email_paypal" }, 6] } }
|
||||
],
|
||||
$where: "this.profile.paymenttypes.length >= 1",
|
||||
}]
|
||||
});
|
||||
};
|
||||
|
||||
const myrec = await User.findOne(myquery);
|
||||
|
||||
return !!myrec;
|
||||
};
|
||||
|
||||
UserSchema.statics.isUserQualified9 = async function (idapp, username) {
|
||||
const User = this;
|
||||
|
||||
if (username === undefined)
|
||||
return false;
|
||||
|
||||
qualified = await User.isUserQualified7(idapp, username);
|
||||
numinvitatiattivi = await User.getnumInvitatiAttivi(idapp, username);
|
||||
|
||||
return qualified && (numinvitatiattivi >= 2);
|
||||
|
||||
};
|
||||
|
||||
UserSchema.statics.getnumPaymentOk = function (idapp) {
|
||||
const User = this;
|
||||
|
||||
return User.count({
|
||||
idapp,
|
||||
'profile.paymenttypes': { "$in": ['paypal'] },
|
||||
$where: "this.profile.paymenttypes.length >= 1",
|
||||
'profile.email_paypal': { $exists: true },
|
||||
});
|
||||
@@ -529,6 +570,21 @@ UserSchema.statics.findByLinkreg = function (idapp, linkreg) {
|
||||
});
|
||||
};
|
||||
|
||||
UserSchema.statics.AportadorOrig = function (idapp, id) {
|
||||
const User = this;
|
||||
|
||||
return User.findOne({
|
||||
'_id': id,
|
||||
'idapp': idapp,
|
||||
}).then((rec) => {
|
||||
if (rec)
|
||||
return rec.aportador_iniziale;
|
||||
else
|
||||
return '';
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
UserSchema.statics.findByLinkTokenforgot = function (idapp, email, tokenforgot) {
|
||||
const User = this;
|
||||
|
||||
@@ -560,17 +616,17 @@ UserSchema.statics.findByIndOrder = function (idapp, ind_order) {
|
||||
const User = this;
|
||||
|
||||
try {
|
||||
// ++Todo: non mettere tutti i campi !!
|
||||
return User.findOne({
|
||||
'idapp': idapp,
|
||||
'ind_order': ind_order,
|
||||
idapp,
|
||||
ind_order,
|
||||
});
|
||||
} catch (e) {
|
||||
|
||||
console.error(e);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
UserSchema.pre('save', function (next) {
|
||||
const user = this;
|
||||
|
||||
@@ -611,6 +667,29 @@ UserSchema.statics.getEmailByUsername = async function (idapp, username) {
|
||||
});
|
||||
};
|
||||
|
||||
UserSchema.statics.getUsernameById = async function (idapp, id) {
|
||||
const User = this;
|
||||
|
||||
return await User.findOne({ idapp, _id: id }, { username: 1 })
|
||||
.then((myuser) => {
|
||||
return ((myuser) ? myuser.username : '');
|
||||
}).catch((e) => {
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
UserSchema.statics.getUserById = function (idapp, id) {
|
||||
const User = this;
|
||||
|
||||
return User.findOne({ idapp, _id: id })
|
||||
};
|
||||
|
||||
UserSchema.statics.getUserByAportador = function (idapp, aportador_solidario) {
|
||||
const User = this;
|
||||
|
||||
return User.findOne({ idapp, aportador_solidario })
|
||||
};
|
||||
|
||||
UserSchema.statics.getAportadorSolidarioByUsername = async function (idapp, username) {
|
||||
const User = this;
|
||||
|
||||
@@ -633,6 +712,17 @@ UserSchema.statics.UserByIdTelegram = async function (idapp, teleg_id) {
|
||||
});
|
||||
};
|
||||
|
||||
UserSchema.statics.UsersByIdTelegram = async function (idapp, teleg_id) {
|
||||
const User = this;
|
||||
|
||||
return await User.find({ idapp, 'profile.teleg_id': teleg_id })
|
||||
.then((rec) => {
|
||||
return (!!rec) ? rec._doc : null;
|
||||
}).catch((e) => {
|
||||
console.error('UserExistByIdTelegram', e);
|
||||
});
|
||||
};
|
||||
|
||||
UserSchema.statics.TelegIdByUsername = async function (idapp, username) {
|
||||
const User = this;
|
||||
|
||||
@@ -705,6 +795,24 @@ UserSchema.statics.getNameSurnameByUsername = async function (idapp, username) {
|
||||
});
|
||||
};
|
||||
|
||||
UserSchema.statics.getSmallRecByIndOrder = async function (idapp, ind_order) {
|
||||
const User = this;
|
||||
|
||||
return await User.findOne({ idapp, ind_order },
|
||||
{
|
||||
ind_order: 1,
|
||||
username: 1,
|
||||
name: 1,
|
||||
surname: 1
|
||||
}
|
||||
)
|
||||
.then((rec) => {
|
||||
return rec;
|
||||
}).catch((e) => {
|
||||
console.error('getSmallRecByIndOrder', e);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
UserSchema.statics.getusersManagers = async function (idapp) {
|
||||
const User = this;
|
||||
@@ -717,15 +825,25 @@ UserSchema.statics.getusersManagers = async function (idapp) {
|
||||
});
|
||||
};
|
||||
|
||||
UserSchema.statics.getUsersTelegALL = async function (idapp) {
|
||||
UserSchema.statics.getUsersTelegALL = async function (idapp, username) {
|
||||
const User = this;
|
||||
|
||||
if (!!username) {
|
||||
return await User.find({ idapp, username, 'profile.teleg_id': { $gt: 0 } })
|
||||
.then((arrrec) => {
|
||||
return (!!arrrec) ? arrrec : null;
|
||||
}).catch((e) => {
|
||||
console.error('getUsersTelegALL', e);
|
||||
});
|
||||
} else {
|
||||
return await User.find({ idapp, 'profile.teleg_id': { $gt: 0 } })
|
||||
.then((arrrec) => {
|
||||
return (!!arrrec) ? arrrec : null;
|
||||
}).catch((e) => {
|
||||
console.error('getUsersTelegALL', e);
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
UserSchema.statics.isManagerByIdTeleg = async function (idapp, idtelegram) {
|
||||
@@ -851,13 +969,15 @@ UserSchema.statics.getDashboard = async function (idapp, aportador_solidario, us
|
||||
dashboard.aportador = await ExtraList.getUserNotRegisteredByNameSurname(idapp, aportador_solidario_nome_completo);
|
||||
}
|
||||
|
||||
dashboard.downline = [];
|
||||
|
||||
// Data of my Downline
|
||||
const arrap = await User.getDownlineByUsername(idapp, aportador_solidario);
|
||||
if (!!arrap)
|
||||
dashboard.numpeople_aportador = arrap.length;
|
||||
|
||||
dashboard.downline = await User.getDownlineByUsername(idapp, username);
|
||||
dashboard.downnotreg = await ExtraList.getDownlineNotRegisteredByNameSurname(idapp, dashboard.myself.name + ' ' + dashboard.myself.surname);
|
||||
// dashboard.downnotreg = await ExtraList.getDownlineNotRegisteredByNameSurname(idapp, dashboard.myself.name + ' ' + dashboard.myself.surname);
|
||||
|
||||
dashboard.downbyuser = {};
|
||||
|
||||
@@ -868,6 +988,18 @@ UserSchema.statics.getDashboard = async function (idapp, aportador_solidario, us
|
||||
dashboard.downbyuser[down2.username] = await User.getDownlineByUsername(idapp, down2.username);
|
||||
}
|
||||
}
|
||||
|
||||
dashboard.arrnavi = await Nave.getArrPosizioniByIndOrder(idapp, dashboard.myself.ind_order);
|
||||
|
||||
dashboard.navi_partenza = [];
|
||||
for (let indriga = 0; indriga < 10; indriga++) {
|
||||
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);
|
||||
}
|
||||
|
||||
return dashboard;
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
@@ -920,12 +1052,12 @@ UserSchema.statics.getUsersQualified = async function (idapp, numinvitati) {
|
||||
idapp,
|
||||
$or: [
|
||||
{
|
||||
special_req: true
|
||||
'profile.special_req': true
|
||||
},
|
||||
{
|
||||
verified_email: true,
|
||||
'profile.teleg_id': { $gt: 0 },
|
||||
$where: "this.profile.paymenttypes.length >= 1",
|
||||
'profile.paymenttypes': { "$in": ['paypal'] },
|
||||
'profile.saw_and_accepted': shared_consts.ALL_SAW_AND_ACCEPTED,
|
||||
'profile.saw_zoom_presentation': true,
|
||||
'profile.my_dream': { $exists: true },
|
||||
@@ -1022,7 +1154,15 @@ UserSchema.statics.getLastUsers = async function (idapp) {
|
||||
|
||||
const lastn = await Settings.getValDbSettings(idapp, 'SHOW_LAST_N_USERS', 5);
|
||||
|
||||
return await User.find({ idapp }).sort({ date_temp_reg: -1 }).limit(lastn).then((arr) => {
|
||||
return await User.find({ idapp }, {
|
||||
username: 1,
|
||||
name: 1,
|
||||
surname: 1,
|
||||
date_temp_reg: 1,
|
||||
date_reg: 1,
|
||||
ind_order: 1,
|
||||
'profile.nationality': 1,
|
||||
}).sort({ date_temp_reg: -1 }).limit(lastn).then((arr) => {
|
||||
//return JSON.stringify(arr)
|
||||
return arr
|
||||
});
|
||||
@@ -1079,23 +1219,47 @@ UserSchema.statics.findAllDistinctNationality = async function (idapp) {
|
||||
};
|
||||
|
||||
UserSchema.statics.getUsersRegDaily = function (idapp, nrec) {
|
||||
|
||||
const query = [
|
||||
{
|
||||
$match: { idapp }
|
||||
$match: { idapp, date_temp_reg: { $gte: tools.IncDateNow(-(1000 * 60 * 60 * 24 * nrec)) } }
|
||||
},
|
||||
{
|
||||
$group: { _id: { $dateToString: { format: "%Y-%m-%d", date: "$date_temp_reg" } }, count: { $sum: 1 } }
|
||||
},
|
||||
{
|
||||
$sort: { _id: 1 }
|
||||
},
|
||||
{
|
||||
$limit: nrec
|
||||
}
|
||||
];
|
||||
return query
|
||||
};
|
||||
|
||||
UserSchema.statics.getnumRegNDays = function (idapp, nrec) {
|
||||
|
||||
|
||||
const query = [
|
||||
{
|
||||
$match: { idapp, date_temp_reg: { $lt: tools.IncDateNow(-(1000 * 60 * 60 * 24 * nrec)) } }
|
||||
},
|
||||
{
|
||||
$group: { _id: { $dateToString: { format: "%Y-%m-%d", date: "$date_temp_reg" } }, count: { $sum: 1 } }
|
||||
},
|
||||
{
|
||||
$sort: { _id: 1 }
|
||||
}
|
||||
];
|
||||
return query
|
||||
};
|
||||
|
||||
UserSchema.statics.calcnumRegUntilDay = async function (idapp) {
|
||||
const User = this;
|
||||
|
||||
return await User.aggregate(User.getnumRegNDays(idapp, 30))
|
||||
.then((arr) => {
|
||||
return arr.reduce((sum, rec) => sum + rec.count, 0);
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
UserSchema.statics.calcRegDaily = async function (idapp) {
|
||||
const User = this;
|
||||
@@ -1116,22 +1280,31 @@ if (tools.INITDB_FIRSTIME) {
|
||||
// UserSchema.index({ surname: 1 });
|
||||
}
|
||||
|
||||
async function addUtentiInLista(idapp, mode) {
|
||||
async function addUtentiInLista(idapp, mode, arrusers) {
|
||||
let num = 0;
|
||||
for (const rec of arrusers) {
|
||||
let ok = false;
|
||||
let qualified = await User.isUserQualified7(idapp, rec.username);
|
||||
let numinvitatiattivi = await User.getnumInvitatiAttivi(idapp, rec.username);
|
||||
let numinvitati = await User.getnumInvitati(idapp, rec.username);
|
||||
|
||||
if (rec.profile.special_req) {
|
||||
numinvitatiattivi = 2;
|
||||
}
|
||||
|
||||
if (mode === 1) {
|
||||
// 9 punti qualificati
|
||||
ok = qualified && (numinvitatiattivi >= 2);
|
||||
} else if (mode === 2) {
|
||||
// 8 punti qualificati ( 1 Invitato)
|
||||
ok = qualified && (numinvitati === 2);
|
||||
} else if (mode === 3) {
|
||||
ok = qualified && (numinvitatiattivi === 1);
|
||||
} else if (mode === 4) {
|
||||
ok = qualified && (numinvitati === 1);
|
||||
} else if (mode === 5) {
|
||||
// 7 punti qualificati
|
||||
ok = qualified;
|
||||
} else {
|
||||
ok = true;
|
||||
// // almeno telegram ID
|
||||
// ok = user.profile.teleg_id > 0;
|
||||
// } else {
|
||||
@@ -1139,24 +1312,37 @@ async function addUtentiInLista(idapp, mode) {
|
||||
}
|
||||
|
||||
if (ok) {
|
||||
if (!await ListaIngresso.findByUsername(idapp, rec.username)) {
|
||||
let listaingresso = new ListaIngresso({
|
||||
username: rec.username,
|
||||
ind_order: rec.ind_order,
|
||||
name: rec.name,
|
||||
surname: rec.surname,
|
||||
idapp,
|
||||
_id: new ObjectID()
|
||||
});
|
||||
|
||||
await listaingresso.save();
|
||||
ris = await ListaIngresso.addUserInListaIngresso(idapp, rec.ind_order, rec.lang, false, 1);
|
||||
if (!!ris)
|
||||
num++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
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 : ''
|
||||
|
||||
};
|
||||
|
||||
UserSchema.statics.DbOp = async function (idapp, mydata) {
|
||||
const User = this;
|
||||
try {
|
||||
@@ -1190,26 +1376,21 @@ UserSchema.statics.DbOp = async function (idapp, mydata) {
|
||||
|
||||
} else if (mydata.dbop === 'creaLista') {
|
||||
|
||||
await ListaIngresso.remove({ idapp });
|
||||
await ListaIngresso.deleteMany({ idapp, added: false });
|
||||
|
||||
arrusers = await User.find({ 'idapp': idapp }).sort({ ind_order: 1 });
|
||||
let num = 0;
|
||||
|
||||
num += await addUtentiInLista(idapp, 1);
|
||||
num += await addUtentiInLista(idapp, 2);
|
||||
num += await addUtentiInLista(idapp, 1, arrusers);
|
||||
num += await addUtentiInLista(idapp, 2, arrusers);
|
||||
num += await addUtentiInLista(idapp, 3, arrusers);
|
||||
num += await addUtentiInLista(idapp, 4, arrusers);
|
||||
num += await addUtentiInLista(idapp, 5, arrusers);
|
||||
// num += await addUtentiInLista(idapp, 3);
|
||||
// num += await addUtentiInLista(idapp, 4);
|
||||
|
||||
return { num };
|
||||
|
||||
} else if (mydata.dbop === 'creaBillettera') {
|
||||
const num = await Billettera.generaBillettera(idapp);
|
||||
|
||||
return { num };
|
||||
} else if (mydata.dbop === 'visuPlacca') {
|
||||
const placca = await Billettera.getPlaccaByFuoco(idapp, riga, col);
|
||||
|
||||
return { placca };
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
|
||||
@@ -1,14 +1,36 @@
|
||||
var mongoose = require('mongoose');
|
||||
const Subscription = mongoose.model('subscribers');
|
||||
|
||||
const { ListaIngresso } = require('../../models/listaingresso');
|
||||
const { User } = require('../../models/user');
|
||||
|
||||
const telegrambot = require('../../telegram/telegrambot');
|
||||
|
||||
module.exports = {
|
||||
doOtherThingsAfterDeleted: async function (tablename, rec) {
|
||||
try {
|
||||
if (tablename === 'users') {
|
||||
|
||||
await ListaIngresso.deleteUserInListaIngresso(rec.idapp, rec.ind_order);
|
||||
|
||||
// Controlla se aveva invitati, li regala a quello sopra
|
||||
const arrap = await User.getDownlineByUsername(rec.idapp, rec.username);
|
||||
for (let user of arrap) {
|
||||
|
||||
await User.findOneAndUpdate({
|
||||
idapp: rec.idapp,
|
||||
username: user.username
|
||||
}, { $set: { aportador_solidario: rec.aportador_solidario } }, { new: false });
|
||||
|
||||
let msg = 'Spostato ' + user.name + ' ' + user.surname + ' sotto di ' + rec.aportador_solidario;
|
||||
telegrambot.sendMsgTelegramToTheManagers(idapp, msg);
|
||||
}
|
||||
|
||||
// Delete also all the subscribers record of this User
|
||||
return Subscription.deleteOne({ userId: rec._id })
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
return false
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -12,6 +12,8 @@ const { User } = require('../models/user');
|
||||
const mongoose = require('mongoose');
|
||||
const Subscription = mongoose.model('subscribers');
|
||||
|
||||
const telegrambot = require('../telegram/telegrambot');
|
||||
|
||||
const _ = require('lodash');
|
||||
|
||||
const { ObjectID } = require('mongodb');
|
||||
@@ -49,4 +51,14 @@ router.post('/', authenticate, async (req, res) => {
|
||||
|
||||
});
|
||||
|
||||
|
||||
router.post('/msgnave', authenticate, async (req, res) => {
|
||||
const idapp = req.body.idapp;
|
||||
let mydata = req.body;
|
||||
|
||||
const ris = await telegrambot.sendMsgTelegramToNave(idapp, mydata);
|
||||
res.send({ code: server_constants.RIS_CODE_OK, ris });
|
||||
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
||||
BIN
src/server/router/files/Musica_Dell_Anima_Serata.jpg
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
src/server/router/files/batidora-de-brazo-600-w--5.jpg
Normal file
|
After Width: | Height: | Size: 65 KiB |
BIN
src/server/router/files/estados_emocionales.jpg
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
src/server/router/files/flat_earth.png
Normal file
|
After Width: | Height: | Size: 152 KiB |
BIN
src/server/router/files/malaga_beach.jpg
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
src/server/router/files/paolo_piano3.jpg
Normal file
|
After Width: | Height: | Size: 119 KiB |
BIN
src/server/router/files/terra_piatta.jpg
Normal file
|
After Width: | Height: | Size: 18 KiB |
@@ -12,6 +12,7 @@ const sendemail = require('../sendemail');
|
||||
const { authenticate, authenticate_noerror } = require('../middleware/authenticate');
|
||||
|
||||
const { ObjectID } = require('mongodb');
|
||||
const { ListaIngresso } = require('../models/listaingresso');
|
||||
|
||||
const mongoose = require('mongoose');
|
||||
const cfgserver = mongoose.model('cfgserver');
|
||||
@@ -27,6 +28,7 @@ if (!fs.existsSync(folder)) {
|
||||
const _ = require('lodash');
|
||||
|
||||
const { User } = require('../models/user');
|
||||
const { Nave } = require('../models/nave');
|
||||
const { ExtraList } = require('../models/extralist');
|
||||
const { Booking } = require('../models/booking');
|
||||
const { Operator } = require('../models/operator');
|
||||
@@ -52,6 +54,15 @@ const tools = require('../tools/general');
|
||||
const server_constants = require('../tools/server_constants');
|
||||
const actions = require('./api/actions');
|
||||
|
||||
UserCost = {
|
||||
FIELDS_REQUISITI: ['verified_email',
|
||||
'profile.teleg_id',
|
||||
'profile.saw_zoom_presentation',
|
||||
'profile.saw_and_accepted',
|
||||
'profile.email_paypal',
|
||||
'profile.my_dream',
|
||||
'profile.paymenttypes']
|
||||
};
|
||||
|
||||
router.post(process.env.LINKVERIF_REG, (req, res) => {
|
||||
const body = _.pick(req.body, ['idapp', 'idlink']);
|
||||
@@ -77,7 +88,10 @@ router.post(process.env.LINKVERIF_REG, (req, res) => {
|
||||
user.lasttimeonline = new Date();
|
||||
user.save().then(() => {
|
||||
//console.log("TROVATOOOOOO!");
|
||||
res.send({ code: server_constants.RIS_CODE_EMAIL_VERIFIED, msg: tools.getres__('EMAIL', res) + ' ' + tools.getres__('VERIF', res) });
|
||||
res.send({
|
||||
code: server_constants.RIS_CODE_EMAIL_VERIFIED,
|
||||
msg: tools.getres__('EMAIL', res) + ' ' + tools.getres__('VERIF', res)
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -93,7 +107,7 @@ router.post(process.env.LINKVERIF_REG, (req, res) => {
|
||||
router.post(process.env.LINK_REQUEST_NEWPASSWORD, (req, res) => {
|
||||
const body = _.pick(req.body, ['idapp', 'email']);
|
||||
const idapp = body.idapp;
|
||||
const email = body.email;
|
||||
const email = body.email.toLowerCase().trim();
|
||||
console.log("POST " + process.env.LINK_REQUEST_NEWPASSWORD + " idapp= " + idapp + " email = " + email);
|
||||
|
||||
User.findByEmail(idapp, email).then(async (user) => {
|
||||
@@ -124,7 +138,7 @@ router.post(process.env.LINK_REQUEST_NEWPASSWORD, (req, res) => {
|
||||
router.post(process.env.LINK_UPDATE_PWD, (req, res) => {
|
||||
const body = _.pick(req.body, ['idapp', 'email', 'tokenforgot', 'password']);
|
||||
const idapp = body.idapp;
|
||||
const email = body.email;
|
||||
const email = body.email.toLowerCase().trim();
|
||||
const tokenforgot = body.tokenforgot;
|
||||
const password = body.password;
|
||||
const msg = "Richiesta Nuova Password: idapp= " + idapp + " email = " + email;
|
||||
@@ -198,6 +212,10 @@ function getTableByTableName(tablename) {
|
||||
mytable = Permission;
|
||||
else if (tablename === 'mailinglist')
|
||||
mytable = MailingList;
|
||||
else if (tablename === 'navi')
|
||||
mytable = Nave;
|
||||
else if (tablename === 'listaingressos')
|
||||
mytable = ListaIngresso;
|
||||
|
||||
return mytable
|
||||
}
|
||||
@@ -255,8 +273,63 @@ router.post('/gettable', authenticate, (req, res) => {
|
||||
|
||||
});
|
||||
|
||||
async function checkIfSbloccatiRequisiti(idapp, allData, id) {
|
||||
|
||||
router.patch('/chval', authenticate, (req, res) => {
|
||||
if (await Nave.findByIndOrder(idapp, allData.myuser.ind_order)) {
|
||||
// Se già sei dentro la Nave, allora sei OK
|
||||
return true;
|
||||
}
|
||||
|
||||
// Controlla se Sblocca i 7 requisiti
|
||||
const is7req = await User.isUserQualified7(idapp, allData.myuser.username);
|
||||
const is9req = await User.isUserQualified9(idapp, allData.myuser.username);
|
||||
|
||||
const userlista = await ListaIngresso.findByIndOrder(idapp, allData.myuser.ind_order);
|
||||
if (!userlista) {
|
||||
// Se non sono ancora dentro alla lista, allora controllo
|
||||
|
||||
if (!allData.precDataUser.is7req && is7req) {
|
||||
// ORA HAI I 7 REQUISITI !
|
||||
const msgtext = telegrambot.getCiao(idapp, allData.myuser.username, allData.myuser.lang) + tools.gettranslate('HAI_I_7_REQUISITI', allData.myuser.lang);
|
||||
telegrambot.sendMsgTelegram(idapp, allData.myuser.username, msgtext, true); // Anche a STAFF
|
||||
|
||||
if (tools.isAbilitaNave(idapp)) {
|
||||
// Aggiungilo alla ListaIngresso
|
||||
ris = await ListaIngresso.addUserInListaIngresso(idapp, allData.myuser.ind_order, allData.myuser.lang, true, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!allData.precDataUser.is9req && is9req) {
|
||||
// ORA HAI I 9 REQUISITI !
|
||||
const msgtext = telegrambot.getCiao(idapp, allData.myuser.username, allData.myuser.lang) + tools.gettranslate('HAI_I_9_REQUISITI', allData.myuser.lang);
|
||||
telegrambot.sendMsgTelegram(idapp, allData.myuser.username, msgtext, true); // Anche a STAFF
|
||||
}
|
||||
|
||||
// CHECK APORTADOR SOLIDARIO:
|
||||
if (!!allData.useraportador) {
|
||||
const is9reqAportador = await User.isUserQualified9(idapp, allData.myuser.aportador_solidario);
|
||||
|
||||
if (!allData.precDataAportador.is9req && is9reqAportador) {
|
||||
// ORA HAI I 9 REQUISITI !
|
||||
const msgtext = telegrambot.getCiao(idapp, allData.myuser.aportador_solidario, allData.useraportador.lang) + tools.gettranslate('HAI_I_9_REQUISITI', allData.useraportador.lang);
|
||||
telegrambot.sendMsgTelegram(idapp, allData.useraportador.username, msgtext, true); // Anche a STAFF
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
async function getInfoUser(idapp, username) {
|
||||
return {
|
||||
username,
|
||||
is7req: await User.isUserQualified7(idapp, username),
|
||||
is9req: await User.isUserQualified9(idapp, username),
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
router.patch('/chval', authenticate, async (req, res) => {
|
||||
// const idapp = req.body.idapp;
|
||||
const id = req.body.data.id;
|
||||
const idapp = req.body.idapp;
|
||||
@@ -265,7 +338,7 @@ router.patch('/chval', authenticate, (req, res) => {
|
||||
const mytable = getTableByTableName(mydata.table);
|
||||
const fieldsvalue = mydata.fieldsvalue;
|
||||
|
||||
tools.mylogshow('PATCH CHVAL: ', id, fieldsvalue);
|
||||
// tools.mylogshow('PATCH CHVAL: ', id, fieldsvalue);
|
||||
|
||||
// If I change my record...
|
||||
if ((!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm)) && !(req.user._id.toString() === id) && !tools.ModificheConsentite(mydata.table, fieldsvalue)) {
|
||||
@@ -273,7 +346,20 @@ router.patch('/chval', authenticate, (req, res) => {
|
||||
return res.status(404).send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' });
|
||||
}
|
||||
|
||||
mytable.findByIdAndUpdate(id, { $set: fieldsvalue }).then(async (rec) => {
|
||||
const camporequisiti = UserCost.FIELDS_REQUISITI.includes(Object.keys(fieldsvalue)[0]);
|
||||
|
||||
let allData = {};
|
||||
if (mydata.table === 'users') {
|
||||
if (camporequisiti) {
|
||||
allData = {};
|
||||
allData.myuser = await User.getUserById(idapp, id);
|
||||
allData.precDataUser = await getInfoUser(idapp, allData.myuser.username);
|
||||
allData.useraportador = await User.getUserByAportador(idapp, allData.myuser.aportador_solidario);
|
||||
allData.precDataAportador = await getInfoUser(idapp, allData.myuser.aportador_solidario);
|
||||
}
|
||||
}
|
||||
|
||||
await mytable.findByIdAndUpdate(id, { $set: fieldsvalue }).then(async (rec) => {
|
||||
// tools.mylogshow(' REC TO MODIFY: ', rec);
|
||||
if (!rec) {
|
||||
return res.status(404).send();
|
||||
@@ -285,6 +371,12 @@ router.patch('/chval', authenticate, (req, res) => {
|
||||
telegrambot.sendMsgTelegramToTheManagers(idapp, addtext);
|
||||
}
|
||||
|
||||
if (mydata.table === 'users') {
|
||||
if (camporequisiti) {
|
||||
await checkIfSbloccatiRequisiti(idapp, allData, id);
|
||||
}
|
||||
}
|
||||
|
||||
if (tools.ModificheConsentite(mydata.table, fieldsvalue)) {
|
||||
let msg = '';
|
||||
if (mydata.table === 'users') {
|
||||
@@ -294,9 +386,15 @@ router.patch('/chval', authenticate, (req, res) => {
|
||||
msg = `Variato l'invitante di ` + rec.name + ' ' + rec.surname + '\nmodificato da ' + req.user.name + ' ' + req.user.surname + ' \n' +
|
||||
'Prima: ' + nomecognomeas + ' (' + rec.aportador_solidario + ')\n' +
|
||||
'Dopo: ' + nomecognomenuovo + ' (' + fieldsvalue.aportador_solidario + ') ]';
|
||||
|
||||
// Metti l'iniziale
|
||||
if (!await User.AportadorOrig(id)) {
|
||||
await mytable.findByIdAndUpdate(id, { $set: { aportador_iniziale: fieldsvalue.aportador_solidario } }, { new: false });
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (msg !== '')
|
||||
telegrambot.sendMsgTelegramToTheManagers(idapp, msg);
|
||||
}
|
||||
@@ -351,7 +449,9 @@ router.delete('/delrec/:table/:id', authenticate, (req, res) => {
|
||||
|
||||
const mytable = getTableByTableName(tablename);
|
||||
|
||||
if ((!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm)) && (tablename !== 'extralist')) {
|
||||
const fields = { 'ALL': 1 };
|
||||
|
||||
if ((!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm)) && (tablename !== 'extralist') && !tools.ModificheConsentite(tablename, fields, id, req.user)) {
|
||||
// If without permissions, exit
|
||||
return res.status(404).send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' });
|
||||
}
|
||||
@@ -366,7 +466,7 @@ router.delete('/delrec/:table/:id', authenticate, (req, res) => {
|
||||
tools.mylog('DELETED ', rec._id);
|
||||
|
||||
// Do extra things after deleted
|
||||
return actions.doOtherThingsAfterDeleted(tablename, rec).then((ris) => {
|
||||
return actions.doOtherThingsAfterDeleted(tablename, rec).then(async (ris) => {
|
||||
if (ris) {
|
||||
|
||||
if (notifBot) {
|
||||
@@ -378,7 +478,7 @@ router.delete('/delrec/:table/:id', authenticate, (req, res) => {
|
||||
|
||||
addtext = 'Eliminato il Record "' + nomerecord + '" dalla tabella ' + tablename + '\n' +
|
||||
'Eseguito da ' + req.user.name + ' ' + req.user.surname + ' \n';
|
||||
telegrambot.sendMsgTelegramToTheManagers(idapp, addtext);
|
||||
await telegrambot.sendMsgTelegramToTheManagers(idapp, addtext);
|
||||
}
|
||||
|
||||
tools.mylog('DELETED Others things ...');
|
||||
@@ -549,7 +649,8 @@ router.get(process.env.LINK_CHECK_UPDATES, authenticate, (req, res) => {
|
||||
// If User is Admin, then send user Lists
|
||||
if (User.isAdmin(req.user.perm)) {
|
||||
// Send UsersList
|
||||
usersList = User.getUsersList(req.user.idapp)
|
||||
// usersList = User.getUsersList(req.user.idapp)
|
||||
usersList = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -29,13 +29,14 @@ router.post('/load', async (req, res) => {
|
||||
email_non_verif: await User.getEmailNotVerified(idapp),
|
||||
num_teleg_attivo: await User.getUsersTelegramAttivo(idapp),
|
||||
num_teleg_pending: await User.getUsersTelegramPending(idapp),
|
||||
num_qualificati: await User.getNumUsersQualified(idapp, 2),
|
||||
// num_qualificati: await User.getNumUsersQualified(idapp, 2),
|
||||
num_requisiti: await User.getNumUsersQualified(idapp, 0),
|
||||
num_modalita_pagamento: await User.getnumPaymentOk(idapp),
|
||||
num_part_zoom: await User.getUsersZoom(idapp),
|
||||
num_part_accepted: await User.getSaw_and_Accepted(idapp),
|
||||
num_users_dream: await User.getUsersDreams(idapp),
|
||||
arr_nations: await User.findAllDistinctNationality(idapp),
|
||||
numreg_untilday: await User.calcnumRegUntilDay(idapp),
|
||||
reg_daily: await User.calcRegDaily(idapp),
|
||||
lastsreg: await User.getLastUsers(idapp),
|
||||
checkuser: await User.checkUser(idapp, username),
|
||||
|
||||
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 151 KiB |
|
After Width: | Height: | Size: 561 KiB |
BIN
src/server/router/upload/olii_essenziali.jpg
Normal file
|
After Width: | Height: | Size: 35 KiB |
@@ -2,10 +2,15 @@ const express = require('express');
|
||||
const router = express.Router();
|
||||
|
||||
const { User } = require('../models/user');
|
||||
const { Nave } = require('../models/nave');
|
||||
const { ListaIngresso } = require('../models/listaingresso');
|
||||
const { ExtraList } = require('../models/extralist');
|
||||
const { ObjectID } = require('mongodb');
|
||||
|
||||
const sendemail = require('../sendemail');
|
||||
|
||||
const { Settings } = require('../models/settings');
|
||||
|
||||
const tools = require('../tools/general');
|
||||
const shared_consts = require('../tools/shared_nodejs');
|
||||
|
||||
@@ -47,10 +52,10 @@ function getMobileComplete(user) {
|
||||
router.post('/', async (req, res) => {
|
||||
tools.mylog("POST /users");
|
||||
const body = _.pick(req.body, ['email', 'password', 'username', 'name', 'surname', 'idapp', 'keyappid', 'lang', 'profile', 'aportador_solidario']);
|
||||
const user = new User(body);
|
||||
|
||||
body.email = body.email.toLowerCase();
|
||||
|
||||
const user = new User(body);
|
||||
|
||||
// tools.mylog("LANG PASSATO = " + user.lang, "IDAPP", user.idapp);
|
||||
|
||||
user.linkreg = reg.getlinkregByEmail(body.idapp, body.email, body.username);
|
||||
@@ -59,6 +64,10 @@ router.post('/', async (req, res) => {
|
||||
user.lasttimeonline = new Date();
|
||||
user.date_reg = new Date();
|
||||
user.date_temp_reg = new Date();
|
||||
user.aportador_iniziale = user.aportador_solidario;
|
||||
if (user.idapp === tools.AYNI) {
|
||||
user.profile.paymenttypes = ['paypal'];
|
||||
}
|
||||
// user.perm = 3;
|
||||
if (tools.testing()) {
|
||||
user.verified_email = true;
|
||||
@@ -147,7 +156,7 @@ router.post('/', async (req, res) => {
|
||||
msgseconda += 'QUARTA';
|
||||
|
||||
msgseconda += ' UTENZA di ' + recorig.name + ' ' + recorig.surname + ' (' + recorig.username + ') : ' + user.name + ' ' + user.surname + ' (' + user.username + ') ';
|
||||
telegrambot.sendMsgTelegramToTheManagers(user.idapp, msgseconda);
|
||||
await telegrambot.sendMsgTelegramToTheManagers(user.idapp, msgseconda);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -158,7 +167,7 @@ router.post('/', async (req, res) => {
|
||||
let msg = 'L\'utente ' + user.name + ' ' + user.surname + ' si sta registrando con il link di ' + user.aportador_solidario + ' (' + namesurname_aportador_reg + ') ' +
|
||||
'invece è assegnato a ' + nomeaportador_corretto;
|
||||
|
||||
telegrambot.sendMsgTelegramToTheManagers(user.idapp, msg);
|
||||
await telegrambot.sendMsgTelegramToTheManagers(user.idapp, msg);
|
||||
res.status(400).send({ code: server_constants.RIS_CODE_USER_NOT_THIS_APORTADOR, msg: '' });
|
||||
return 1;
|
||||
}
|
||||
@@ -173,8 +182,11 @@ router.post('/', async (req, res) => {
|
||||
if (!recextra) {
|
||||
const msg = 'Utente non trovato: ' + user.name + ' ' + user.surname + ' ' + user.profile.nationality + ' ' + user.profile.cell + ' email: ' + user.email + ' username: ' + user.username;
|
||||
console.log('Utente non trovato; ', msg);
|
||||
telegrambot.sendMsgTelegramToTheManagers(user.idapp, msg);
|
||||
res.status(400).send({ code: server_constants.RIS_CODE_USER_EXTRALIST_NOTFOUND, msg: 'Controlla se il numero ' + user.profile.cell + ' è corretto.' });
|
||||
await telegrambot.sendMsgTelegramToTheManagers(user.idapp, msg);
|
||||
res.status(400).send({
|
||||
code: server_constants.RIS_CODE_USER_EXTRALIST_NOTFOUND,
|
||||
msg: 'Controlla se il numero ' + user.profile.cell + ' è corretto.'
|
||||
});
|
||||
return 1;
|
||||
} else {
|
||||
user.ind_order = recextra.ind_order;
|
||||
@@ -244,11 +256,11 @@ router.post('/', async (req, res) => {
|
||||
})
|
||||
});
|
||||
|
||||
router.get('/:idapp/:username', (req, res) => {
|
||||
router.get('/:idapp/:username', async (req, res) => {
|
||||
var username = req.params.username;
|
||||
const idapp = req.params.idapp;
|
||||
|
||||
User.findByUsername(idapp, username, false).then((user) => {
|
||||
await User.findByUsername(idapp, username, false).then((user) => {
|
||||
if (!user) {
|
||||
return res.status(404).send();
|
||||
}
|
||||
@@ -397,17 +409,130 @@ router.post('/import_extralist', async (req, res) => {
|
||||
res.send(ris);
|
||||
});
|
||||
|
||||
router.post('/dbop', async (req, res) => {
|
||||
router.post('/dbop', authenticate, async (req, res) => {
|
||||
|
||||
const mydata = req.body.mydata;
|
||||
idapp = req.body.idapp;
|
||||
locale = req.body.locale;
|
||||
|
||||
const ris = await User.DbOp(idapp, mydata);
|
||||
console.log('ris', ris);
|
||||
let ris = await User.DbOp(idapp, mydata);
|
||||
|
||||
if (mydata.dbop === 'creaNave') {
|
||||
const num = await Nave.generaNave(idapp, mydata);
|
||||
ris = { num };
|
||||
} else if (mydata.dbop === 'delNavi') {
|
||||
await Nave.setRiga(idapp, 1);
|
||||
await Nave.setCol(idapp, 1);
|
||||
const num = await Nave.remove({ idapp });
|
||||
ris = { num };
|
||||
} else if (mydata.dbop === 'delNaviNoStarted') {
|
||||
await Nave.setRiga(idapp, 1);
|
||||
await Nave.setCol(idapp, 1);
|
||||
const num = await Nave.remove({ idapp, date_start : { $gte: tools.IncDateNow(-1000 * 60 * 60 * 24 * 3) } });
|
||||
ris = { num };
|
||||
} else if (mydata.dbop === 'visuListaNave') {
|
||||
const mystr = await Nave.showListaOrd(idapp);
|
||||
ris = { mystr };
|
||||
} else if (mydata.dbop === 'checkInserimentiUtentiInNave') {
|
||||
const mystr = await Nave.checkIfDevoAggiungereInNave(idapp);
|
||||
ris = { mystr };
|
||||
} else if (mydata.dbop === 'visuListaIngresso') {
|
||||
const mystr = await ListaIngresso.showListaOrd(idapp);
|
||||
ris = { mystr };
|
||||
} else if (mydata.dbop === 'initListaIngresso') {
|
||||
const num = await ListaIngresso.updateMany({ idapp }, { $set: { added: false } });
|
||||
|
||||
ris = { num };
|
||||
} else if (mydata.dbop === 'ImpostaATuttiPaypal') {
|
||||
const listautenti = await User.find({ idapp });
|
||||
let num = 0;
|
||||
for (let rec of listautenti) {
|
||||
if (!rec._doc.profile.paymenttypes.includes('paypal')) {
|
||||
rec._doc.profile.paymenttypes = [...rec._doc.profile.paymenttypes, 'paypal'];
|
||||
const user = await User.findOneAndUpdate({ _id: rec._id }, { $set: { 'profile.paymenttypes': rec._doc.profile.paymenttypes } });
|
||||
// await rec.save();
|
||||
num++;
|
||||
}
|
||||
// const num = await User.f({ idapp }, { $set: { 'profile: false } });
|
||||
}
|
||||
|
||||
|
||||
ris = { num };
|
||||
} else if (mydata.dbop === 'numtessUno') {
|
||||
const listanavi = await ListaIngresso.find({ idapp });
|
||||
let num = 0;
|
||||
for (let rec of listanavi) {
|
||||
if (!rec._doc.num_tess) {
|
||||
rec._doc.num_tess = 1;
|
||||
const risu = await ListaIngresso.findOneAndUpdate({ _id: rec._id }, { $set: { num_tess: rec._doc.num_tess } }, { new: false });
|
||||
// await rec.save();
|
||||
if (!!risu)
|
||||
num++;
|
||||
}
|
||||
// const num = await User.f({ idapp }, { $set: { 'profile: false } });
|
||||
}
|
||||
|
||||
|
||||
ris = { num };
|
||||
} else if (mydata.dbop === 'creaUtentiTest') {
|
||||
|
||||
let num = 0;
|
||||
lastrec = await User.find({ idapp }).sort({ _id: -1 }).limit(1);
|
||||
for (let ind = 0; ind < 1; ind++) {
|
||||
let myuser = new User();
|
||||
myuser._id = new ObjectID();
|
||||
myuser.ind_order = lastrec[0].ind_order + ind + 1;
|
||||
myuser.idapp = idapp;
|
||||
myuser.password = "$2a$12$DEaX1h5saTUVC43f7kubyOAlah1xHDgqQTfSIux0.RFDT9WGbyCaG";
|
||||
myuser.lang = 'it';
|
||||
myuser.email = "miaemail@email.it";
|
||||
myuser.name = 'U' + myuser.ind_order;
|
||||
myuser.verified_email = true;
|
||||
if (myuser.ind_order < 2)
|
||||
myuser.perm = "3";
|
||||
myuser.username = "Userna_" + myuser.name;
|
||||
myuser.profile.special_req = true;
|
||||
await myuser.save();
|
||||
num++;
|
||||
}
|
||||
|
||||
ris = { num };
|
||||
} else if (mydata.dbop === 'visuPlacca') {
|
||||
const placca = await Nave.getPlaccaPerDonatore(idapp, parseInt(mydata.riga), parseInt(mydata.col));
|
||||
|
||||
telegrambot.sendMsgTelegramToTheAdmin(idapp, placca);
|
||||
|
||||
ris = { placca };
|
||||
} else if (mydata.dbop === 'visuNave') {
|
||||
const mystr = await Nave.getNavePos(idapp, parseInt(mydata.riga), parseInt(mydata.col));
|
||||
|
||||
const visu_nave_Bot = await Settings.getValDbSettings(idapp, 'VISU_NAVE_BOT');
|
||||
if (visu_nave_Bot)
|
||||
telegrambot.sendMsgTelegramToTheAdmin(idapp, mystr);
|
||||
|
||||
ris = { mystr };
|
||||
} else if (mydata.dbop === 'getnavibyuser') {
|
||||
|
||||
let arrnavi = null;
|
||||
|
||||
const user = await User.getUserShortDataByUsername(idapp, mydata.username);
|
||||
if (user) {
|
||||
arrnavi = await Nave.getArrPosizioniByIndOrder(idapp, user.ind_order);
|
||||
|
||||
for (let mynave of arrnavi) {
|
||||
mynave._doc.rec = await Nave.getNaveByRigaCol(idapp, mynave.riga, mynave.col);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ris = { data: arrnavi };
|
||||
}
|
||||
|
||||
// console.log('ris', ris);
|
||||
|
||||
res.send(ris);
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
module.exports = router;
|
||||
|
||||
@@ -496,7 +496,7 @@ module.exports = {
|
||||
const msginizio = 'INIZIO - sendEmail_Newsletter_Events: ' + tools.getNomeAppByIdApp(idapp);
|
||||
console.log(msginizio);
|
||||
|
||||
telegrambot.sendMsgTelegramToTheManagers(idapp, msginizio);
|
||||
await telegrambot.sendMsgTelegramToTheManagers(idapp, msginizio);
|
||||
|
||||
//++Todo Extract List Email to send
|
||||
const userstosend = await MailingList.findAllIdAppSubscribed(idapp);
|
||||
@@ -539,7 +539,7 @@ module.exports = {
|
||||
if (!activate) {
|
||||
// Invio Newsletter Abortito!
|
||||
mynewsrec.error_job = 'Invio Newsletter abortito alle ore ' + new Date().toDateString() + new Date().toTimeString();
|
||||
telegrambot.sendMsgTelegramToTheManagers(idapp, mynewsrec.error_job);
|
||||
await telegrambot.sendMsgTelegramToTheManagers(idapp, mynewsrec.error_job);
|
||||
await mynewsrec.save();
|
||||
await Newstosent.processingJob(id_newstosent, false);
|
||||
console.log('*** L\'Invio della Newsletter è stato fermato ! ');
|
||||
@@ -567,7 +567,7 @@ module.exports = {
|
||||
|
||||
if ((mynewsrec.numemail_sent % 50) === 0) {
|
||||
const msgproc = 'In Corso ' + mynewsrec.numemail_sent + ' / ' + mynewsrec.numemail_tot + ' Email inviate...';
|
||||
telegrambot.sendMsgTelegramToTheManagers(idapp, msgproc);
|
||||
await telegrambot.sendMsgTelegramToTheManagers(idapp, msgproc);
|
||||
}
|
||||
|
||||
//Put the result in the database, to check if is sent or not.
|
||||
@@ -591,7 +591,7 @@ module.exports = {
|
||||
} catch (e) {
|
||||
const msgerr = 'Error LOOP sendEmail_Newsletter_Events: ' + e;
|
||||
console.error(msgerr);
|
||||
telegrambot.sendMsgTelegramToTheManagers(idapp, msgerr);
|
||||
await telegrambot.sendMsgTelegramToTheManagers(idapp, msgerr);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -601,7 +601,7 @@ module.exports = {
|
||||
msgfine += mynewsrec.numemail_sent + ' Email inviate';
|
||||
console.log(msgfine);
|
||||
|
||||
telegrambot.sendMsgTelegramToTheManagers(idapp, msgfine);
|
||||
await telegrambot.sendMsgTelegramToTheManagers(idapp, msgfine);
|
||||
|
||||
} catch (e) {
|
||||
|
||||
@@ -610,7 +610,7 @@ module.exports = {
|
||||
if (!activate) {
|
||||
// Invio Newsletter Abortito!
|
||||
mynewsrec.error_job = 'Invio Newsletter abortito alle ore ' + new Date().toDateString() + new Date().toTimeString();
|
||||
telegrambot.sendMsgTelegramToTheManagers(idapp, mynewsrec.error_job);
|
||||
await telegrambot.sendMsgTelegramToTheManagers(idapp, mynewsrec.error_job);
|
||||
await mynewsrec.save();
|
||||
await Newstosent.processingJob(id_newstosent, false);
|
||||
console.log('*** L\'Invio della Newsletter è stato fermato ! ');
|
||||
|
||||
@@ -9,6 +9,7 @@ const printf = require('util').format;
|
||||
|
||||
const { User } = require('../models/user');
|
||||
const { CalZoom } = require('../models/calzoom');
|
||||
const { Nave } = require('../models/nave');
|
||||
const shared_consts = require('../tools/shared_nodejs');
|
||||
|
||||
const emoji = require('node-emoji');
|
||||
@@ -48,6 +49,7 @@ const emo = {
|
||||
YELLOW_HEART: emoji.get('yellow_heart'),
|
||||
PURPLE_HEART: emoji.get('purple_heart'),
|
||||
GIFT_HEART: emoji.get('gift_heart'),
|
||||
GIFT: emoji.get('gift'),
|
||||
ROBOT_FACE: emoji.get('robot_face'),
|
||||
ADMIN: emoji.get('information_desk_person'),
|
||||
MALE: emoji.get('man-tipping-hand'),
|
||||
@@ -59,7 +61,9 @@ const emo = {
|
||||
|
||||
|
||||
MsgBot = {
|
||||
CIAO: ['ciao', 'ciaoo', 'hola', 'holaa', 'hey', 'salve', 'buongiorno', 'buondi'],
|
||||
MIANAVE: ['Nave'],
|
||||
|
||||
CIAO: ['ciao', 'ciaoo', 'hola', 'holaa', 'hey', 'salve', 'buongiorno', 'buondi', 'ciao ❤️'],
|
||||
CI_SEI: ['ci sei', 'c\'è qualcuno', 'c\'è nessuno'],
|
||||
CHI_SONO_IO: ['chi sono io', 'chi sono'],
|
||||
COME_STAI: ['tutto bene', 'come stai', 'come stai', 'come va', 'come butta', 'come va oggi'],
|
||||
@@ -81,7 +85,7 @@ MsgBot = {
|
||||
NON_TROO_INVITATI: ['non trovo invitati', 'non riesco a trovare invitati'],
|
||||
PAROLACCE: ['stronz', 'fanculo'],
|
||||
COME_SI_CHIAMA: ['come si chiama'],
|
||||
PROSSIMO_ZOOM: ['prossimo zoom', 'fare lo zoom', 'gli zoom', 'conferenz'],
|
||||
PROSSIMO_ZOOM: ['prossimo zoom', 'fare lo zoom', 'gli zoom', 'conferenz', 'zoom'],
|
||||
LAVAGNA: ['lavagna', 'Lavagna', 'LAVAGNA'],
|
||||
SEI_LIBERO: ['sei liber', 'sei sposat', 'sei fidanzat', 'sei single'],
|
||||
AIUTO: ['ayni help', 'help', 'aiuto', 'ho bisogno di', 'ho problemi', 'non riesco', 'mi puoi aiutare', 'mi aiuti', 'aiutami', 'posso chiederti', 'puoi aiutarmi'],
|
||||
@@ -123,9 +127,13 @@ function getemojibynumber(number) {
|
||||
return emoji.get('height')
|
||||
} else if (number === 9) {
|
||||
return emoji.get('nine')
|
||||
} else {
|
||||
return number;
|
||||
}
|
||||
}
|
||||
|
||||
strNave = "Nave";
|
||||
|
||||
|
||||
const Menu = {
|
||||
ACCEDI: emo.PERSON + ' Accedi',
|
||||
@@ -138,22 +146,36 @@ const Menu = {
|
||||
ADMIN: emoji.get('information_desk_person') + ' Admin',
|
||||
ALTRO: emoji.get('newspaper') + ' Altro',
|
||||
MSGATUTTI: emoji.get('incoming_envelope') + ' Invia a TUTTI',
|
||||
MSG_TO_NAVE: emoji.get('incoming_envelope') + 'Msg_to_Navi',
|
||||
MSG_NO_7_REQ: emoji.get('incoming_envelope') + 'No 7 Req.',
|
||||
MSG_NO_9_REQ: emoji.get('incoming_envelope') + 'No 9 Req',
|
||||
MSG_TO_USER: 'sendmsgto',
|
||||
MSG_SI_INVITATI_NO_7REQ_INVITATI: emoji.get('incoming_envelope') + 'Inv e NO 7 Req',
|
||||
MSGSTAFF: emoji.get('incoming_envelope') + ' Invia a STAFF',
|
||||
INDIETRO: emoji.get('back') + ' Indietro',
|
||||
SI: emoji.get('thumbsup') + ' SI',
|
||||
NO: emoji.get('thumbsdown') + ' NO',
|
||||
|
||||
CHAT_PERSONALE: emoji.get('female-office-worker') + emoji.get('computer'),
|
||||
ESCI_DA_CHAT: emoji.get('incoming_envelope') + ' Esci dalla Conversazione',
|
||||
EXIT_TELEGRAM: 'exittotelegram',
|
||||
MIANAVE: emo.GIFT + ' ' + strNave,
|
||||
};
|
||||
|
||||
const CONTA_SOLO = 'contasolo';
|
||||
const RICEVI_EMAIL = 'riceviemail';
|
||||
|
||||
const SendMsgCmd = [CONTA_SOLO, RICEVI_EMAIL];
|
||||
|
||||
|
||||
const MenuNoLogin = [[Menu.ACCEDI], [Menu.ASSISTENZA]];
|
||||
const MenuStandard = [[Menu.LAVAGNA, Menu.LINK_CONDIVIDERE], [Menu.ZOOM, Menu.ASSISTENZA]];
|
||||
const MenuPerAdmin = [[Menu.LAVAGNA, Menu.LINK_CONDIVIDERE], [Menu.ZOOM, Menu.ASSISTENZA], [Menu.ADMIN, Menu.ALTRO]];
|
||||
const MenuPerAdmin = [[Menu.LAVAGNA, Menu.LINK_CONDIVIDERE], [Menu.ZOOM, Menu.ASSISTENZA], [Menu.MIANAVE, Menu.ADMIN, Menu.ALTRO]];
|
||||
const MenuYesNo = [[Menu.SI, Menu.NO]];
|
||||
|
||||
const MenuAdmin = [[Menu.LAVAGNA, Menu.ZOOM], [Menu.MSGSTAFF, Menu.MSGATUTTI, Menu.INDIETRO], ['', '']];
|
||||
const MenuAdmin = [[Menu.MSGSTAFF, Menu.MSGATUTTI, Menu.INDIETRO], [Menu.MSG_NO_7_REQ, Menu.MSG_NO_9_REQ], [Menu.MSG_TO_NAVE, Menu.MSG_SI_INVITATI_NO_7REQ_INVITATI]];
|
||||
const MenuSend = [[CONTA_SOLO, RICEVI_EMAIL], [Menu.INDIETRO]];
|
||||
const MenuYes = [[Menu.MSGSTAFF, Menu.INDIETRO], ['', '']];
|
||||
const MenuChat = [[Menu.ESCI_DA_CHAT, Menu.INDIETRO]];
|
||||
|
||||
const Sex = {
|
||||
MALE: 1,
|
||||
@@ -168,6 +190,16 @@ const Status = {
|
||||
WAITFOR_RISPOSTA: 110,
|
||||
};
|
||||
|
||||
const Destin = {
|
||||
STAFF: 1,
|
||||
TUTTI: 2,
|
||||
NO_7_REQ: 3,
|
||||
NO_9_REQ: 4,
|
||||
SI_INVITATI_NO_7REQ_INVITATI: 5,
|
||||
A_UTENTE: 6,
|
||||
MSG_TO_NAVE: 7,
|
||||
};
|
||||
|
||||
const StatusMSGALL = {
|
||||
NONE: 0,
|
||||
ASK: 1,
|
||||
@@ -178,7 +210,7 @@ const txt = {
|
||||
MSG_SCEGLI_MENU: emoji.get('dizzy') + ' Scegli una voce di menu:' + emoji.get('dizzy'),
|
||||
MSG_ASK_USERNAME_BO: 'Scrivi nel messaggio lo username o la email con cui ti sei registrato sul sito di %s:',
|
||||
MSG_ERRORE_USERNAME: 'Attenzione! Devi inserire solo lo username (40 caratteri massimo)',
|
||||
MSG_ERRORE_USERNAME_NOT_FOUND: 'Per Completare la Verifica Telegram BOT, devi ora scrivere qui sotto nel messaggio l\'Username o la email con cui ti sei registrato sul sito di AYNI:',
|
||||
MSG_ERRORE_USERNAME_NOT_FOUND: 'Per Completare la Verifica Telegram BOT, devi ora scrivere qui sotto nel messaggio l\'Username OPPURE la email con cui ti sei registrato sul sito di AYNI:',
|
||||
MSG_ERRORE_USERNAME_ANNULLA: 'Inserimento Annullato. Riprovare',
|
||||
MSG_OPERAZ_ANNULLATA: 'Operazione Annullata',
|
||||
MSG_ERRORE_VERIFY_CODE_MAXLEN: 'Attenzione! Devi inserire solo il codice a 6 cifre',
|
||||
@@ -191,6 +223,7 @@ const txt = {
|
||||
MSG_EXIT_TELEGRAM: 'L\'account è stato ora scollegato da questo Telegram BOT.',
|
||||
MSG_APORTADOR_USER_REGISTERED: emo.FIRE + ' Si è appena Registrato "%s (n. %s)"\n(Invitato da %s)',
|
||||
MSG_MSG_SENT: emoji.get('envelope') + ' Messaggi Inviati !',
|
||||
MSG_MSG_TOSENT: emoji.get('envelope') + ' Messaggi da Inviare',
|
||||
MSG_MSG_INCORSO: emoji.get('envelope') + ' messaggi in corso... Inviati attualmente',
|
||||
};
|
||||
|
||||
@@ -206,6 +239,10 @@ module.exports = {
|
||||
REGISTRATION: 1
|
||||
},
|
||||
|
||||
getCiao: function (idapp, username, lang) {
|
||||
return tools.gettranslate('CIAO', lang) + ' ' + username + '!\n';
|
||||
},
|
||||
|
||||
notifyToTelegram: async function (phase, mylocalsconf) {
|
||||
let userdest = mylocalsconf.user.aportador_solidario;
|
||||
let NameFrom = `${mylocalsconf.user.name} ${mylocalsconf.user.surname}`;
|
||||
@@ -243,9 +280,11 @@ module.exports = {
|
||||
const usersmanagers = await User.getusersManagers(idapp);
|
||||
// console.log('usersmanagers', usersmanagers);
|
||||
|
||||
tools.writeManagersLog(text);
|
||||
|
||||
if (usersmanagers) {
|
||||
for (const rec of usersmanagers) {
|
||||
this.sendMsgTelegramByIdTelegram(idapp, rec.profile.teleg_id, emo.ROBOT_FACE + '[BOT-STAFF]' + emo.ADMIN + ': ' + text)
|
||||
await this.sendMsgTelegramByIdTelegram(idapp, rec.profile.teleg_id, emo.ROBOT_FACE + '[BOT-STAFF]' + emo.ADMIN + ': ' + text, undefined, undefined, true);
|
||||
await tools.snooze(300)
|
||||
}
|
||||
}
|
||||
@@ -253,13 +292,74 @@ module.exports = {
|
||||
|
||||
},
|
||||
|
||||
getMsgByTipoMsg: function (mydata, lang, user) {
|
||||
if (!!mydata.msgextra) {
|
||||
return mydata.msgextra;
|
||||
}
|
||||
|
||||
if (mydata.tipomsg === tools.TipoMsg.SEND_LINK_CHAT_DONATORI) {
|
||||
return printf(tools.gettranslate('SEND_LINK_CHAT_DONATORI', lang), user.name, mydata.msgpar1);
|
||||
}
|
||||
},
|
||||
|
||||
sendMsgTelegramToNave: async function (idapp, mydata) {
|
||||
let nummsgsent = 0;
|
||||
let strout = '';
|
||||
|
||||
try {
|
||||
const arrnavi = await Nave.getusersByNave(idapp, mydata.navemediatore);
|
||||
|
||||
|
||||
// console.log('usersmanagers', usersmanagers);
|
||||
|
||||
tools.writeManagersLog('sendMsgTelegramToNave');
|
||||
|
||||
if (arrnavi) {
|
||||
for (const nave of arrnavi) {
|
||||
const user = await User.findByIndOrder(idapp, nave.ind_order);
|
||||
if (!!user) {
|
||||
const lang = user.lang;
|
||||
const idteleg = user.profile.teleg_id;
|
||||
const mymsg = this.getMsgByTipoMsg(mydata, lang, user);
|
||||
|
||||
if (!!idteleg) {
|
||||
strout += '\n' + user.name + ' ' + user.surname + ':';
|
||||
if (mydata.inviareale) {
|
||||
await this.sendMsgTelegramByIdTelegram(idapp, idteleg, mymsg, undefined, undefined, true);
|
||||
await tools.snooze(300);
|
||||
strout += ' -> MSG INVIATO';
|
||||
} else {
|
||||
strout += ' (Pronto da Inviare)';
|
||||
}
|
||||
nummsgsent++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (nummsgsent > 0) {
|
||||
if (mydata.tipomsg === tools.TipoMsg.SEND_LINK_CHAT_DONATORI) {
|
||||
const fields_to_update = {
|
||||
sent_msg_howto_make_gift: true
|
||||
};
|
||||
await Nave.findOneAndUpdate({ _id: mydata.navemediatore.id }, { $set: fields_to_update }, { new: false });
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return { nummsgsent, strout };
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
return { nummsgsent , strout };
|
||||
}
|
||||
},
|
||||
|
||||
sendMsgTelegramToTheAdmin: async function (idapp, text) {
|
||||
const usersmanagers = await User.getusersManagers(idapp);
|
||||
|
||||
if (usersmanagers) {
|
||||
for (const rec of usersmanagers) {
|
||||
if (User.isAdmin(rec.perm)) {
|
||||
this.sendMsgTelegramByIdTelegram(idapp, rec.profile.teleg_id, emo.ROBOT_FACE + '[BOT-STAFF]' + emo.ADMIN + ': ' + text)
|
||||
this.sendMsgTelegramByIdTelegram(idapp, rec.profile.teleg_id, emo.ROBOT_FACE + '[BOT-ADMIN]' + emo.ADMIN + ': ' + text, undefined, undefined, true);
|
||||
await tools.snooze(300)
|
||||
}
|
||||
}
|
||||
@@ -280,16 +380,19 @@ module.exports = {
|
||||
|
||||
},
|
||||
|
||||
sendMsgTelegram: async function (idapp, username, text) {
|
||||
sendMsgTelegram: async function (idapp, username, text, alsotomanagers) {
|
||||
const teleg_id = await User.TelegIdByUsername(idapp, username);
|
||||
const cl = getclTelegByidapp(idapp);
|
||||
if (cl && teleg_id) {
|
||||
await cl.sendMsg(teleg_id, text)
|
||||
}
|
||||
|
||||
if (alsotomanagers) {
|
||||
await this.sendMsgTelegramToTheManagers(idapp, text)
|
||||
}
|
||||
},
|
||||
|
||||
sendMsgTelegramByIdTelegram: async function (idapp, idtelegram, text, message_id, chat_id) {
|
||||
sendMsgTelegramByIdTelegram: async function (idapp, idtelegram, text, message_id, chat_id, ripr_menuPrec) {
|
||||
if (!idtelegram)
|
||||
return;
|
||||
|
||||
@@ -297,7 +400,7 @@ module.exports = {
|
||||
if (cl && idtelegram) {
|
||||
let myform = null;
|
||||
|
||||
return await cl.sendMsg(idtelegram, text, null, null, message_id, chat_id)
|
||||
return await cl.sendMsg(idtelegram, text, null, null, message_id, chat_id, ripr_menuPrec)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -307,9 +410,16 @@ module.exports = {
|
||||
async function sendMsgTelegramToTheAdmin(idapp, text, msg) {
|
||||
const usersmanagers = await User.getusersManagers(idapp);
|
||||
|
||||
const username = msg.chat.username;
|
||||
const clorig = getclTelegByidapp(idapp);
|
||||
const rec = clorig.getRecInMem(msg);
|
||||
let username = '';
|
||||
if (!!rec) {
|
||||
username = rec.username_bo;
|
||||
} else {
|
||||
username = msg.chat.username;
|
||||
}
|
||||
|
||||
text = emo.ROBOT_FACE + '[BOT-ADMIN]' + emo.ADMIN + ': Da ' + msg.chat.first_name + ' ' + msg.chat.last_name + ' (' + username + '): \n' + text;
|
||||
text = emo.ROBOT_FACE + '[BOT-ADMIN]' + emo.ADMIN + ': Da ' + msg.chat.first_name + ' ' + msg.chat.last_name + ' [' + username + ']: \n' + text;
|
||||
tools.writeEventsLog(text);
|
||||
|
||||
if (usersmanagers) {
|
||||
@@ -328,10 +438,25 @@ async function sendMsgTelegramToTheAdmin(idapp, text, msg) {
|
||||
|
||||
}
|
||||
|
||||
async function local_sendMsgTelegramToTheManagers(idapp, text, msg) {
|
||||
function getusernameByUser(idapp, msg) {
|
||||
let username = '';
|
||||
let rec = this.getRecInMem(msg);
|
||||
if (!!rec)
|
||||
username = rec.username_bo;
|
||||
|
||||
if (username === '') {
|
||||
username = msg.chat.username;
|
||||
}
|
||||
|
||||
return username;
|
||||
}
|
||||
|
||||
async function local_sendMsgTelegramToTheManagers(idapp, text, msg, username_bo) {
|
||||
const usersmanagers = await User.getusersManagers(idapp);
|
||||
|
||||
const username = msg.chat.username;
|
||||
let username = msg.chat.username;
|
||||
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;
|
||||
tools.writeEventsLog(text);
|
||||
@@ -341,7 +466,7 @@ async function local_sendMsgTelegramToTheManagers(idapp, text, msg) {
|
||||
const idtelegram = rec.profile.teleg_id;
|
||||
const cl = getclTelegByidapp(idapp);
|
||||
if (cl && idtelegram) {
|
||||
await cl.sendMsg(idtelegram, text)
|
||||
await cl.sendMsg(idtelegram, text, undefined, undefined, undefined, undefined, true)
|
||||
}
|
||||
await tools.snooze(300)
|
||||
}
|
||||
@@ -489,10 +614,10 @@ class Telegram {
|
||||
contastiera = true;
|
||||
} else if (MsgBot.UGUALE.includes(testo)) {
|
||||
risp = testo;
|
||||
} else if (MsgBot.CHI_E_VISTAR.includes(testo)) {
|
||||
risp = 'Vistar è un nomade che vive in Perù tra i selvaggi, filosofeggiando e cazzeggiando qua e la... Per questo è un Fico ed è adulato dalle ragazze di tutto il Globo ' + emo.JOY + emo.JOY + emo.JOY;
|
||||
} else if (MsgBot.CHI_E_PAOLO.includes(testo)) {
|
||||
risp = 'Paolo è il Programmatore Sborone di AYNI. Anche lui Fico quanto Vistar (ma chi è Vistar) ' + emo.JOY + ' che anzichè creare la Billettera cazzeggia su AYNI BOT, trovando risposte alle domande più assurde.' + emo.JOY2 + emo.JOY2;
|
||||
// } else if (MsgBot.CHI_E_VISTAR.includes(testo)) {
|
||||
// risp = 'Vistar è un nomade che vive in Perù tra i selvaggi, filosofeggiando e cazzeggiando qua e la... Per questo è un Fico ed è adulato dalle ragazze di tutto il Globo ' + emo.JOY + emo.JOY + emo.JOY;
|
||||
// } else if (MsgBot.CHI_E_PAOLO.includes(testo)) {
|
||||
// risp = 'Paolo è il Programmatore Sborone di AYNI. Anche lui Fico quanto Vistar (ma chi è Vistar) ' + emo.JOY + ' che anzichè creare la Nave cazzeggia su AYNI BOT, trovando risposte alle domande più assurde.' + emo.JOY2 + emo.JOY2;
|
||||
} else if (MsgBot.COME_SI_CHIAMA.includes(testo)) {
|
||||
risp = 'Eh non te lo posso dire! ' + emo.JOY;
|
||||
} else if (MsgBot.GRAZIE.includes(testo.replace('!', ''))) {
|
||||
@@ -530,11 +655,11 @@ class Telegram {
|
||||
risp = 'Da te non me l\'aspettavo proprio !! ' + emo.INNOCENT + emo.CROSS_ROSSA;
|
||||
} else if (MsgBot.HAHA.find((rec) => testo.indexOf(rec) > -1) && testo.length < 8) {
|
||||
risp = emo.JOY + emo.JOY + emo.JOY;
|
||||
} else {
|
||||
} else if (testo.length > 1) {
|
||||
noanswer = true;
|
||||
risp = 'Non ti capisco... d\'altronde sono solo un Robot ' + emo.ROBOT_FACE + emo.JOY2 + '\n\n(Per AIUTO, contatta la Chat AYNI - HELP)';
|
||||
// risp += '\nClicca qui per entrare nella Chat AYNI - HELP di Supporto\n' + 'https://t.me/joinchat/C741mlVmB_RMcOUpNqWC8w' + '\n\nI miei colleghi umani ti aiuteranno a risolvere !';
|
||||
await sendMsgTelegramToTheAdmin(this.idapp, testo, msg);
|
||||
await local_sendMsgTelegramToTheManagers(this.idapp, testo, msg, rec.username_bo);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -551,22 +676,22 @@ class Telegram {
|
||||
}
|
||||
|
||||
if (rec.numdomande > 3 && rec.msgcodeprec === '') {
|
||||
if (rec.user) {
|
||||
const dashboard = await User.getDashboard(this.idapp, rec.user.aportador_solidario, rec.user.username, rec.user.aportador_solidario_name_surname);
|
||||
|
||||
risp += '\n\nNel frattempo ti ricordo che ';
|
||||
if (dashboard.myself.numinvitati === 1)
|
||||
risp += 'hai solo ' + dashboard.myself.numinvitati + ' invitato!';
|
||||
else if (dashboard.myself.numinvitati === 0)
|
||||
risp += 'ancora non hai portato nessun Invitato! ' + emo.LEFT_FACING_FIST;
|
||||
else if (dashboard.myself.numinvitati > 2)
|
||||
risp += 'hai ' + dashboard.myself.numinvitati + ' invitati !' + emo.STARS;
|
||||
|
||||
risp += '\n\nSei già entrato nella Chat di EMPOWER?';
|
||||
rec.msgcodeprec = MsgBot.CHAT_EMPOWER;
|
||||
rec.statusmsg = Status.WAITFOR_RISPOSTA;
|
||||
rec.numdomande = 0;
|
||||
}
|
||||
// if (rec.user) {
|
||||
// const dashboard = await User.getDashboard(this.idapp, rec.user.aportador_solidario, rec.user.username, rec.user.aportador_solidario_name_surname);
|
||||
//
|
||||
// risp += '\n\nNel frattempo ti ricordo che ';
|
||||
// if (dashboard.myself.numinvitati === 1)
|
||||
// risp += 'hai solo ' + dashboard.myself.numinvitati + ' invitato!';
|
||||
// else if (dashboard.myself.numinvitati === 0)
|
||||
// risp += 'ancora non hai portato nessun Invitato! ' + emo.LEFT_FACING_FIST;
|
||||
// else if (dashboard.myself.numinvitati > 2)
|
||||
// risp += 'hai ' + dashboard.myself.numinvitati + ' invitati !' + emo.STARS;
|
||||
//
|
||||
// risp += '\n\nSei già entrato nella Chat di EMPOWER?';
|
||||
// rec.msgcodeprec = MsgBot.CHAT_EMPOWER;
|
||||
// rec.statusmsg = Status.WAITFOR_RISPOSTA;
|
||||
// rec.numdomande = 0;
|
||||
// }
|
||||
}
|
||||
|
||||
if (risp !== '') {
|
||||
@@ -607,8 +732,27 @@ class Telegram {
|
||||
if (msg.text === undefined)
|
||||
return;
|
||||
|
||||
const arrtext = msg.text.split(" ");
|
||||
let cmd2 = "";
|
||||
let cmd1 = arrtext[0];
|
||||
if (arrtext.length > 1)
|
||||
cmd2 = arrtext[1];
|
||||
|
||||
let oldusername = rec.msgall_username_specifico;
|
||||
|
||||
if ((msg.text === Menu.ESCI_DA_CHAT) || (msg.text === Menu.INDIETRO)) {
|
||||
rec.msgall_username_specifico = '';
|
||||
} else {
|
||||
if (rec.msgall_username_specifico !== '') {
|
||||
await this.SendMsgToUser(msg, rec, rec.msgall_username_specifico, msg.text);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (msg.text === Menu.LAVAGNA || MsgBot.LAVAGNA.find((rec) => msg.text.indexOf(rec) > -1)) {
|
||||
await this.menuLavagna(msg)
|
||||
await this.menuLavagna(msg);
|
||||
} else if (msg.text === Menu.MIANAVE || (cmd2 === strNave) || MsgBot.MIANAVE.find((rec) => msg.text.indexOf(rec) > -1)) {
|
||||
await this.menuNave(msg)
|
||||
} else if (msg.text === Menu.ACCEDI) {
|
||||
await this.menuAccedi(msg)
|
||||
} else if (msg.text === Menu.LINK_CONDIVIDERE) {
|
||||
@@ -621,8 +765,21 @@ class Telegram {
|
||||
await this.menumsgAll(msg)
|
||||
} else if (msg.text === Menu.MSGSTAFF) {
|
||||
await this.menumsgStaff(msg)
|
||||
} else if (msg.text === Menu.MSG_NO_7_REQ) {
|
||||
await this.menumsg_No_7_Req(msg)
|
||||
} else if (msg.text === Menu.MSG_NO_9_REQ) {
|
||||
await this.menumsg_No_9_Req(msg)
|
||||
} else if (cmd1 === Menu.MSG_TO_NAVE) {
|
||||
await this.menumsg_to_Nave(msg, cmd2)
|
||||
} else if (msg.text === Menu.MSG_SI_INVITATI_NO_7REQ_INVITATI) {
|
||||
await this.menumsg_Si_Invitati_No_7Req(msg)
|
||||
} else if (cmd1.toLowerCase() === Menu.MSG_TO_USER) {
|
||||
await this.menumsg_A_Utente(msg)
|
||||
} else if (msg.text === Menu.INDIETRO) {
|
||||
await this.msgScegliMenu(msg);
|
||||
} else if (msg.text === Menu.ESCI_DA_CHAT) {
|
||||
await this.sendMsg(msg.chat.id, 'Uscito dalla Chat con ' + oldusername);
|
||||
rec.msgall_username_specifico = '';
|
||||
} else {
|
||||
await this.isMenuNotVerified(rec, msg);
|
||||
}
|
||||
@@ -747,16 +904,16 @@ class Telegram {
|
||||
}
|
||||
|
||||
|
||||
if (dashboard.downnotreg) {
|
||||
if (dashboard.downnotreg.length > 0) {
|
||||
mystr += '\n' + emo.QUESTION_MARK + ' ' + tools.get__('NONREG', msg) + ':' + emo.QUESTION_MARK + '\n';
|
||||
let index = 1;
|
||||
dashboard.downnotreg.forEach((user) => {
|
||||
mystr += ` - ${index}°: ${user.name} ${user.surname} (tel: ${user.cell_complete})\n`;
|
||||
index++;
|
||||
});
|
||||
}
|
||||
}
|
||||
// if (dashboard.downnotreg) {
|
||||
// if (dashboard.downnotreg.length > 0) {
|
||||
// mystr += '\n' + emo.QUESTION_MARK + ' ' + tools.get__('NONREG', msg) + ':' + emo.QUESTION_MARK + '\n';
|
||||
// let index = 1;
|
||||
// dashboard.downnotreg.forEach((user) => {
|
||||
// mystr += ` - ${index}°: ${user.name} ${user.surname} (tel: ${user.cell_complete})\n`;
|
||||
// index++;
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
|
||||
if (tuttie9)
|
||||
mystr += '\n' + printf(tools.get__('INFO_LAVAGNA_SITO', msg));
|
||||
@@ -768,7 +925,6 @@ class Telegram {
|
||||
|
||||
async menuLavagna(msg) {
|
||||
const rec = this.getRecInMem(msg);
|
||||
// console.log('rec', rec);
|
||||
let mystr = '';
|
||||
if (rec.user) {
|
||||
mystr = await this.getLavagnaByUser(rec.user, msg)
|
||||
@@ -778,6 +934,30 @@ class Telegram {
|
||||
await this.sendMsg(msg.chat.id, mystr);
|
||||
}
|
||||
|
||||
async menuNave(msg) {
|
||||
const rec = this.getRecInMem(msg);
|
||||
let mystr = '';
|
||||
if (!rec.user)
|
||||
return "";
|
||||
|
||||
let ind_order_to_check = rec.user.ind_order;
|
||||
let arrstringa = msg.text.split(" ");
|
||||
|
||||
if (!!arrstringa) {
|
||||
if (arrstringa.length > 1) {
|
||||
let last = arrstringa.slice(-1)[0];
|
||||
if (!isNaN(last)) {
|
||||
ind_order_to_check = last;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mystr = await Nave.getNaveByUser(this.idapp, ind_order_to_check, rec.user.lang, true);
|
||||
|
||||
if (!!mystr)
|
||||
await this.sendMsg(msg.chat.id, mystr);
|
||||
}
|
||||
|
||||
|
||||
async menuLinkCondividere(msg) {
|
||||
const rec = this.getRecInMem(msg);
|
||||
@@ -859,23 +1039,71 @@ class Telegram {
|
||||
this.sendMsg(msg.chat.id, mystr, MenuAdmin);
|
||||
}
|
||||
|
||||
async menumsgAll(msg) {
|
||||
getDestinStr(msg, destin, rec) {
|
||||
if (destin === Destin.TUTTI)
|
||||
return 'TUTTI';
|
||||
else if (destin === Destin.STAFF)
|
||||
return 'STAFF';
|
||||
else if (destin === Destin.NO_7_REQ)
|
||||
return 'No 7 Requisiti';
|
||||
else if (destin === Destin.NO_9_REQ)
|
||||
return 'No 9 Requisiti';
|
||||
else if (destin === Destin.SI_INVITATI_NO_7REQ_INVITATI)
|
||||
return '2 Invitati ma NO Requisiti';
|
||||
else if (destin === Destin.MSG_TO_NAVE)
|
||||
return 'Nave ' + rec.extraparam;
|
||||
else if (destin === Destin.A_UTENTE) {
|
||||
const rec = this.getRecInMem(msg);
|
||||
if (rec.user) {
|
||||
const mystr = 'Scrivi qui un Messaggio da inviare a TUTTI:';
|
||||
rec.msgall_status = StatusMSGALL.ASK;
|
||||
rec.msgall_staff = false;
|
||||
await this.sendMsg(msg.chat.id, mystr, MenuAdmin);
|
||||
return rec.msgall_username_specifico
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
async menumsgAll(msg) {
|
||||
await this.menumsgGenerico(msg, Destin.TUTTI);
|
||||
}
|
||||
|
||||
async menumsgStaff(msg) {
|
||||
await this.menumsgGenerico(msg, Destin.STAFF);
|
||||
}
|
||||
|
||||
async menumsg_No_7_Req(msg) {
|
||||
await this.menumsgGenerico(msg, Destin.NO_7_REQ);
|
||||
}
|
||||
|
||||
async menumsg_No_9_Req(msg) {
|
||||
await this.menumsgGenerico(msg, Destin.NO_9_REQ);
|
||||
}
|
||||
|
||||
async menumsg_to_Nave(msg, nave) {
|
||||
await this.menumsgGenerico(msg, Destin.MSG_TO_NAVE, undefined, nave);
|
||||
}
|
||||
|
||||
async menumsg_Si_Invitati_No_7Req(msg) {
|
||||
await this.menumsgGenerico(msg, Destin.SI_INVITATI_NO_7REQ_INVITATI);
|
||||
}
|
||||
|
||||
async menumsg_A_Utente(msg) {
|
||||
const arr = msg.text.split(' ');
|
||||
if (!!arr && arr.length > 1) {
|
||||
const username = arr[1];
|
||||
const rec = this.getRecInMem(msg);
|
||||
rec.msg_wait = true;
|
||||
await this.SendMsgToUser(msg, rec, username, msg.text);
|
||||
}
|
||||
}
|
||||
|
||||
async menumsgGenerico(msg, dest, username, extraparam) {
|
||||
const rec = this.getRecInMem(msg);
|
||||
if (rec.user) {
|
||||
const mystr = 'Scrivi qui un Messaggio da inviare allo STAFF:';
|
||||
rec.msgall_status = StatusMSGALL.ASK;
|
||||
rec.msgall_staff = true;
|
||||
await this.sendMsg(msg.chat.id, mystr, MenuAdmin);
|
||||
rec.msgall_achi = dest;
|
||||
rec.extraparam = extraparam;
|
||||
if (!!username) {
|
||||
rec.msgall_username_specifico = username;
|
||||
}
|
||||
const mystr = 'Scrivi qui un Messaggio da inviare a' + ' [' + this.getDestinStr(msg, dest, rec) + ']:';
|
||||
await this.sendMsg(msg.chat.id, mystr, MenuSend);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -918,6 +1146,14 @@ class Telegram {
|
||||
return this.arrUsers.find((rec) => rec.id === id);
|
||||
}
|
||||
|
||||
getRecByUsername(username) {
|
||||
return this.arrUsers.find((rec) => rec.username_bo === username);
|
||||
}
|
||||
|
||||
getRecInMemById(id) {
|
||||
return this.arrUsers.find((rec) => rec.id === id);
|
||||
}
|
||||
|
||||
deleteRecInMem(msg) {
|
||||
this.arrUsers = this.arrUsers.filter((rec) => rec.id !== msg.from.id);
|
||||
}
|
||||
@@ -925,7 +1161,8 @@ class Telegram {
|
||||
async getUser(msg, rec, conmsg) {
|
||||
let myid = 0;
|
||||
let ok = false;
|
||||
const user = await User.findByUsername(this.idapp, msg.text.trim(), true);
|
||||
let mystruser = tools.getFirstWord(msg.text.trim());
|
||||
const user = await User.findByUsername(this.idapp, mystruser, true);
|
||||
if (!user) {
|
||||
if (conmsg) {
|
||||
await this.sendMsg(msg.from.id, txt.MSG_ERRORE_USERNAME_NOT_FOUND, MenuNoLogin);
|
||||
@@ -1029,53 +1266,142 @@ class Telegram {
|
||||
}
|
||||
}
|
||||
|
||||
async sendMsgToAll(rec, msg, texttosend, solostaff) {
|
||||
if (texttosend.length < 3) {
|
||||
async sistemaRecDest(rec, msg) {
|
||||
let recdest = this.getRecByUsername(rec.msgall_username_specifico);
|
||||
if (!recdest) {
|
||||
const userdest = await User.findByUsername(this.idapp, rec.msgall_username_specifico);
|
||||
if (!!userdest) {
|
||||
let msgdest = msg;
|
||||
msgdest.from.id = userdest.profile.teleg_id;
|
||||
await this.createIfNotExist(msgdest);
|
||||
recdest = this.getRecByUsername(rec.msgall_username_specifico);
|
||||
}
|
||||
}
|
||||
if (!!recdest) {
|
||||
recdest.msgall_username_specifico = rec.username_bo;
|
||||
} else {
|
||||
const usersall = await User.getUsersTelegALL(rec.user.idapp);
|
||||
rec.msgall_username_specifico = '';
|
||||
}
|
||||
|
||||
return recdest
|
||||
}
|
||||
|
||||
|
||||
async sendMsgToAll(rec, msg, texttosend, destin) {
|
||||
try {
|
||||
if ((texttosend.length < 3) && (destin !== Destin.A_UTENTE)) {
|
||||
} else {
|
||||
|
||||
let usersall = null;
|
||||
if (destin === Destin.A_UTENTE)
|
||||
usersall = await User.getUsersTelegALL(rec.user.idapp, rec.msgall_username_specifico);
|
||||
else
|
||||
usersall = await User.getUsersTelegALL(rec.user.idapp);
|
||||
|
||||
let nummsgsent = 0;
|
||||
|
||||
let textdainviare = "";
|
||||
let preparatesto = '';
|
||||
let myid = '';
|
||||
|
||||
if (texttosend === Menu.ZOOM) {
|
||||
texttosend = await this.getNextZoom()
|
||||
}
|
||||
|
||||
const cmd = texttosend.toLowerCase();
|
||||
|
||||
if (usersall) {
|
||||
if (solostaff)
|
||||
tools.writeEventsLog('[MSG_A_STAFF]: ' + texttosend);
|
||||
else
|
||||
tools.writeEventsLog('[MSG_A_TUTTI]: ' + texttosend);
|
||||
if (cmd === Menu.INDIETRO) {
|
||||
rec.msgall_status = StatusMSGALL.NONE;
|
||||
return
|
||||
}
|
||||
|
||||
tools.writeEventsLog(this.getDestinStr(msg, destin, rec) + ':\n' + texttosend);
|
||||
|
||||
for (const utente of usersall) {
|
||||
|
||||
if (texttosend === Menu.LAVAGNA) {
|
||||
textdainviare = await this.getLavagnaByUser(utente, msg);
|
||||
} else if (destin === Destin.A_UTENTE) {
|
||||
textdainviare = texttosend;
|
||||
} else {
|
||||
textdainviare = texttosend;
|
||||
}
|
||||
let invia = true;
|
||||
if (solostaff) {
|
||||
invia = User.isManager(utente.perm)
|
||||
|
||||
let invia = false;
|
||||
if (destin === Destin.STAFF) {
|
||||
invia = User.isManager(utente.perm);
|
||||
} else if (destin === Destin.TUTTI) {
|
||||
invia = true;
|
||||
} else if (destin === Destin.A_UTENTE) {
|
||||
invia = utente.username === rec.msgall_username_specifico;
|
||||
} else if (destin === Destin.NO_7_REQ) {
|
||||
invia = !await User.isUserQualified7(this.idapp, utente.username);
|
||||
} else if (destin === Destin.NO_9_REQ) {
|
||||
invia = !await User.isUserQualified9(this.idapp, utente.username);
|
||||
} else if (destin === Destin.MSG_TO_NAVE) {
|
||||
invia = !await Nave.findDonatoreByNave(this.idapp, rec.extraparam);
|
||||
} else if (destin === Destin.SI_INVITATI_NO_7REQ_INVITATI) {
|
||||
const numinvitati = await User.getnumInvitati(this.idapp, utente.username);
|
||||
const numinvitatiattivi = await User.getnumInvitatiAttivi(this.idapp, utente.username);
|
||||
invia = (numinvitati >= 2) && (numinvitatiattivi < 2);
|
||||
}
|
||||
if (invia) {
|
||||
if (cmd === RICEVI_EMAIL) {
|
||||
preparatesto += utente.email + ', ';
|
||||
} else if (cmd === CONTA_SOLO) {
|
||||
// Niente
|
||||
} else {
|
||||
if (destin === Destin.A_UTENTE) {
|
||||
await this.sistemaRecDest(rec, msg);
|
||||
await this.sendMsg(utente.profile.teleg_id, '[' + rec.username_bo + ' ti scrive]:\n' + textdainviare, MenuChat);
|
||||
} else {
|
||||
await this.sendMsg(utente.profile.teleg_id, textdainviare);
|
||||
nummsgsent++;
|
||||
}
|
||||
await tools.snooze(300)
|
||||
}
|
||||
nummsgsent++;
|
||||
|
||||
if ((nummsgsent % 100) === 0)
|
||||
if (!SendMsgCmd.includes(cmd)) {
|
||||
if ((nummsgsent % 50) === 0) {
|
||||
myid = await this.sendMsg(msg.chat.id, nummsgsent + ' ' + getstr(msg.from.language_code, txt.MSG_MSG_INCORSO), null, { message_id: myid });
|
||||
|
||||
// ++Todo: SLEEP ??? sleep(0.03)
|
||||
await tools.snooze(300)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
await this.sendMsg(msg.chat.id, nummsgsent + ' ' + getstr(msg.from.language_code, txt.MSG_MSG_SENT));
|
||||
let msgris = "";
|
||||
if (cmd === CONTA_SOLO) {
|
||||
msgris = nummsgsent + ' ' + getstr(msg.from.language_code, txt.MSG_MSG_TOSENT);
|
||||
} else if (cmd === RICEVI_EMAIL) {
|
||||
msgris = nummsgsent + ' ' + 'Email';
|
||||
await this.sendMsg(msg.chat.id, msgris);
|
||||
msgris = preparatesto;
|
||||
} else {
|
||||
msgris = nummsgsent + ' ' + getstr(msg.from.language_code, txt.MSG_MSG_SENT);
|
||||
}
|
||||
|
||||
if (destin === Destin.A_UTENTE) {
|
||||
const recdest = await this.sistemaRecDest(rec);
|
||||
if (!!recdest) {
|
||||
await this.sendMsg(msg.chat.id, 'Conversazione Iniziata con ' + rec.msgall_username_specifico + ' !', MenuChat);
|
||||
} else {
|
||||
await this.sendMsg(msg.chat.id, 'Utente ' + rec.msgall_username_specifico + ' non presente sul BOT !');
|
||||
}
|
||||
} else {
|
||||
tools.writeEventsLog(msgris);
|
||||
await this.sendMsg(msg.chat.id, msgris);
|
||||
}
|
||||
|
||||
}
|
||||
rec.start_write_msgall = false;
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
selectMenuHelp(msg) {
|
||||
return ((msg.text === Menu.INFO) || (msg.text === Menu.ASSISTENZA))
|
||||
@@ -1106,8 +1432,7 @@ class Telegram {
|
||||
if (rec.msgall_status === StatusMSGALL.CONFIRM) {
|
||||
if (msg.text === Menu.SI) {
|
||||
// Take msg to send to ALL
|
||||
await
|
||||
this.sendMsgToAll(rec, msg, rec.msgtosent, rec.msgall_staff)
|
||||
await this.sendMsgToAll(rec, msg, rec.msgtosent, rec.msgall_achi)
|
||||
} else {
|
||||
this.sendMsg(msg.chat.id, txt.MSG_OPERAZ_ANNULLATA);
|
||||
}
|
||||
@@ -1117,10 +1442,20 @@ class Telegram {
|
||||
if (msg.text !== Menu.INDIETRO) {
|
||||
rec.msgtosent = msg.text;
|
||||
rec.msgall_status = StatusMSGALL.CONFIRM;
|
||||
let achi = "TUTTI";
|
||||
if (rec.msgall_staff)
|
||||
achi = "STAFF";
|
||||
const domanda = 'Confermi d\'Inviare questo messaggio a ' + achi + ' ?\n' + rec.msgtosent;
|
||||
const cmd = rec.msgtosent.toLowerCase();
|
||||
let achi = this.getDestinStr(msg, rec.msgall_achi, rec);
|
||||
let domanda = '';
|
||||
if (cmd === CONTA_SOLO)
|
||||
domanda = 'Confermi di vedere a quante persone arriverebbe questo messaggio, a ' + achi + ' ?\n' + rec.msgtosent;
|
||||
else if (cmd === RICEVI_EMAIL)
|
||||
domanda = 'Confermi di vedere la lista delle email di ' + achi + '?';
|
||||
else {
|
||||
if (rec.msgall_achi === Destin.A_UTENTE)
|
||||
domanda = 'Confermi d\'Iniziare una Chat messaggi con ' + achi + ' ?\n' + rec.msgtosent;
|
||||
else
|
||||
domanda = 'Confermi d\'Inviare questo messaggio a ' + achi + ' ?\n' + rec.msgtosent;
|
||||
}
|
||||
|
||||
this.ChiediSINO(msg, domanda);
|
||||
} else {
|
||||
rec.msgall_status = StatusMSGALL.NONE;
|
||||
@@ -1157,8 +1492,7 @@ class Telegram {
|
||||
|
||||
async setUser(msg) {
|
||||
const id = msg.from.id;
|
||||
const user = await
|
||||
User.UserByIdTelegram(this.idapp, id);
|
||||
const user = await User.UserByIdTelegram(this.idapp, id);
|
||||
let rec = this.arrUsers.find((rec) => rec.id === msg.from.id);
|
||||
if (user && rec) {
|
||||
rec.user = user;
|
||||
@@ -1166,6 +1500,15 @@ class Telegram {
|
||||
|
||||
}
|
||||
|
||||
async setUserbyUsername(username) {
|
||||
const user = await User.findByUsername(this.idapp, username);
|
||||
let rec = this.arrUsers.find((rec) => rec.username_bo === username);
|
||||
if (user && rec) {
|
||||
rec.user = user;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
async alreadyExist(msg) {
|
||||
const id = msg.from.id;
|
||||
let rec = null;
|
||||
@@ -1204,7 +1547,12 @@ class Telegram {
|
||||
retry: 0,
|
||||
username_bo: '',
|
||||
msgall_status: StatusMSGALL.NONE,
|
||||
msgall_achi: 0,
|
||||
msgall_username_specifico: '',
|
||||
extraparam: '',
|
||||
msgtosent: '',
|
||||
msg_wait: false,
|
||||
lastmenu: null,
|
||||
};
|
||||
|
||||
this.arrUsers.push(rec);
|
||||
@@ -1222,9 +1570,8 @@ class Telegram {
|
||||
async getKeyboard(id, menu) {
|
||||
let keyb = MenuStandard;
|
||||
// Check if you are Admin
|
||||
const ismanager = await
|
||||
User.isAdminByIdTeleg(this.idapp, id);
|
||||
if (ismanager)
|
||||
const ismanager = await User.isAdminByIdTeleg(this.idapp, id);
|
||||
if (ismanager && menu !== MenuChat)
|
||||
keyb = MenuPerAdmin;
|
||||
if (menu) {
|
||||
keyb = menu
|
||||
@@ -1247,7 +1594,7 @@ class Telegram {
|
||||
|
||||
}
|
||||
|
||||
async _inviaMsg(id, text, form, menu, msg_id, chat_id) {
|
||||
async _inviaMsg(id, text, form, menu, msg_id, chat_id, ripr_menuPrec) {
|
||||
if (!text)
|
||||
return 0;
|
||||
|
||||
@@ -1255,6 +1602,26 @@ class Telegram {
|
||||
return this.modificaMsg(chat_id, msg_id, text);
|
||||
}
|
||||
|
||||
const recmem = this.getRecInMemById(id);
|
||||
|
||||
if (!menu) {
|
||||
if (recmem) {
|
||||
if (recmem.msgall_username_specifico !== '') {
|
||||
menu = MenuChat
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (recmem) {
|
||||
recmem.lastmenu = menu
|
||||
}
|
||||
|
||||
if (ripr_menuPrec) {
|
||||
if (recmem && !!recmem.lastmenu) {
|
||||
menu = recmem.lastmenu
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
if (!form) {
|
||||
form = {
|
||||
@@ -1286,9 +1653,27 @@ class Telegram {
|
||||
}
|
||||
}
|
||||
|
||||
async sendMsg(id, text, menu, form, msg_id, chat_id) {
|
||||
async SendMsgToUser(msg, rec, username, text) {
|
||||
if (rec.msg_wait) {
|
||||
await this.menumsgGenerico(msg, Destin.A_UTENTE, username);
|
||||
rec.msg_wait = false;
|
||||
} else {
|
||||
const telegid = await User.TelegIdByUsername(this.idapp, username);
|
||||
if (telegid > 0) {
|
||||
await this.sistemaRecDest(rec, msg);
|
||||
// await this.sendMsg(msg.chat.id, '[Msg inviato a ' + username + ']: ');
|
||||
await this.sendMsg(telegid, Menu.CHAT_PERSONALE + '[' + rec.username_bo + ' ti scrive]:\n' + text, MenuChat);
|
||||
} else {
|
||||
await this.sendMsg(msg.chat.id, 'Username non valido');
|
||||
rec.msgall_username_specifico = ''
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return this._inviaMsg(id, text, form, menu, msg_id, chat_id);
|
||||
|
||||
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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -24,11 +24,13 @@ const webpush = require('web-push');
|
||||
|
||||
const FILELOG = 'filelog.txt';
|
||||
const FILEEVENTS = 'logevents.txt';
|
||||
const FILEBILLETTERA = 'logBillettera.txt';
|
||||
const FILEMANAGERS = 'logmanagers.txt';
|
||||
const FILENAVE = 'logNave.txt';
|
||||
const subject = process.env.URLBASE_APP1;
|
||||
const publicVapidKey = process.env.PUBLIC_VAPI_KEY;
|
||||
const privateVapidKey = process.env.PRIVATE_VAPI_KEY;
|
||||
|
||||
|
||||
// Code goes here
|
||||
const keySize = 256;
|
||||
const ivSize = 128;
|
||||
@@ -50,11 +52,11 @@ textlang = {
|
||||
"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'\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",
|
||||
'HAI_I_7_REQUISITI': 'PRIMI PASSI OK!\nHai i Primi 7 Requisiti per Entrare in programmazione!',
|
||||
'NON_HAI_I_7_REQUISITI': 'Attenzione!\nAncora non hai i 7 Requisiti per Entrare in programmazione!',
|
||||
'HAI_I_9_REQUISITI': 'COMPLIMENTI!\nHai TUTTI i 9 Requisiti per poter effettuare e poi ricevere il tuo Dono!',
|
||||
'NON_HAI_I_9_REQUISITI': 'Attenzione!\nAncora non hai Tutti i 9 Requisiti per poter effettuare e poi ricevere il tuo Dono!',
|
||||
'INFO_LA_MIA_LAVAGNA': '✨ Lista dei Requisiti: ✨ \n',
|
||||
'HAI_I_7_REQUISITI': 'PRIMI PASSI OK!\nHai i Primi 7 Requisiti per Entrare nella Lista d\'Imbarco!',
|
||||
'NON_HAI_I_7_REQUISITI': 'Attenzione!\nAncora non hai i 7 Requisiti per Entrare nella Lista d\'Imbarco!',
|
||||
'HAI_I_9_REQUISITI': 'COMPLIMENTI!\nHai Completato TUTTI i 9 Passi della Guida! Grazie per Aiutare AYNI ad Espandersi!',
|
||||
'NON_HAI_I_9_REQUISITI': 'Ricorda 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 dei tuoi invitati, clicca sulle 3 linee in alto a sinistra ed accedi alla voce "Lavagna".\n',
|
||||
'INFO_LAVAGNA_SITO': 'Per vedere lo stato dei tuoi invitati, sul sito AYNI, clicca sulle 3 linee in alto a sinistra ed accedi alla voce "Lavagna".\n',
|
||||
'INFO_LINK_DA_CONDIVIDERE': 'Link da condividere ai tuoi invitati per farli registrare al sito di Ayni:\n%s\n\nLink da condividere per partecipare allo Zoom (Conferenza OnLine):\n%s',
|
||||
@@ -70,7 +72,7 @@ textlang = {
|
||||
'LINEE_GUIDA': 'Accettato le Linee Guida',
|
||||
'VIDEO_INTRO': 'Visto il Video di AYNI',
|
||||
'SCRITTO_SOGNO': 'Hai scritto il tuo Sogno',
|
||||
'PAYMENTS': 'Modalità di Pagamento',
|
||||
'PAYMENTS': 'Modalità di Pagamento (Obbligatorio Paypal)',
|
||||
'INVITATI': 'persone registrate che hai invitato',
|
||||
'INVITATI_ATTIVI': 'Invitati con i 7 Requisiti',
|
||||
'NONREG': 'Invitati non Registrati',
|
||||
@@ -79,6 +81,10 @@ textlang = {
|
||||
'ZOOM_INIZIATO': 'QUESTA CONFERENZA E\' INIZIATA!',
|
||||
'SCEGLI_VOCE': 'scegli una voce:',
|
||||
'INVITATI_LISTA': 'I Tuoi Invitati (in verde con almeno i primi 7 Requisiti)',
|
||||
'CIAO': 'Ciao',
|
||||
'ADDED_TOLISTAINGRESSO': 'Sei stato aggiunto alla Lista delle persone che entreranno nella Lista D\'Imbarco !',
|
||||
'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 cliccando qui: %s'
|
||||
},
|
||||
es: {
|
||||
"L'Email è già stata Verificata": "L'Email è già stata Verificata",
|
||||
@@ -87,11 +93,11 @@ textlang = {
|
||||
"partecipanti": "participantes",
|
||||
'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'\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",
|
||||
'HAI_I_7_REQUISITI': 'PRIMI PASSI OK!\nHai i Primi 7 Requisiti per Entrare in programmazione!',
|
||||
'NON_HAI_I_7_REQUISITI': 'Attenzione!\nAncora non hai i 7 Requisiti per Entrare in programmazione!',
|
||||
'HAI_I_9_REQUISITI': 'COMPLIMENTI!\nHai TUTTI i 9 Requisiti per poter effettuare e poi ricevere il tuo Dono!',
|
||||
'NON_HAI_I_9_REQUISITI': 'Attenzione!\nAncora non hai Tutti i 9 Requisiti per poter effettuare e poi ricevere il tuo Dono!',
|
||||
'INFO_LA_MIA_LAVAGNA': '✨ Lista dei Requisiti: ✨ \n',
|
||||
'HAI_I_7_REQUISITI': 'PRIMI PASSI OK!\nHai i Primi 7 Requisiti per Entrare nella Lista d\'Imbarco!',
|
||||
'NON_HAI_I_7_REQUISITI': 'Attenzione!\nAncora non hai i 7 Requisiti per Entrare nella Lista d\'Imbarco!',
|
||||
'HAI_I_9_REQUISITI': 'COMPLIMENTI!\nHai Completato TUTTI i 9 Passi della Guida! Grazie per Aiutare AYNI ad Espandersi!',
|
||||
'NON_HAI_I_9_REQUISITI': 'Ricorda 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 dei tuoi invitati, clicca sulle 3 linee in alto a sinistra ed accedi alla voce "Lavagna".\n',
|
||||
'INFO_LAVAGNA_SITO': 'Per vedere lo stato dei tuoi invitati, sul sito AYNI, clicca sulle 3 linee in alto a sinistra ed accedi alla voce "Lavagna".\n',
|
||||
'INFO_LINK_DA_CONDIVIDERE': 'Link da condividere ai tuoi invitati per farli registrare al sito di Ayni:\n%s\n\nLink da condividere per partecipare allo Zoom (Conferenza OnLine):\n%s',
|
||||
@@ -107,7 +113,7 @@ textlang = {
|
||||
'LINEE_GUIDA': 'Accettato le Linee Guida',
|
||||
'VIDEO_INTRO': 'Visto il Video di AYNI',
|
||||
'SCRITTO_SOGNO': 'Hai scritto il tuo Sogno',
|
||||
'PAYMENTS': 'Modalità di Pagamento',
|
||||
'PAYMENTS': 'Modalità di Pagamento (Obbligatorio Paypal)',
|
||||
'INVITATI': 'persone registrate che hai invitato',
|
||||
'INVITATI_ATTIVI': 'Invitati con i 7 Requisiti',
|
||||
'NONREG': 'Invitati non Registrati',
|
||||
@@ -116,16 +122,20 @@ textlang = {
|
||||
'ZOOM_INIZIATO': 'QUESTA CONFERENZA E\' INIZIATA!',
|
||||
'SCEGLI_VOCE': 'scegli una voce:',
|
||||
'INVITATI_LISTA': 'I Tuoi Invitati (in verde con almeno i primi 7 Requisiti)',
|
||||
'CIAO': 'Hola',
|
||||
'ADDED_TOLISTAINGRESSO': 'Has sido añadido a la lista de personas que entrarán en Lista de embarque!',
|
||||
'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 cliccando qui: %s'
|
||||
},
|
||||
us: {
|
||||
"partecipanti": "participants",
|
||||
'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'\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",
|
||||
'HAI_I_7_REQUISITI': 'PRIMI PASSI OK!\nHai i Primi 7 Requisiti per Entrare in programmazione!',
|
||||
'NON_HAI_I_7_REQUISITI': 'Attenzione!\nAncora non hai i 7 Requisiti per Entrare in programmazione!',
|
||||
'HAI_I_9_REQUISITI': 'COMPLIMENTI!\nHai TUTTI i 9 Requisiti per poter effettuare e poi ricevere il tuo Dono!',
|
||||
'NON_HAI_I_9_REQUISITI': 'Attenzione!\nAncora non hai Tutti i 9 Requisiti per poter effettuare e poi ricevere il tuo Dono!',
|
||||
'INFO_LA_MIA_LAVAGNA': '✨ Lista dei Requisiti: ✨ \n',
|
||||
'HAI_I_7_REQUISITI': 'PRIMI PASSI OK!\nHai i Primi 7 Requisiti per Entrare nella Lista d\'Imbarco!',
|
||||
'NON_HAI_I_7_REQUISITI': 'Attenzione!\nAncora non hai i 7 Requisiti per Entrare nella Lista d\'Imbarco!',
|
||||
'HAI_I_9_REQUISITI': 'COMPLIMENTI!\nHai Completato TUTTI i 9 Passi della Guida! Grazie per Aiutare AYNI ad Espandersi!',
|
||||
'NON_HAI_I_9_REQUISITI': 'Ricorda 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 dei tuoi invitati, clicca sulle 3 linee in alto a sinistra ed accedi alla voce "Lavagna".\n',
|
||||
'INFO_LAVAGNA_SITO': 'Per vedere lo stato dei tuoi invitati, sul sito AYNI, clicca sulle 3 linee in alto a sinistra ed accedi alla voce "Lavagna".\n',
|
||||
'INFO_LINK_DA_CONDIVIDERE': 'Link da condividere ai tuoi invitati per farli registrare al sito di Ayni:\n%s\n\nLink da condividere per partecipare allo Zoom (Conferenza OnLine):\n%s',
|
||||
@@ -141,7 +151,7 @@ textlang = {
|
||||
'LINEE_GUIDA': 'Accettato le Linee Guida',
|
||||
'VIDEO_INTRO': 'Visto il Video di AYNI',
|
||||
'SCRITTO_SOGNO': 'Hai scritto il tuo Sogno',
|
||||
'PAYMENTS': 'Modalità di Pagamento',
|
||||
'PAYMENTS': 'Modalità di Pagamento (Obbligatorio Paypal)',
|
||||
'INVITATI': 'persone registrate che hai invitato',
|
||||
'INVITATI_ATTIVI': 'Invitati con i 7 Requisiti',
|
||||
'NONREG': 'Invitati non Registrati',
|
||||
@@ -150,6 +160,10 @@ textlang = {
|
||||
'ZOOM_INIZIATO': 'QUESTA CONFERENZA E\' INIZIATA!',
|
||||
'SCEGLI_VOCE': 'scegli una voce:',
|
||||
'INVITATI_LISTA': 'I Tuoi Invitati (in verde con almeno i primi 7 Requisiti)',
|
||||
'CIAO': 'Hi',
|
||||
'ADDED_TOLISTAINGRESSO': 'You have been added to the List of people who will enter the Boarding List!',
|
||||
'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 cliccando qui: %s'
|
||||
}
|
||||
};
|
||||
|
||||
@@ -167,6 +181,24 @@ module.exports = {
|
||||
TYPE_PROJECT: 1,
|
||||
TYPE_TODO: 2,
|
||||
|
||||
TipoMsg: {
|
||||
SEND_LINK_CHAT_DONATORI: 1,
|
||||
},
|
||||
|
||||
Placca: {
|
||||
DONATORI: 1,
|
||||
TUTTI: 2,
|
||||
|
||||
STR_SOGNATORE: 'Sognatore',
|
||||
STR_MEDIATORE: 'Mediatore',
|
||||
STR_MEDIATORI: 'Mediatori',
|
||||
STR_DONATORI: 'Donatori',
|
||||
SOGNATORE: 'E1 🌈 ',
|
||||
MEDIATORE: 'A1 💦 ',
|
||||
SONOFUOCO: 0,
|
||||
SONOACQUA: 3,
|
||||
},
|
||||
|
||||
FieldType: {
|
||||
boolean: 1,
|
||||
date: 2,
|
||||
@@ -518,6 +550,11 @@ module.exports = {
|
||||
return '';
|
||||
},
|
||||
|
||||
isAbilitaNave: function (idapp) {
|
||||
const myapp = MYAPPS.find(item => item.idapp === idapp);
|
||||
return myapp.abilitanave;
|
||||
},
|
||||
|
||||
getdirByIdApp: function (idapp) {
|
||||
|
||||
const myapp =
|
||||
@@ -801,13 +838,35 @@ module.exports = {
|
||||
},
|
||||
|
||||
getstrDateTimeShort(mydate) {
|
||||
if (mydate) {
|
||||
// console.log('getstrDate', mytimestamp)
|
||||
return this.getWeekDay(mydate) + ' ' + this.appendLeadingZeroes(mydate.getDate()) + '/' + this.appendLeadingZeroes(mydate.getMonth() + 1) + ' ORE ' + this.appendLeadingZeroes(mydate.getHours()) + ':' + this.appendLeadingZeroes(mydate.getMinutes());
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
},
|
||||
|
||||
getstrDateShort(mydate) {
|
||||
if (mydate) {
|
||||
// console.log('getstrDate', mytimestamp)
|
||||
return this.getWeekDay(mydate).substring(0, 3) + ' ' + this.appendLeadingZeroes(mydate.getDate()) + '/' + this.appendLeadingZeroes(mydate.getMonth() + 1);
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
},
|
||||
|
||||
getstrDateLong(mydate) {
|
||||
if (mydate) {
|
||||
// console.log('getstrDate', mytimestamp)
|
||||
return this.getWeekDay(mydate) + ' ' + this.appendLeadingZeroes(mydate.getDate()) + '/' + this.appendLeadingZeroes(mydate.getMonth() + 1) + '/' + mydate.getFullYear();
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
},
|
||||
|
||||
getlinkzoom(idconf) {
|
||||
if (idconf === '')
|
||||
idconf = '8886662000';
|
||||
idconf = '6668882000';
|
||||
return 'https://zoom.us/j/' + idconf
|
||||
},
|
||||
|
||||
@@ -889,8 +948,9 @@ module.exports = {
|
||||
// console.log('Saved!');
|
||||
// });
|
||||
|
||||
const stream = fs.createWriteStream(filename, {flags:'a'});
|
||||
stream.write(mystr);
|
||||
// mystr = this.getstrDateTimeShort(Date.now()) + ' ' + mystr;
|
||||
const stream = fs.createWriteStream(filename, { flags: 'a' });
|
||||
stream.write('\n' + mystr);
|
||||
stream.end();
|
||||
},
|
||||
|
||||
@@ -902,8 +962,12 @@ module.exports = {
|
||||
this.writelogfile(mystr, FILEEVENTS);
|
||||
},
|
||||
|
||||
writeBilletteraLog(mystr) {
|
||||
this.writelogfile(mystr, FILEBILLETTERA);
|
||||
writeManagersLog(mystr) {
|
||||
this.writelogfile(mystr, FILEMANAGERS);
|
||||
},
|
||||
|
||||
writeNaveLog(mystr) {
|
||||
this.writelogfile(mystr, FILENAVE);
|
||||
},
|
||||
|
||||
move(oldPath, newPath, callback) {
|
||||
@@ -1011,11 +1075,15 @@ module.exports = {
|
||||
return mystr.replace(/\s+/g, '')
|
||||
},
|
||||
|
||||
ModificheConsentite(table, fieldsvalue) {
|
||||
ModificheConsentite(table, fieldsvalue, idrec, user) {
|
||||
if (table === 'users') {
|
||||
if ('aportador_solidario' in fieldsvalue) {
|
||||
return true;
|
||||
}
|
||||
if ('ALL' in fieldsvalue) {
|
||||
//++Todo: Cancellalo solo se sono io il creatore dell'utente ... o se posso!
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -1029,5 +1097,20 @@ module.exports = {
|
||||
return false;
|
||||
},
|
||||
|
||||
getFirstWord(mystr) {
|
||||
const myarr = mystr.split(" ");
|
||||
if (myarr.length > 0)
|
||||
return myarr[0];
|
||||
else
|
||||
return mystr
|
||||
},
|
||||
|
||||
getFirst2Car(mystr) {
|
||||
if (!!mystr)
|
||||
return mystr.substring(0, 2) + '.';
|
||||
else
|
||||
return ''
|
||||
},
|
||||
|
||||
|
||||
};
|
||||
|
||||
1
src/server/tools/shared_vuejs.ts
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../../freeplanet/src/common/shared_vuejs.ts
|
||||