- 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>
|
strong <a href=#{forgetpwd} target="_blank">Find it here</a><br>
|
||||||
span Email:
|
span Email:
|
||||||
strong #{emailto}<br>
|
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">
|
div.divbtn <a href=#{strlinkreg} target="_blank">
|
||||||
button.btn.btn-lg Verify Registration</a>
|
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>
|
strong <a href=#{forgetpwd} target="_blank">Trovala qui</a><br>
|
||||||
span Email:
|
span Email:
|
||||||
strong #{emailto}<br>
|
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">
|
div.divbtn <a href=#{strlinkreg} target="_blank">
|
||||||
button.btn.btn-lg Verifica Registrazione</a>
|
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>
|
strong <a href=#{forgetpwd} target="_blank">Encuéntrelo aquí</a><br>
|
||||||
span Email:
|
span Email:
|
||||||
strong #{emailto}<br>
|
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">
|
div.divbtn <a href=#{strlinkreg} target="_blank">
|
||||||
button.btn.btn-lg Verificar registro</a>
|
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>
|
strong <a href=#{forgetpwd} target="_blank">Essayez ici</a><br>
|
||||||
span Email:
|
span Email:
|
||||||
strong #{emailto}<br>
|
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">
|
div.divbtn <a href=#{strlinkreg} target="_blank">
|
||||||
button.btn.btn-lg Vérifier l'enregistrement</a>
|
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>
|
strong <a href=#{forgetpwd} target="_blank">Trovala qui</a><br>
|
||||||
span Email:
|
span Email:
|
||||||
strong #{emailto}<br>
|
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">
|
div.divbtn <a href=#{strlinkreg} target="_blank">
|
||||||
button.btn.btn-lg Verifica Registrazione</a>
|
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>
|
strong <a href=##{forgetpwd} target="_blank">Encontre-o aqui</a>>br>
|
||||||
span Email:
|
span Email:
|
||||||
strong #{{emailto}<br>
|
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">
|
div.divbtn <a href=#{strlinkreg} target="_blank">
|
||||||
button.btn.btn-lg Verificação de registro</a>
|
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>
|
strong <a href=#{forgetpwd} target="_blank">Poiščite tukaj</a><br>
|
||||||
span Email:
|
span Email:
|
||||||
strong #{emailto}<br>
|
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">
|
div.divbtn <a href=#{strlinkreg} target="_blank">
|
||||||
button.btn.btn-lg Preveri registracijo</a>
|
button.btn.btn-lg Preveri registracijo</a>
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
"jsonwebtoken": "^8.5.1",
|
"jsonwebtoken": "^8.5.1",
|
||||||
"lodash": "^4.17.15",
|
"lodash": "^4.17.15",
|
||||||
"mongodb": "^3.4.1",
|
"mongodb": "^3.4.1",
|
||||||
"mongoose": "^5.8.4",
|
"mongoose": "^5.9.3",
|
||||||
"mysql": "^2.17.1",
|
"mysql": "^2.17.1",
|
||||||
"node-cron": "^2.0.3",
|
"node-cron": "^2.0.3",
|
||||||
"node-emoji": "^1.10.0",
|
"node-emoji": "^1.10.0",
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
telegram_key:'',
|
telegram_key:'',
|
||||||
telegram_bot_name: '',
|
telegram_bot_name: '',
|
||||||
pathreg_add:'',
|
pathreg_add:'',
|
||||||
|
abilitanave: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
idapp: '2',
|
idapp: '2',
|
||||||
@@ -49,6 +50,7 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
telegram_key:'',
|
telegram_key:'',
|
||||||
telegram_bot_name: '',
|
telegram_bot_name: '',
|
||||||
pathreg_add:'',
|
pathreg_add:'',
|
||||||
|
abilitanave: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
idapp: '3',
|
idapp: '3',
|
||||||
@@ -64,6 +66,7 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
telegram_key:'',
|
telegram_key:'',
|
||||||
telegram_bot_name: '',
|
telegram_bot_name: '',
|
||||||
pathreg_add:'',
|
pathreg_add:'',
|
||||||
|
abilitanave: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
idapp: '4',
|
idapp: '4',
|
||||||
@@ -79,6 +82,7 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
telegram_key:'',
|
telegram_key:'',
|
||||||
telegram_bot_name: '',
|
telegram_bot_name: '',
|
||||||
pathreg_add:'',
|
pathreg_add:'',
|
||||||
|
abilitanave: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
idapp: '6',
|
idapp: '6',
|
||||||
@@ -94,6 +98,7 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
telegram_key:'',
|
telegram_key:'',
|
||||||
telegram_bot_name: '',
|
telegram_bot_name: '',
|
||||||
pathreg_add:'',
|
pathreg_add:'',
|
||||||
|
abilitanave: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
idapp: '7',
|
idapp: '7',
|
||||||
@@ -109,6 +114,7 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
telegram_key:'1037577457:AAGQbdIuYoB838v61ewJ0Hearx9UPpTBhMI',
|
telegram_key:'1037577457:AAGQbdIuYoB838v61ewJ0Hearx9UPpTBhMI',
|
||||||
telegram_bot_name: 'notevoleaynibot',
|
telegram_bot_name: 'notevoleaynibot',
|
||||||
pathreg_add:'_ayni',
|
pathreg_add:'_ayni',
|
||||||
|
abilitanave: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
idapp: '8',
|
idapp: '8',
|
||||||
@@ -124,6 +130,7 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
telegram_key:'',
|
telegram_key:'',
|
||||||
telegram_bot_name: '',
|
telegram_bot_name: '',
|
||||||
pathreg_add:'',
|
pathreg_add:'',
|
||||||
|
abilitanave: false,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
} else if (process.env.NODE_ENV === 'test') {
|
} else if (process.env.NODE_ENV === 'test') {
|
||||||
@@ -143,6 +150,7 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
telegram_key:'',
|
telegram_key:'',
|
||||||
telegram_bot_name: '',
|
telegram_bot_name: '',
|
||||||
pathreg_add:'',
|
pathreg_add:'',
|
||||||
|
abilitanave: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
idapp: '2',
|
idapp: '2',
|
||||||
@@ -158,6 +166,7 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
telegram_key:'',
|
telegram_key:'',
|
||||||
telegram_bot_name: '',
|
telegram_bot_name: '',
|
||||||
pathreg_add:'',
|
pathreg_add:'',
|
||||||
|
abilitanave: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
idapp: '3',
|
idapp: '3',
|
||||||
@@ -172,6 +181,7 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
telegram_key:'',
|
telegram_key:'',
|
||||||
telegram_bot_name: '',
|
telegram_bot_name: '',
|
||||||
pathreg_add:'',
|
pathreg_add:'',
|
||||||
|
abilitanave: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
idapp: '4',
|
idapp: '4',
|
||||||
@@ -186,6 +196,7 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
telegram_key:'',
|
telegram_key:'',
|
||||||
telegram_bot_name: '',
|
telegram_bot_name: '',
|
||||||
pathreg_add:'',
|
pathreg_add:'',
|
||||||
|
abilitanave: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
idapp: '6',
|
idapp: '6',
|
||||||
@@ -200,6 +211,7 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
telegram_key:'',
|
telegram_key:'',
|
||||||
telegram_bot_name: '',
|
telegram_bot_name: '',
|
||||||
pathreg_add:'',
|
pathreg_add:'',
|
||||||
|
abilitanave: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
idapp: '7',
|
idapp: '7',
|
||||||
@@ -214,6 +226,7 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
telegram_key:'1011893908:AAEThZB3fVPw8P5gTCFgTEsDmY21DdbV1Cw',
|
telegram_key:'1011893908:AAEThZB3fVPw8P5gTCFgTEsDmY21DdbV1Cw',
|
||||||
telegram_bot_name: 'testnotevoleaynibot',
|
telegram_bot_name: 'testnotevoleaynibot',
|
||||||
pathreg_add:'_ayni',
|
pathreg_add:'_ayni',
|
||||||
|
abilitanave: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
idapp: '8',
|
idapp: '8',
|
||||||
@@ -229,6 +242,7 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
telegram_key:'',
|
telegram_key:'',
|
||||||
telegram_bot_name: '',
|
telegram_bot_name: '',
|
||||||
pathreg_add:'',
|
pathreg_add:'',
|
||||||
|
abilitanave: false,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
} else {
|
} else {
|
||||||
@@ -248,6 +262,7 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
telegram_key:'',
|
telegram_key:'',
|
||||||
telegram_bot_name: '',
|
telegram_bot_name: '',
|
||||||
pathreg_add:'',
|
pathreg_add:'',
|
||||||
|
abilitanave: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
idapp: '2',
|
idapp: '2',
|
||||||
@@ -263,6 +278,7 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
telegram_key:'',
|
telegram_key:'',
|
||||||
telegram_bot_name: '',
|
telegram_bot_name: '',
|
||||||
pathreg_add:'',
|
pathreg_add:'',
|
||||||
|
abilitanave: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
idapp: '3',
|
idapp: '3',
|
||||||
@@ -275,6 +291,7 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
email_from: 'info.pianetalibero@gmail.com',
|
email_from: 'info.pianetalibero@gmail.com',
|
||||||
email_pwd: '66ffeb915e71fada64ad5c26947dd087c262be3b343734a0447c6dee534b888aZcfbjXEuMBWKxvbh60cniw==',
|
email_pwd: '66ffeb915e71fada64ad5c26947dd087c262be3b343734a0447c6dee534b888aZcfbjXEuMBWKxvbh60cniw==',
|
||||||
pathreg_add:'',
|
pathreg_add:'',
|
||||||
|
abilitanave: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
idapp: '4',
|
idapp: '4',
|
||||||
@@ -289,6 +306,7 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
telegram_key:'',
|
telegram_key:'',
|
||||||
telegram_bot_name: '',
|
telegram_bot_name: '',
|
||||||
pathreg_add:'',
|
pathreg_add:'',
|
||||||
|
abilitanave: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
idapp: '6',
|
idapp: '6',
|
||||||
@@ -303,6 +321,7 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
telegram_key:'',
|
telegram_key:'',
|
||||||
telegram_bot_name: '',
|
telegram_bot_name: '',
|
||||||
pathreg_add:'',
|
pathreg_add:'',
|
||||||
|
abilitanave: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
idapp: '7',
|
idapp: '7',
|
||||||
@@ -317,6 +336,7 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
telegram_bot_name: 'paotestlocalebot',
|
telegram_bot_name: 'paotestlocalebot',
|
||||||
telegram_key:'353996190:AAEcEbfrm_zTK6mBKf8ye9j-PXt958SDxew',
|
telegram_key:'353996190:AAEcEbfrm_zTK6mBKf8ye9j-PXt958SDxew',
|
||||||
pathreg_add:'_ayni',
|
pathreg_add:'_ayni',
|
||||||
|
abilitanave: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
idapp: '8',
|
idapp: '8',
|
||||||
@@ -332,6 +352,7 @@ if (process.env.NODE_ENV === 'production') {
|
|||||||
telegram_key:'',
|
telegram_key:'',
|
||||||
telegram_bot_name: '',
|
telegram_bot_name: '',
|
||||||
pathreg_add:'',
|
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 tools = require('../tools/general');
|
||||||
|
|
||||||
|
const { ObjectID } = require('mongodb');
|
||||||
|
|
||||||
|
const { Nave } = require('./nave');
|
||||||
|
|
||||||
const shared_consts = require('../tools/shared_nodejs');
|
const shared_consts = require('../tools/shared_nodejs');
|
||||||
const queryclass = require('../classes/queryclass');
|
const queryclass = require('../classes/queryclass');
|
||||||
|
|
||||||
@@ -30,16 +34,17 @@ const ListaIngressoSchema = new mongoose.Schema({
|
|||||||
ind_order: {
|
ind_order: {
|
||||||
type: Number,
|
type: Number,
|
||||||
},
|
},
|
||||||
username: {
|
date_added: {
|
||||||
type: String,
|
type: Date,
|
||||||
},
|
},
|
||||||
name: {
|
added: { // Added into Programmation (Nave)
|
||||||
type: String,
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
},
|
},
|
||||||
surname: {
|
num_tess: {
|
||||||
type: String,
|
type: Number,
|
||||||
},
|
},
|
||||||
added: { // Added into Programmation (Billettera)
|
deleted: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false,
|
default: false,
|
||||||
}
|
}
|
||||||
@@ -48,7 +53,7 @@ const ListaIngressoSchema = new mongoose.Schema({
|
|||||||
|
|
||||||
ListaIngressoSchema.pre('save', async function (next) {
|
ListaIngressoSchema.pre('save', async function (next) {
|
||||||
if (this.isNew) {
|
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) {
|
||||||
if (myrec._doc.indprimario === 0)
|
if (myrec._doc.indprimario === 0)
|
||||||
this.indprimario = 1;
|
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 () {
|
ListaIngressoSchema.statics.getFieldsForSearch = function () {
|
||||||
return ['username', 'name', 'surname', 'ind_order']
|
return ['ind_order']
|
||||||
};
|
};
|
||||||
|
|
||||||
ListaIngressoSchema.statics.executeQueryTable = function (idapp, params) {
|
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);
|
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 };
|
module.exports = { Settings };
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ const tools = require('../tools/general');
|
|||||||
|
|
||||||
const { Settings } = require('../models/settings');
|
const { Settings } = require('../models/settings');
|
||||||
const { ListaIngresso } = require('../models/listaingresso');
|
const { ListaIngresso } = require('../models/listaingresso');
|
||||||
const { Billettera } = require('./billettera');
|
const { Nave } = require('../models/nave');
|
||||||
const { ExtraList } = require('../models/extralist');
|
const { ExtraList } = require('../models/extralist');
|
||||||
|
|
||||||
const { ObjectID } = require('mongodb');
|
const { ObjectID } = require('mongodb');
|
||||||
@@ -126,6 +126,9 @@ const UserSchema = new mongoose.Schema({
|
|||||||
aportador_solidario: {
|
aportador_solidario: {
|
||||||
type: String,
|
type: String,
|
||||||
},
|
},
|
||||||
|
aportador_iniziale: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
aportador_solidario_nome_completo: {
|
aportador_solidario_nome_completo: {
|
||||||
type: String,
|
type: String,
|
||||||
},
|
},
|
||||||
@@ -188,6 +191,9 @@ const UserSchema = new mongoose.Schema({
|
|||||||
special_req: {
|
special_req: {
|
||||||
type: Boolean
|
type: Boolean
|
||||||
},
|
},
|
||||||
|
vuole_ritessersi: {
|
||||||
|
type: Boolean
|
||||||
|
},
|
||||||
sex: {
|
sex: {
|
||||||
type: Number,
|
type: Number,
|
||||||
},
|
},
|
||||||
@@ -338,7 +344,7 @@ UserSchema.statics.findByUsername = async function (idapp, username, alsoemail)
|
|||||||
if ((!ris) && (alsoemail)) {
|
if ((!ris) && (alsoemail)) {
|
||||||
regexemail = new RegExp(["^", username.toLowerCase(), "$"].join(""), "i");
|
regexemail = new RegExp(["^", username.toLowerCase(), "$"].join(""), "i");
|
||||||
|
|
||||||
return await User.findOne({
|
return User.findOne({
|
||||||
'idapp': idapp,
|
'idapp': idapp,
|
||||||
'email': regexemail,
|
'email': regexemail,
|
||||||
});
|
});
|
||||||
@@ -365,6 +371,7 @@ UserSchema.statics.getUserShortDataByUsername = async function (idapp, username)
|
|||||||
'profile.email_paypal': 1,
|
'profile.email_paypal': 1,
|
||||||
'profile.my_dream': 1,
|
'profile.my_dream': 1,
|
||||||
'profile.paymenttypes': 1,
|
'profile.paymenttypes': 1,
|
||||||
|
'profile.cell': 1,
|
||||||
made_gift: 1,
|
made_gift: 1,
|
||||||
email: 1,
|
email: 1,
|
||||||
date_reg: 1,
|
date_reg: 1,
|
||||||
@@ -389,6 +396,9 @@ UserSchema.statics.getUserShortDataByUsername = async function (idapp, username)
|
|||||||
};
|
};
|
||||||
|
|
||||||
UserSchema.statics.getDownlineByUsername = async function (idapp, username) {
|
UserSchema.statics.getDownlineByUsername = async function (idapp, username) {
|
||||||
|
if (username === undefined)
|
||||||
|
return null;
|
||||||
|
|
||||||
const User = this;
|
const User = this;
|
||||||
const arrrec = await User.find({
|
const arrrec = await User.find({
|
||||||
'idapp': idapp,
|
'idapp': idapp,
|
||||||
@@ -406,6 +416,7 @@ UserSchema.statics.getDownlineByUsername = async function (idapp, username) {
|
|||||||
'profile.email_paypal': 1,
|
'profile.email_paypal': 1,
|
||||||
'profile.my_dream': 1,
|
'profile.my_dream': 1,
|
||||||
'profile.paymenttypes': 1,
|
'profile.paymenttypes': 1,
|
||||||
|
'profile.cell': 1,
|
||||||
made_gift: 1,
|
made_gift: 1,
|
||||||
email: 1,
|
email: 1,
|
||||||
date_reg: 1,
|
date_reg: 1,
|
||||||
@@ -430,32 +441,45 @@ UserSchema.statics.getDownlineByUsername = async function (idapp, username) {
|
|||||||
UserSchema.statics.getnumInvitatiAttivi = function (idapp, username) {
|
UserSchema.statics.getnumInvitatiAttivi = function (idapp, username) {
|
||||||
const User = this;
|
const User = this;
|
||||||
|
|
||||||
return User.count({
|
if (username === undefined)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
// return User.count({
|
||||||
|
return User.countDocuments({
|
||||||
idapp,
|
idapp,
|
||||||
aportador_solidario: username,
|
aportador_solidario: username,
|
||||||
verified_email: true,
|
$or: [
|
||||||
'profile.teleg_id': { $gt: 1 },
|
{
|
||||||
'profile.saw_and_accepted': shared_consts.ALL_SAW_AND_ACCEPTED,
|
'profile.special_req': true
|
||||||
'profile.saw_zoom_presentation': true,
|
},
|
||||||
'profile.my_dream': { $exists: true },
|
{
|
||||||
$and: [
|
|
||||||
{ "$expr": { "$gt": [{ "$strLenCP": "$profile.my_dream" }, 10] } },
|
verified_email: true,
|
||||||
{ "$expr": { "$gt": [{ "$strLenCP": "$profile.email_paypal" }, 6] } }
|
'profile.teleg_id': { $gt: 1 },
|
||||||
],
|
'profile.saw_and_accepted': shared_consts.ALL_SAW_AND_ACCEPTED,
|
||||||
$where: "this.profile.paymenttypes.length >= 1",
|
'profile.saw_zoom_presentation': true,
|
||||||
'profile.email_paypal': { $exists: 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] } }
|
||||||
|
],
|
||||||
|
}]
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
UserSchema.statics.isUserQualified7 = async function (idapp, username) {
|
UserSchema.statics.isUserQualified7 = async function (idapp, username) {
|
||||||
const User = this;
|
const User = this;
|
||||||
|
|
||||||
const myrec = await User.findOne({
|
if (username === undefined)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
const myquery = {
|
||||||
'idapp': idapp,
|
'idapp': idapp,
|
||||||
'username': username,
|
'username': username,
|
||||||
$or: [
|
$or: [
|
||||||
{
|
{
|
||||||
special_req: true
|
'profile.special_req': true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
verified_email: true,
|
verified_email: true,
|
||||||
@@ -464,22 +488,39 @@ UserSchema.statics.isUserQualified7 = async function (idapp, username) {
|
|||||||
'profile.saw_zoom_presentation': true,
|
'profile.saw_zoom_presentation': true,
|
||||||
'profile.my_dream': { $exists: true },
|
'profile.my_dream': { $exists: true },
|
||||||
'profile.email_paypal': { $exists: true },
|
'profile.email_paypal': { $exists: true },
|
||||||
|
'profile.paymenttypes': { "$in": ['paypal'] },
|
||||||
$and: [
|
$and: [
|
||||||
{ "$expr": { "$gt": [{ "$strLenCP": "$profile.my_dream" }, 10] } },
|
{ "$expr": { "$gt": [{ "$strLenCP": "$profile.my_dream" }, 10] } },
|
||||||
{ "$expr": { "$gt": [{ "$strLenCP": "$profile.email_paypal" }, 6] } }
|
{ "$expr": { "$gt": [{ "$strLenCP": "$profile.email_paypal" }, 6] } }
|
||||||
],
|
],
|
||||||
$where: "this.profile.paymenttypes.length >= 1",
|
$where: "this.profile.paymenttypes.length >= 1",
|
||||||
}]
|
}]
|
||||||
});
|
};
|
||||||
|
|
||||||
|
const myrec = await User.findOne(myquery);
|
||||||
|
|
||||||
return !!myrec;
|
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) {
|
UserSchema.statics.getnumPaymentOk = function (idapp) {
|
||||||
const User = this;
|
const User = this;
|
||||||
|
|
||||||
return User.count({
|
return User.count({
|
||||||
idapp,
|
idapp,
|
||||||
|
'profile.paymenttypes': { "$in": ['paypal'] },
|
||||||
$where: "this.profile.paymenttypes.length >= 1",
|
$where: "this.profile.paymenttypes.length >= 1",
|
||||||
'profile.email_paypal': { $exists: true },
|
'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) {
|
UserSchema.statics.findByLinkTokenforgot = function (idapp, email, tokenforgot) {
|
||||||
const User = this;
|
const User = this;
|
||||||
|
|
||||||
@@ -560,17 +616,17 @@ UserSchema.statics.findByIndOrder = function (idapp, ind_order) {
|
|||||||
const User = this;
|
const User = this;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
// ++Todo: non mettere tutti i campi !!
|
||||||
return User.findOne({
|
return User.findOne({
|
||||||
'idapp': idapp,
|
idapp,
|
||||||
'ind_order': ind_order,
|
ind_order,
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
UserSchema.pre('save', function (next) {
|
UserSchema.pre('save', function (next) {
|
||||||
const user = this;
|
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) {
|
UserSchema.statics.getAportadorSolidarioByUsername = async function (idapp, username) {
|
||||||
const User = this;
|
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) {
|
UserSchema.statics.TelegIdByUsername = async function (idapp, username) {
|
||||||
const User = this;
|
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) {
|
UserSchema.statics.getusersManagers = async function (idapp) {
|
||||||
const User = this;
|
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;
|
const User = this;
|
||||||
|
|
||||||
return await User.find({ idapp, 'profile.teleg_id': { $gt: 0 } })
|
if (!!username) {
|
||||||
.then((arrrec) => {
|
return await User.find({ idapp, username, 'profile.teleg_id': { $gt: 0 } })
|
||||||
return (!!arrrec) ? arrrec : null;
|
.then((arrrec) => {
|
||||||
}).catch((e) => {
|
return (!!arrrec) ? arrrec : null;
|
||||||
console.error('getUsersTelegALL', e);
|
}).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) {
|
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.aportador = await ExtraList.getUserNotRegisteredByNameSurname(idapp, aportador_solidario_nome_completo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dashboard.downline = [];
|
||||||
|
|
||||||
// Data of my Downline
|
// Data of my Downline
|
||||||
const arrap = await User.getDownlineByUsername(idapp, aportador_solidario);
|
const arrap = await User.getDownlineByUsername(idapp, aportador_solidario);
|
||||||
dashboard.numpeople_aportador = arrap.length;
|
if (!!arrap)
|
||||||
|
dashboard.numpeople_aportador = arrap.length;
|
||||||
|
|
||||||
dashboard.downline = await User.getDownlineByUsername(idapp, username);
|
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 = {};
|
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.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;
|
return dashboard;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
@@ -920,12 +1052,12 @@ UserSchema.statics.getUsersQualified = async function (idapp, numinvitati) {
|
|||||||
idapp,
|
idapp,
|
||||||
$or: [
|
$or: [
|
||||||
{
|
{
|
||||||
special_req: true
|
'profile.special_req': true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
verified_email: true,
|
verified_email: true,
|
||||||
'profile.teleg_id': { $gt: 0 },
|
'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_and_accepted': shared_consts.ALL_SAW_AND_ACCEPTED,
|
||||||
'profile.saw_zoom_presentation': true,
|
'profile.saw_zoom_presentation': true,
|
||||||
'profile.my_dream': { $exists: 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);
|
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 JSON.stringify(arr)
|
||||||
return arr
|
return arr
|
||||||
});
|
});
|
||||||
@@ -1079,23 +1219,47 @@ UserSchema.statics.findAllDistinctNationality = async function (idapp) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
UserSchema.statics.getUsersRegDaily = function (idapp, nrec) {
|
UserSchema.statics.getUsersRegDaily = function (idapp, nrec) {
|
||||||
|
|
||||||
const query = [
|
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 } }
|
$group: { _id: { $dateToString: { format: "%Y-%m-%d", date: "$date_temp_reg" } }, count: { $sum: 1 } }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
$sort: { _id: 1 }
|
$sort: { _id: 1 }
|
||||||
},
|
|
||||||
{
|
|
||||||
$limit: nrec
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
return query
|
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) {
|
UserSchema.statics.calcRegDaily = async function (idapp) {
|
||||||
const User = this;
|
const User = this;
|
||||||
@@ -1116,22 +1280,31 @@ if (tools.INITDB_FIRSTIME) {
|
|||||||
// UserSchema.index({ surname: 1 });
|
// UserSchema.index({ surname: 1 });
|
||||||
}
|
}
|
||||||
|
|
||||||
async function addUtentiInLista(idapp, mode) {
|
async function addUtentiInLista(idapp, mode, arrusers) {
|
||||||
let num = 0;
|
let num = 0;
|
||||||
for (const rec of arrusers) {
|
for (const rec of arrusers) {
|
||||||
let ok = false;
|
let ok = false;
|
||||||
let qualified = await User.isUserQualified7(idapp, rec.username);
|
let qualified = await User.isUserQualified7(idapp, rec.username);
|
||||||
let numinvitatiattivi = await User.getnumInvitatiAttivi(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) {
|
if (mode === 1) {
|
||||||
// 9 punti qualificati
|
// 9 punti qualificati
|
||||||
ok = qualified && (numinvitatiattivi >= 2);
|
ok = qualified && (numinvitatiattivi >= 2);
|
||||||
} else if (mode === 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
|
// 7 punti qualificati
|
||||||
ok = qualified;
|
ok = qualified;
|
||||||
} else {
|
|
||||||
ok = true;
|
|
||||||
// // almeno telegram ID
|
// // almeno telegram ID
|
||||||
// ok = user.profile.teleg_id > 0;
|
// ok = user.profile.teleg_id > 0;
|
||||||
// } else {
|
// } else {
|
||||||
@@ -1139,24 +1312,37 @@ async function addUtentiInLista(idapp, mode) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ok) {
|
if (ok) {
|
||||||
if (!await ListaIngresso.findByUsername(idapp, rec.username)) {
|
ris = await ListaIngresso.addUserInListaIngresso(idapp, rec.ind_order, rec.lang, false, 1);
|
||||||
let listaingresso = new ListaIngresso({
|
if (!!ris)
|
||||||
username: rec.username,
|
|
||||||
ind_order: rec.ind_order,
|
|
||||||
name: rec.name,
|
|
||||||
surname: rec.surname,
|
|
||||||
idapp,
|
|
||||||
_id: new ObjectID()
|
|
||||||
});
|
|
||||||
|
|
||||||
await listaingresso.save();
|
|
||||||
num++;
|
num++;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 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) {
|
UserSchema.statics.DbOp = async function (idapp, mydata) {
|
||||||
const User = this;
|
const User = this;
|
||||||
try {
|
try {
|
||||||
@@ -1190,26 +1376,21 @@ UserSchema.statics.DbOp = async function (idapp, mydata) {
|
|||||||
|
|
||||||
} else if (mydata.dbop === 'creaLista') {
|
} 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 });
|
arrusers = await User.find({ 'idapp': idapp }).sort({ ind_order: 1 });
|
||||||
let num = 0;
|
let num = 0;
|
||||||
|
|
||||||
num += await addUtentiInLista(idapp, 1);
|
num += await addUtentiInLista(idapp, 1, arrusers);
|
||||||
num += await addUtentiInLista(idapp, 2);
|
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, 3);
|
||||||
// num += await addUtentiInLista(idapp, 4);
|
// num += await addUtentiInLista(idapp, 4);
|
||||||
|
|
||||||
return { num };
|
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) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
|
|||||||
@@ -1,14 +1,36 @@
|
|||||||
var mongoose = require('mongoose');
|
var mongoose = require('mongoose');
|
||||||
const Subscription = mongoose.model('subscribers');
|
const Subscription = mongoose.model('subscribers');
|
||||||
|
|
||||||
|
const { ListaIngresso } = require('../../models/listaingresso');
|
||||||
|
const { User } = require('../../models/user');
|
||||||
|
|
||||||
|
const telegrambot = require('../../telegram/telegrambot');
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
doOtherThingsAfterDeleted: async function (tablename, rec) {
|
doOtherThingsAfterDeleted: async function (tablename, rec) {
|
||||||
try {
|
try {
|
||||||
if (tablename === 'users') {
|
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
|
// Delete also all the subscribers record of this User
|
||||||
return Subscription.deleteOne({ userId: rec._id })
|
return Subscription.deleteOne({ userId: rec._id })
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ const { User } = require('../models/user');
|
|||||||
const mongoose = require('mongoose');
|
const mongoose = require('mongoose');
|
||||||
const Subscription = mongoose.model('subscribers');
|
const Subscription = mongoose.model('subscribers');
|
||||||
|
|
||||||
|
const telegrambot = require('../telegram/telegrambot');
|
||||||
|
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
|
|
||||||
const { ObjectID } = require('mongodb');
|
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;
|
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 { authenticate, authenticate_noerror } = require('../middleware/authenticate');
|
||||||
|
|
||||||
const { ObjectID } = require('mongodb');
|
const { ObjectID } = require('mongodb');
|
||||||
|
const { ListaIngresso } = require('../models/listaingresso');
|
||||||
|
|
||||||
const mongoose = require('mongoose');
|
const mongoose = require('mongoose');
|
||||||
const cfgserver = mongoose.model('cfgserver');
|
const cfgserver = mongoose.model('cfgserver');
|
||||||
@@ -27,6 +28,7 @@ if (!fs.existsSync(folder)) {
|
|||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
|
|
||||||
const { User } = require('../models/user');
|
const { User } = require('../models/user');
|
||||||
|
const { Nave } = require('../models/nave');
|
||||||
const { ExtraList } = require('../models/extralist');
|
const { ExtraList } = require('../models/extralist');
|
||||||
const { Booking } = require('../models/booking');
|
const { Booking } = require('../models/booking');
|
||||||
const { Operator } = require('../models/operator');
|
const { Operator } = require('../models/operator');
|
||||||
@@ -52,6 +54,15 @@ const tools = require('../tools/general');
|
|||||||
const server_constants = require('../tools/server_constants');
|
const server_constants = require('../tools/server_constants');
|
||||||
const actions = require('./api/actions');
|
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) => {
|
router.post(process.env.LINKVERIF_REG, (req, res) => {
|
||||||
const body = _.pick(req.body, ['idapp', 'idlink']);
|
const body = _.pick(req.body, ['idapp', 'idlink']);
|
||||||
@@ -77,7 +88,10 @@ router.post(process.env.LINKVERIF_REG, (req, res) => {
|
|||||||
user.lasttimeonline = new Date();
|
user.lasttimeonline = new Date();
|
||||||
user.save().then(() => {
|
user.save().then(() => {
|
||||||
//console.log("TROVATOOOOOO!");
|
//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) => {
|
router.post(process.env.LINK_REQUEST_NEWPASSWORD, (req, res) => {
|
||||||
const body = _.pick(req.body, ['idapp', 'email']);
|
const body = _.pick(req.body, ['idapp', 'email']);
|
||||||
const idapp = body.idapp;
|
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);
|
console.log("POST " + process.env.LINK_REQUEST_NEWPASSWORD + " idapp= " + idapp + " email = " + email);
|
||||||
|
|
||||||
User.findByEmail(idapp, email).then(async (user) => {
|
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) => {
|
router.post(process.env.LINK_UPDATE_PWD, (req, res) => {
|
||||||
const body = _.pick(req.body, ['idapp', 'email', 'tokenforgot', 'password']);
|
const body = _.pick(req.body, ['idapp', 'email', 'tokenforgot', 'password']);
|
||||||
const idapp = body.idapp;
|
const idapp = body.idapp;
|
||||||
const email = body.email;
|
const email = body.email.toLowerCase().trim();
|
||||||
const tokenforgot = body.tokenforgot;
|
const tokenforgot = body.tokenforgot;
|
||||||
const password = body.password;
|
const password = body.password;
|
||||||
const msg = "Richiesta Nuova Password: idapp= " + idapp + " email = " + email;
|
const msg = "Richiesta Nuova Password: idapp= " + idapp + " email = " + email;
|
||||||
@@ -198,6 +212,10 @@ function getTableByTableName(tablename) {
|
|||||||
mytable = Permission;
|
mytable = Permission;
|
||||||
else if (tablename === 'mailinglist')
|
else if (tablename === 'mailinglist')
|
||||||
mytable = MailingList;
|
mytable = MailingList;
|
||||||
|
else if (tablename === 'navi')
|
||||||
|
mytable = Nave;
|
||||||
|
else if (tablename === 'listaingressos')
|
||||||
|
mytable = ListaIngresso;
|
||||||
|
|
||||||
return mytable
|
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 idapp = req.body.idapp;
|
||||||
const id = req.body.data.id;
|
const id = req.body.data.id;
|
||||||
const idapp = req.body.idapp;
|
const idapp = req.body.idapp;
|
||||||
@@ -265,7 +338,7 @@ router.patch('/chval', authenticate, (req, res) => {
|
|||||||
const mytable = getTableByTableName(mydata.table);
|
const mytable = getTableByTableName(mydata.table);
|
||||||
const fieldsvalue = mydata.fieldsvalue;
|
const fieldsvalue = mydata.fieldsvalue;
|
||||||
|
|
||||||
tools.mylogshow('PATCH CHVAL: ', id, fieldsvalue);
|
// tools.mylogshow('PATCH CHVAL: ', id, fieldsvalue);
|
||||||
|
|
||||||
// If I change my record...
|
// 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)) {
|
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: '' });
|
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);
|
// tools.mylogshow(' REC TO MODIFY: ', rec);
|
||||||
if (!rec) {
|
if (!rec) {
|
||||||
return res.status(404).send();
|
return res.status(404).send();
|
||||||
@@ -285,6 +371,12 @@ router.patch('/chval', authenticate, (req, res) => {
|
|||||||
telegrambot.sendMsgTelegramToTheManagers(idapp, addtext);
|
telegrambot.sendMsgTelegramToTheManagers(idapp, addtext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mydata.table === 'users') {
|
||||||
|
if (camporequisiti) {
|
||||||
|
await checkIfSbloccatiRequisiti(idapp, allData, id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (tools.ModificheConsentite(mydata.table, fieldsvalue)) {
|
if (tools.ModificheConsentite(mydata.table, fieldsvalue)) {
|
||||||
let msg = '';
|
let msg = '';
|
||||||
if (mydata.table === 'users') {
|
if (mydata.table === 'users') {
|
||||||
@@ -294,7 +386,13 @@ router.patch('/chval', authenticate, (req, res) => {
|
|||||||
msg = `Variato l'invitante di ` + rec.name + ' ' + rec.surname + '\nmodificato da ' + req.user.name + ' ' + req.user.surname + ' \n' +
|
msg = `Variato l'invitante di ` + rec.name + ' ' + rec.surname + '\nmodificato da ' + req.user.name + ' ' + req.user.surname + ' \n' +
|
||||||
'Prima: ' + nomecognomeas + ' (' + rec.aportador_solidario + ')\n' +
|
'Prima: ' + nomecognomeas + ' (' + rec.aportador_solidario + ')\n' +
|
||||||
'Dopo: ' + nomecognomenuovo + ' (' + fieldsvalue.aportador_solidario + ') ]';
|
'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 !== '')
|
if (msg !== '')
|
||||||
@@ -351,7 +449,9 @@ router.delete('/delrec/:table/:id', authenticate, (req, res) => {
|
|||||||
|
|
||||||
const mytable = getTableByTableName(tablename);
|
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
|
// If without permissions, exit
|
||||||
return res.status(404).send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' });
|
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);
|
tools.mylog('DELETED ', rec._id);
|
||||||
|
|
||||||
// Do extra things after deleted
|
// Do extra things after deleted
|
||||||
return actions.doOtherThingsAfterDeleted(tablename, rec).then((ris) => {
|
return actions.doOtherThingsAfterDeleted(tablename, rec).then(async (ris) => {
|
||||||
if (ris) {
|
if (ris) {
|
||||||
|
|
||||||
if (notifBot) {
|
if (notifBot) {
|
||||||
@@ -378,7 +478,7 @@ router.delete('/delrec/:table/:id', authenticate, (req, res) => {
|
|||||||
|
|
||||||
addtext = 'Eliminato il Record "' + nomerecord + '" dalla tabella ' + tablename + '\n' +
|
addtext = 'Eliminato il Record "' + nomerecord + '" dalla tabella ' + tablename + '\n' +
|
||||||
'Eseguito da ' + req.user.name + ' ' + req.user.surname + ' \n';
|
'Eseguito da ' + req.user.name + ' ' + req.user.surname + ' \n';
|
||||||
telegrambot.sendMsgTelegramToTheManagers(idapp, addtext);
|
await telegrambot.sendMsgTelegramToTheManagers(idapp, addtext);
|
||||||
}
|
}
|
||||||
|
|
||||||
tools.mylog('DELETED Others things ...');
|
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 is Admin, then send user Lists
|
||||||
if (User.isAdmin(req.user.perm)) {
|
if (User.isAdmin(req.user.perm)) {
|
||||||
// Send UsersList
|
// 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),
|
email_non_verif: await User.getEmailNotVerified(idapp),
|
||||||
num_teleg_attivo: await User.getUsersTelegramAttivo(idapp),
|
num_teleg_attivo: await User.getUsersTelegramAttivo(idapp),
|
||||||
num_teleg_pending: await User.getUsersTelegramPending(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_requisiti: await User.getNumUsersQualified(idapp, 0),
|
||||||
num_modalita_pagamento: await User.getnumPaymentOk(idapp),
|
num_modalita_pagamento: await User.getnumPaymentOk(idapp),
|
||||||
num_part_zoom: await User.getUsersZoom(idapp),
|
num_part_zoom: await User.getUsersZoom(idapp),
|
||||||
num_part_accepted: await User.getSaw_and_Accepted(idapp),
|
num_part_accepted: await User.getSaw_and_Accepted(idapp),
|
||||||
num_users_dream: await User.getUsersDreams(idapp),
|
num_users_dream: await User.getUsersDreams(idapp),
|
||||||
arr_nations: await User.findAllDistinctNationality(idapp),
|
arr_nations: await User.findAllDistinctNationality(idapp),
|
||||||
|
numreg_untilday: await User.calcnumRegUntilDay(idapp),
|
||||||
reg_daily: await User.calcRegDaily(idapp),
|
reg_daily: await User.calcRegDaily(idapp),
|
||||||
lastsreg: await User.getLastUsers(idapp),
|
lastsreg: await User.getLastUsers(idapp),
|
||||||
checkuser: await User.checkUser(idapp, username),
|
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 router = express.Router();
|
||||||
|
|
||||||
const { User } = require('../models/user');
|
const { User } = require('../models/user');
|
||||||
|
const { Nave } = require('../models/nave');
|
||||||
|
const { ListaIngresso } = require('../models/listaingresso');
|
||||||
const { ExtraList } = require('../models/extralist');
|
const { ExtraList } = require('../models/extralist');
|
||||||
|
const { ObjectID } = require('mongodb');
|
||||||
|
|
||||||
const sendemail = require('../sendemail');
|
const sendemail = require('../sendemail');
|
||||||
|
|
||||||
|
const { Settings } = require('../models/settings');
|
||||||
|
|
||||||
const tools = require('../tools/general');
|
const tools = require('../tools/general');
|
||||||
const shared_consts = require('../tools/shared_nodejs');
|
const shared_consts = require('../tools/shared_nodejs');
|
||||||
|
|
||||||
@@ -47,10 +52,10 @@ function getMobileComplete(user) {
|
|||||||
router.post('/', async (req, res) => {
|
router.post('/', async (req, res) => {
|
||||||
tools.mylog("POST /users");
|
tools.mylog("POST /users");
|
||||||
const body = _.pick(req.body, ['email', 'password', 'username', 'name', 'surname', 'idapp', 'keyappid', 'lang', 'profile', 'aportador_solidario']);
|
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();
|
body.email = body.email.toLowerCase();
|
||||||
|
|
||||||
|
const user = new User(body);
|
||||||
|
|
||||||
// tools.mylog("LANG PASSATO = " + user.lang, "IDAPP", user.idapp);
|
// tools.mylog("LANG PASSATO = " + user.lang, "IDAPP", user.idapp);
|
||||||
|
|
||||||
user.linkreg = reg.getlinkregByEmail(body.idapp, body.email, body.username);
|
user.linkreg = reg.getlinkregByEmail(body.idapp, body.email, body.username);
|
||||||
@@ -59,6 +64,10 @@ router.post('/', async (req, res) => {
|
|||||||
user.lasttimeonline = new Date();
|
user.lasttimeonline = new Date();
|
||||||
user.date_reg = new Date();
|
user.date_reg = new Date();
|
||||||
user.date_temp_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;
|
// user.perm = 3;
|
||||||
if (tools.testing()) {
|
if (tools.testing()) {
|
||||||
user.verified_email = true;
|
user.verified_email = true;
|
||||||
@@ -147,7 +156,7 @@ router.post('/', async (req, res) => {
|
|||||||
msgseconda += 'QUARTA';
|
msgseconda += 'QUARTA';
|
||||||
|
|
||||||
msgseconda += ' UTENZA di ' + recorig.name + ' ' + recorig.surname + ' (' + recorig.username + ') : ' + user.name + ' ' + user.surname + ' (' + user.username + ') ';
|
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 + ') ' +
|
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;
|
'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: '' });
|
res.status(400).send({ code: server_constants.RIS_CODE_USER_NOT_THIS_APORTADOR, msg: '' });
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -173,8 +182,11 @@ router.post('/', async (req, res) => {
|
|||||||
if (!recextra) {
|
if (!recextra) {
|
||||||
const msg = 'Utente non trovato: ' + user.name + ' ' + user.surname + ' ' + user.profile.nationality + ' ' + user.profile.cell + ' email: ' + user.email + ' username: ' + user.username;
|
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);
|
console.log('Utente non trovato; ', msg);
|
||||||
telegrambot.sendMsgTelegramToTheManagers(user.idapp, msg);
|
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.' });
|
res.status(400).send({
|
||||||
|
code: server_constants.RIS_CODE_USER_EXTRALIST_NOTFOUND,
|
||||||
|
msg: 'Controlla se il numero ' + user.profile.cell + ' è corretto.'
|
||||||
|
});
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
user.ind_order = recextra.ind_order;
|
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;
|
var username = req.params.username;
|
||||||
const idapp = req.params.idapp;
|
const idapp = req.params.idapp;
|
||||||
|
|
||||||
User.findByUsername(idapp, username, false).then((user) => {
|
await User.findByUsername(idapp, username, false).then((user) => {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(404).send();
|
return res.status(404).send();
|
||||||
}
|
}
|
||||||
@@ -397,17 +409,130 @@ router.post('/import_extralist', async (req, res) => {
|
|||||||
res.send(ris);
|
res.send(ris);
|
||||||
});
|
});
|
||||||
|
|
||||||
router.post('/dbop', async (req, res) => {
|
router.post('/dbop', authenticate, async (req, res) => {
|
||||||
|
|
||||||
const mydata = req.body.mydata;
|
const mydata = req.body.mydata;
|
||||||
idapp = req.body.idapp;
|
idapp = req.body.idapp;
|
||||||
locale = req.body.locale;
|
locale = req.body.locale;
|
||||||
|
|
||||||
const ris = await User.DbOp(idapp, mydata);
|
let ris = await User.DbOp(idapp, mydata);
|
||||||
console.log('ris', ris);
|
|
||||||
|
|
||||||
res.send(ris);
|
if (mydata.dbop === 'creaNave') {
|
||||||
});
|
const num = await Nave.generaNave(idapp, mydata);
|
||||||
|
ris = { num };
|
||||||
|
} else if (mydata.dbop === 'delNavi') {
|
||||||
|
await Nave.setRiga(idapp, 1);
|
||||||
|
await Nave.setCol(idapp, 1);
|
||||||
|
const num = await Nave.remove({ idapp });
|
||||||
|
ris = { num };
|
||||||
|
} else if (mydata.dbop === 'delNaviNoStarted') {
|
||||||
|
await Nave.setRiga(idapp, 1);
|
||||||
|
await Nave.setCol(idapp, 1);
|
||||||
|
const num = await Nave.remove({ idapp, date_start : { $gte: tools.IncDateNow(-1000 * 60 * 60 * 24 * 3) } });
|
||||||
|
ris = { num };
|
||||||
|
} else if (mydata.dbop === 'visuListaNave') {
|
||||||
|
const mystr = await Nave.showListaOrd(idapp);
|
||||||
|
ris = { mystr };
|
||||||
|
} else if (mydata.dbop === 'checkInserimentiUtentiInNave') {
|
||||||
|
const mystr = await Nave.checkIfDevoAggiungereInNave(idapp);
|
||||||
|
ris = { mystr };
|
||||||
|
} else if (mydata.dbop === 'visuListaIngresso') {
|
||||||
|
const mystr = await ListaIngresso.showListaOrd(idapp);
|
||||||
|
ris = { mystr };
|
||||||
|
} else if (mydata.dbop === 'initListaIngresso') {
|
||||||
|
const num = await ListaIngresso.updateMany({ idapp }, { $set: { added: false } });
|
||||||
|
|
||||||
|
ris = { num };
|
||||||
|
} else if (mydata.dbop === 'ImpostaATuttiPaypal') {
|
||||||
|
const listautenti = await User.find({ idapp });
|
||||||
|
let num = 0;
|
||||||
|
for (let rec of listautenti) {
|
||||||
|
if (!rec._doc.profile.paymenttypes.includes('paypal')) {
|
||||||
|
rec._doc.profile.paymenttypes = [...rec._doc.profile.paymenttypes, 'paypal'];
|
||||||
|
const user = await User.findOneAndUpdate({ _id: rec._id }, { $set: { 'profile.paymenttypes': rec._doc.profile.paymenttypes } });
|
||||||
|
// await rec.save();
|
||||||
|
num++;
|
||||||
|
}
|
||||||
|
// const num = await User.f({ idapp }, { $set: { 'profile: false } });
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ris = { num };
|
||||||
|
} else if (mydata.dbop === 'numtessUno') {
|
||||||
|
const listanavi = await ListaIngresso.find({ idapp });
|
||||||
|
let num = 0;
|
||||||
|
for (let rec of listanavi) {
|
||||||
|
if (!rec._doc.num_tess) {
|
||||||
|
rec._doc.num_tess = 1;
|
||||||
|
const risu = await ListaIngresso.findOneAndUpdate({ _id: rec._id }, { $set: { num_tess: rec._doc.num_tess } }, { new: false });
|
||||||
|
// await rec.save();
|
||||||
|
if (!!risu)
|
||||||
|
num++;
|
||||||
|
}
|
||||||
|
// const num = await User.f({ idapp }, { $set: { 'profile: false } });
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ris = { num };
|
||||||
|
} else if (mydata.dbop === 'creaUtentiTest') {
|
||||||
|
|
||||||
|
let num = 0;
|
||||||
|
lastrec = await User.find({ idapp }).sort({ _id: -1 }).limit(1);
|
||||||
|
for (let ind = 0; ind < 1; ind++) {
|
||||||
|
let myuser = new User();
|
||||||
|
myuser._id = new ObjectID();
|
||||||
|
myuser.ind_order = lastrec[0].ind_order + ind + 1;
|
||||||
|
myuser.idapp = idapp;
|
||||||
|
myuser.password = "$2a$12$DEaX1h5saTUVC43f7kubyOAlah1xHDgqQTfSIux0.RFDT9WGbyCaG";
|
||||||
|
myuser.lang = 'it';
|
||||||
|
myuser.email = "miaemail@email.it";
|
||||||
|
myuser.name = 'U' + myuser.ind_order;
|
||||||
|
myuser.verified_email = true;
|
||||||
|
if (myuser.ind_order < 2)
|
||||||
|
myuser.perm = "3";
|
||||||
|
myuser.username = "Userna_" + myuser.name;
|
||||||
|
myuser.profile.special_req = true;
|
||||||
|
await myuser.save();
|
||||||
|
num++;
|
||||||
|
}
|
||||||
|
|
||||||
|
ris = { num };
|
||||||
|
} else if (mydata.dbop === 'visuPlacca') {
|
||||||
|
const placca = await Nave.getPlaccaPerDonatore(idapp, parseInt(mydata.riga), parseInt(mydata.col));
|
||||||
|
|
||||||
|
telegrambot.sendMsgTelegramToTheAdmin(idapp, placca);
|
||||||
|
|
||||||
|
ris = { placca };
|
||||||
|
} else if (mydata.dbop === 'visuNave') {
|
||||||
|
const mystr = await Nave.getNavePos(idapp, parseInt(mydata.riga), parseInt(mydata.col));
|
||||||
|
|
||||||
|
const visu_nave_Bot = await Settings.getValDbSettings(idapp, 'VISU_NAVE_BOT');
|
||||||
|
if (visu_nave_Bot)
|
||||||
|
telegrambot.sendMsgTelegramToTheAdmin(idapp, mystr);
|
||||||
|
|
||||||
|
ris = { mystr };
|
||||||
|
} else if (mydata.dbop === 'getnavibyuser') {
|
||||||
|
|
||||||
|
let arrnavi = null;
|
||||||
|
|
||||||
|
const user = await User.getUserShortDataByUsername(idapp, mydata.username);
|
||||||
|
if (user) {
|
||||||
|
arrnavi = await Nave.getArrPosizioniByIndOrder(idapp, user.ind_order);
|
||||||
|
|
||||||
|
for (let mynave of arrnavi) {
|
||||||
|
mynave._doc.rec = await Nave.getNaveByRigaCol(idapp, mynave.riga, mynave.col);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ris = { data: arrnavi };
|
||||||
|
}
|
||||||
|
|
||||||
|
// console.log('ris', ris);
|
||||||
|
|
||||||
|
res.send(ris);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
module.exports = router;
|
module.exports = router;
|
||||||
|
|||||||
@@ -496,7 +496,7 @@ module.exports = {
|
|||||||
const msginizio = 'INIZIO - sendEmail_Newsletter_Events: ' + tools.getNomeAppByIdApp(idapp);
|
const msginizio = 'INIZIO - sendEmail_Newsletter_Events: ' + tools.getNomeAppByIdApp(idapp);
|
||||||
console.log(msginizio);
|
console.log(msginizio);
|
||||||
|
|
||||||
telegrambot.sendMsgTelegramToTheManagers(idapp, msginizio);
|
await telegrambot.sendMsgTelegramToTheManagers(idapp, msginizio);
|
||||||
|
|
||||||
//++Todo Extract List Email to send
|
//++Todo Extract List Email to send
|
||||||
const userstosend = await MailingList.findAllIdAppSubscribed(idapp);
|
const userstosend = await MailingList.findAllIdAppSubscribed(idapp);
|
||||||
@@ -539,7 +539,7 @@ module.exports = {
|
|||||||
if (!activate) {
|
if (!activate) {
|
||||||
// Invio Newsletter Abortito!
|
// Invio Newsletter Abortito!
|
||||||
mynewsrec.error_job = 'Invio Newsletter abortito alle ore ' + new Date().toDateString() + new Date().toTimeString();
|
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 mynewsrec.save();
|
||||||
await Newstosent.processingJob(id_newstosent, false);
|
await Newstosent.processingJob(id_newstosent, false);
|
||||||
console.log('*** L\'Invio della Newsletter è stato fermato ! ');
|
console.log('*** L\'Invio della Newsletter è stato fermato ! ');
|
||||||
@@ -567,7 +567,7 @@ module.exports = {
|
|||||||
|
|
||||||
if ((mynewsrec.numemail_sent % 50) === 0) {
|
if ((mynewsrec.numemail_sent % 50) === 0) {
|
||||||
const msgproc = 'In Corso ' + mynewsrec.numemail_sent + ' / ' + mynewsrec.numemail_tot + ' Email inviate...';
|
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.
|
//Put the result in the database, to check if is sent or not.
|
||||||
@@ -591,7 +591,7 @@ module.exports = {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
const msgerr = 'Error LOOP sendEmail_Newsletter_Events: ' + e;
|
const msgerr = 'Error LOOP sendEmail_Newsletter_Events: ' + e;
|
||||||
console.error(msgerr);
|
console.error(msgerr);
|
||||||
telegrambot.sendMsgTelegramToTheManagers(idapp, msgerr);
|
await telegrambot.sendMsgTelegramToTheManagers(idapp, msgerr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -601,7 +601,7 @@ module.exports = {
|
|||||||
msgfine += mynewsrec.numemail_sent + ' Email inviate';
|
msgfine += mynewsrec.numemail_sent + ' Email inviate';
|
||||||
console.log(msgfine);
|
console.log(msgfine);
|
||||||
|
|
||||||
telegrambot.sendMsgTelegramToTheManagers(idapp, msgfine);
|
await telegrambot.sendMsgTelegramToTheManagers(idapp, msgfine);
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
||||||
@@ -610,7 +610,7 @@ module.exports = {
|
|||||||
if (!activate) {
|
if (!activate) {
|
||||||
// Invio Newsletter Abortito!
|
// Invio Newsletter Abortito!
|
||||||
mynewsrec.error_job = 'Invio Newsletter abortito alle ore ' + new Date().toDateString() + new Date().toTimeString();
|
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 mynewsrec.save();
|
||||||
await Newstosent.processingJob(id_newstosent, false);
|
await Newstosent.processingJob(id_newstosent, false);
|
||||||
console.log('*** L\'Invio della Newsletter è stato fermato ! ');
|
console.log('*** L\'Invio della Newsletter è stato fermato ! ');
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ const printf = require('util').format;
|
|||||||
|
|
||||||
const { User } = require('../models/user');
|
const { User } = require('../models/user');
|
||||||
const { CalZoom } = require('../models/calzoom');
|
const { CalZoom } = require('../models/calzoom');
|
||||||
|
const { Nave } = require('../models/nave');
|
||||||
const shared_consts = require('../tools/shared_nodejs');
|
const shared_consts = require('../tools/shared_nodejs');
|
||||||
|
|
||||||
const emoji = require('node-emoji');
|
const emoji = require('node-emoji');
|
||||||
@@ -48,6 +49,7 @@ const emo = {
|
|||||||
YELLOW_HEART: emoji.get('yellow_heart'),
|
YELLOW_HEART: emoji.get('yellow_heart'),
|
||||||
PURPLE_HEART: emoji.get('purple_heart'),
|
PURPLE_HEART: emoji.get('purple_heart'),
|
||||||
GIFT_HEART: emoji.get('gift_heart'),
|
GIFT_HEART: emoji.get('gift_heart'),
|
||||||
|
GIFT: emoji.get('gift'),
|
||||||
ROBOT_FACE: emoji.get('robot_face'),
|
ROBOT_FACE: emoji.get('robot_face'),
|
||||||
ADMIN: emoji.get('information_desk_person'),
|
ADMIN: emoji.get('information_desk_person'),
|
||||||
MALE: emoji.get('man-tipping-hand'),
|
MALE: emoji.get('man-tipping-hand'),
|
||||||
@@ -59,7 +61,9 @@ const emo = {
|
|||||||
|
|
||||||
|
|
||||||
MsgBot = {
|
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'],
|
CI_SEI: ['ci sei', 'c\'è qualcuno', 'c\'è nessuno'],
|
||||||
CHI_SONO_IO: ['chi sono io', 'chi sono'],
|
CHI_SONO_IO: ['chi sono io', 'chi sono'],
|
||||||
COME_STAI: ['tutto bene', 'come stai', 'come stai', 'come va', 'come butta', 'come va oggi'],
|
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'],
|
NON_TROO_INVITATI: ['non trovo invitati', 'non riesco a trovare invitati'],
|
||||||
PAROLACCE: ['stronz', 'fanculo'],
|
PAROLACCE: ['stronz', 'fanculo'],
|
||||||
COME_SI_CHIAMA: ['come si chiama'],
|
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'],
|
LAVAGNA: ['lavagna', 'Lavagna', 'LAVAGNA'],
|
||||||
SEI_LIBERO: ['sei liber', 'sei sposat', 'sei fidanzat', 'sei single'],
|
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'],
|
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')
|
return emoji.get('height')
|
||||||
} else if (number === 9) {
|
} else if (number === 9) {
|
||||||
return emoji.get('nine')
|
return emoji.get('nine')
|
||||||
|
} else {
|
||||||
|
return number;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
strNave = "Nave";
|
||||||
|
|
||||||
|
|
||||||
const Menu = {
|
const Menu = {
|
||||||
ACCEDI: emo.PERSON + ' Accedi',
|
ACCEDI: emo.PERSON + ' Accedi',
|
||||||
@@ -138,22 +146,36 @@ const Menu = {
|
|||||||
ADMIN: emoji.get('information_desk_person') + ' Admin',
|
ADMIN: emoji.get('information_desk_person') + ' Admin',
|
||||||
ALTRO: emoji.get('newspaper') + ' Altro',
|
ALTRO: emoji.get('newspaper') + ' Altro',
|
||||||
MSGATUTTI: emoji.get('incoming_envelope') + ' Invia a TUTTI',
|
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',
|
MSGSTAFF: emoji.get('incoming_envelope') + ' Invia a STAFF',
|
||||||
INDIETRO: emoji.get('back') + ' Indietro',
|
INDIETRO: emoji.get('back') + ' Indietro',
|
||||||
SI: emoji.get('thumbsup') + ' SI',
|
SI: emoji.get('thumbsup') + ' SI',
|
||||||
NO: emoji.get('thumbsdown') + ' NO',
|
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',
|
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 MenuNoLogin = [[Menu.ACCEDI], [Menu.ASSISTENZA]];
|
||||||
const MenuStandard = [[Menu.LAVAGNA, Menu.LINK_CONDIVIDERE], [Menu.ZOOM, 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 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 MenuYes = [[Menu.MSGSTAFF, Menu.INDIETRO], ['', '']];
|
||||||
|
const MenuChat = [[Menu.ESCI_DA_CHAT, Menu.INDIETRO]];
|
||||||
|
|
||||||
const Sex = {
|
const Sex = {
|
||||||
MALE: 1,
|
MALE: 1,
|
||||||
@@ -168,6 +190,16 @@ const Status = {
|
|||||||
WAITFOR_RISPOSTA: 110,
|
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 = {
|
const StatusMSGALL = {
|
||||||
NONE: 0,
|
NONE: 0,
|
||||||
ASK: 1,
|
ASK: 1,
|
||||||
@@ -178,7 +210,7 @@ const txt = {
|
|||||||
MSG_SCEGLI_MENU: emoji.get('dizzy') + ' Scegli una voce di menu:' + emoji.get('dizzy'),
|
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_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: '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_ERRORE_USERNAME_ANNULLA: 'Inserimento Annullato. Riprovare',
|
||||||
MSG_OPERAZ_ANNULLATA: 'Operazione Annullata',
|
MSG_OPERAZ_ANNULLATA: 'Operazione Annullata',
|
||||||
MSG_ERRORE_VERIFY_CODE_MAXLEN: 'Attenzione! Devi inserire solo il codice a 6 cifre',
|
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_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_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_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',
|
MSG_MSG_INCORSO: emoji.get('envelope') + ' messaggi in corso... Inviati attualmente',
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -206,6 +239,10 @@ module.exports = {
|
|||||||
REGISTRATION: 1
|
REGISTRATION: 1
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getCiao: function (idapp, username, lang) {
|
||||||
|
return tools.gettranslate('CIAO', lang) + ' ' + username + '!\n';
|
||||||
|
},
|
||||||
|
|
||||||
notifyToTelegram: async function (phase, mylocalsconf) {
|
notifyToTelegram: async function (phase, mylocalsconf) {
|
||||||
let userdest = mylocalsconf.user.aportador_solidario;
|
let userdest = mylocalsconf.user.aportador_solidario;
|
||||||
let NameFrom = `${mylocalsconf.user.name} ${mylocalsconf.user.surname}`;
|
let NameFrom = `${mylocalsconf.user.name} ${mylocalsconf.user.surname}`;
|
||||||
@@ -243,9 +280,11 @@ module.exports = {
|
|||||||
const usersmanagers = await User.getusersManagers(idapp);
|
const usersmanagers = await User.getusersManagers(idapp);
|
||||||
// console.log('usersmanagers', usersmanagers);
|
// console.log('usersmanagers', usersmanagers);
|
||||||
|
|
||||||
|
tools.writeManagersLog(text);
|
||||||
|
|
||||||
if (usersmanagers) {
|
if (usersmanagers) {
|
||||||
for (const rec of 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)
|
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) {
|
sendMsgTelegramToTheAdmin: async function (idapp, text) {
|
||||||
const usersmanagers = await User.getusersManagers(idapp);
|
const usersmanagers = await User.getusersManagers(idapp);
|
||||||
|
|
||||||
if (usersmanagers) {
|
if (usersmanagers) {
|
||||||
for (const rec of usersmanagers) {
|
for (const rec of usersmanagers) {
|
||||||
if (User.isAdmin(rec.perm)) {
|
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)
|
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 teleg_id = await User.TelegIdByUsername(idapp, username);
|
||||||
const cl = getclTelegByidapp(idapp);
|
const cl = getclTelegByidapp(idapp);
|
||||||
if (cl && teleg_id) {
|
if (cl && teleg_id) {
|
||||||
await cl.sendMsg(teleg_id, text)
|
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)
|
if (!idtelegram)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -297,7 +400,7 @@ module.exports = {
|
|||||||
if (cl && idtelegram) {
|
if (cl && idtelegram) {
|
||||||
let myform = null;
|
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) {
|
async function sendMsgTelegramToTheAdmin(idapp, text, msg) {
|
||||||
const usersmanagers = await User.getusersManagers(idapp);
|
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);
|
tools.writeEventsLog(text);
|
||||||
|
|
||||||
if (usersmanagers) {
|
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 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;
|
text = emo.ROBOT_FACE + '[BOT-STAFF]' + emo.ADMIN + ': Da ' + msg.chat.first_name + ' ' + msg.chat.last_name + ' (' + username + '): \n' + text;
|
||||||
tools.writeEventsLog(text);
|
tools.writeEventsLog(text);
|
||||||
@@ -341,7 +466,7 @@ async function local_sendMsgTelegramToTheManagers(idapp, text, msg) {
|
|||||||
const idtelegram = rec.profile.teleg_id;
|
const idtelegram = rec.profile.teleg_id;
|
||||||
const cl = getclTelegByidapp(idapp);
|
const cl = getclTelegByidapp(idapp);
|
||||||
if (cl && idtelegram) {
|
if (cl && idtelegram) {
|
||||||
await cl.sendMsg(idtelegram, text)
|
await cl.sendMsg(idtelegram, text, undefined, undefined, undefined, undefined, true)
|
||||||
}
|
}
|
||||||
await tools.snooze(300)
|
await tools.snooze(300)
|
||||||
}
|
}
|
||||||
@@ -489,10 +614,10 @@ class Telegram {
|
|||||||
contastiera = true;
|
contastiera = true;
|
||||||
} else if (MsgBot.UGUALE.includes(testo)) {
|
} else if (MsgBot.UGUALE.includes(testo)) {
|
||||||
risp = testo;
|
risp = testo;
|
||||||
} else if (MsgBot.CHI_E_VISTAR.includes(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;
|
// 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)) {
|
// } 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;
|
// 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)) {
|
} else if (MsgBot.COME_SI_CHIAMA.includes(testo)) {
|
||||||
risp = 'Eh non te lo posso dire! ' + emo.JOY;
|
risp = 'Eh non te lo posso dire! ' + emo.JOY;
|
||||||
} else if (MsgBot.GRAZIE.includes(testo.replace('!', ''))) {
|
} 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;
|
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) {
|
} else if (MsgBot.HAHA.find((rec) => testo.indexOf(rec) > -1) && testo.length < 8) {
|
||||||
risp = emo.JOY + emo.JOY + emo.JOY;
|
risp = emo.JOY + emo.JOY + emo.JOY;
|
||||||
} else {
|
} else if (testo.length > 1) {
|
||||||
noanswer = true;
|
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 = '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 !';
|
// 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.numdomande > 3 && rec.msgcodeprec === '') {
|
||||||
if (rec.user) {
|
// if (rec.user) {
|
||||||
const dashboard = await User.getDashboard(this.idapp, rec.user.aportador_solidario, rec.user.username, rec.user.aportador_solidario_name_surname);
|
// 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 ';
|
// risp += '\n\nNel frattempo ti ricordo che ';
|
||||||
if (dashboard.myself.numinvitati === 1)
|
// if (dashboard.myself.numinvitati === 1)
|
||||||
risp += 'hai solo ' + dashboard.myself.numinvitati + ' invitato!';
|
// risp += 'hai solo ' + dashboard.myself.numinvitati + ' invitato!';
|
||||||
else if (dashboard.myself.numinvitati === 0)
|
// else if (dashboard.myself.numinvitati === 0)
|
||||||
risp += 'ancora non hai portato nessun Invitato! ' + emo.LEFT_FACING_FIST;
|
// risp += 'ancora non hai portato nessun Invitato! ' + emo.LEFT_FACING_FIST;
|
||||||
else if (dashboard.myself.numinvitati > 2)
|
// else if (dashboard.myself.numinvitati > 2)
|
||||||
risp += 'hai ' + dashboard.myself.numinvitati + ' invitati !' + emo.STARS;
|
// risp += 'hai ' + dashboard.myself.numinvitati + ' invitati !' + emo.STARS;
|
||||||
|
//
|
||||||
risp += '\n\nSei già entrato nella Chat di EMPOWER?';
|
// risp += '\n\nSei già entrato nella Chat di EMPOWER?';
|
||||||
rec.msgcodeprec = MsgBot.CHAT_EMPOWER;
|
// rec.msgcodeprec = MsgBot.CHAT_EMPOWER;
|
||||||
rec.statusmsg = Status.WAITFOR_RISPOSTA;
|
// rec.statusmsg = Status.WAITFOR_RISPOSTA;
|
||||||
rec.numdomande = 0;
|
// rec.numdomande = 0;
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
if (risp !== '') {
|
if (risp !== '') {
|
||||||
@@ -607,8 +732,27 @@ class Telegram {
|
|||||||
if (msg.text === undefined)
|
if (msg.text === undefined)
|
||||||
return;
|
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)) {
|
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) {
|
} else if (msg.text === Menu.ACCEDI) {
|
||||||
await this.menuAccedi(msg)
|
await this.menuAccedi(msg)
|
||||||
} else if (msg.text === Menu.LINK_CONDIVIDERE) {
|
} else if (msg.text === Menu.LINK_CONDIVIDERE) {
|
||||||
@@ -621,8 +765,21 @@ class Telegram {
|
|||||||
await this.menumsgAll(msg)
|
await this.menumsgAll(msg)
|
||||||
} else if (msg.text === Menu.MSGSTAFF) {
|
} else if (msg.text === Menu.MSGSTAFF) {
|
||||||
await this.menumsgStaff(msg)
|
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) {
|
} else if (msg.text === Menu.INDIETRO) {
|
||||||
await this.msgScegliMenu(msg);
|
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 {
|
} else {
|
||||||
await this.isMenuNotVerified(rec, msg);
|
await this.isMenuNotVerified(rec, msg);
|
||||||
}
|
}
|
||||||
@@ -747,16 +904,16 @@ class Telegram {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (dashboard.downnotreg) {
|
// if (dashboard.downnotreg) {
|
||||||
if (dashboard.downnotreg.length > 0) {
|
// if (dashboard.downnotreg.length > 0) {
|
||||||
mystr += '\n' + emo.QUESTION_MARK + ' ' + tools.get__('NONREG', msg) + ':' + emo.QUESTION_MARK + '\n';
|
// mystr += '\n' + emo.QUESTION_MARK + ' ' + tools.get__('NONREG', msg) + ':' + emo.QUESTION_MARK + '\n';
|
||||||
let index = 1;
|
// let index = 1;
|
||||||
dashboard.downnotreg.forEach((user) => {
|
// dashboard.downnotreg.forEach((user) => {
|
||||||
mystr += ` - ${index}°: ${user.name} ${user.surname} (tel: ${user.cell_complete})\n`;
|
// mystr += ` - ${index}°: ${user.name} ${user.surname} (tel: ${user.cell_complete})\n`;
|
||||||
index++;
|
// index++;
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (tuttie9)
|
if (tuttie9)
|
||||||
mystr += '\n' + printf(tools.get__('INFO_LAVAGNA_SITO', msg));
|
mystr += '\n' + printf(tools.get__('INFO_LAVAGNA_SITO', msg));
|
||||||
@@ -768,7 +925,6 @@ class Telegram {
|
|||||||
|
|
||||||
async menuLavagna(msg) {
|
async menuLavagna(msg) {
|
||||||
const rec = this.getRecInMem(msg);
|
const rec = this.getRecInMem(msg);
|
||||||
// console.log('rec', rec);
|
|
||||||
let mystr = '';
|
let mystr = '';
|
||||||
if (rec.user) {
|
if (rec.user) {
|
||||||
mystr = await this.getLavagnaByUser(rec.user, msg)
|
mystr = await this.getLavagnaByUser(rec.user, msg)
|
||||||
@@ -778,6 +934,30 @@ class Telegram {
|
|||||||
await this.sendMsg(msg.chat.id, mystr);
|
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) {
|
async menuLinkCondividere(msg) {
|
||||||
const rec = this.getRecInMem(msg);
|
const rec = this.getRecInMem(msg);
|
||||||
@@ -823,7 +1003,7 @@ class Telegram {
|
|||||||
|
|
||||||
|
|
||||||
if (iniziata) {
|
if (iniziata) {
|
||||||
mystr += emo.CHECK_VERDE + ' ' + tools.get__('ZOOM_INIZIATO') + ' ' + emo.CHECK_VERDE + '\n';
|
mystr += emo.CHECK_VERDE + ' ' + tools.get__('ZOOM_INIZIATO') + ' ' + emo.CHECK_VERDE + '\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
mystr += `${emo.EYES} ${tools.getstrDateTimeShort(evento.date_start)} ${emo.EYES}`;
|
mystr += `${emo.EYES} ${tools.getstrDateTimeShort(evento.date_start)} ${emo.EYES}`;
|
||||||
@@ -859,23 +1039,71 @@ class Telegram {
|
|||||||
this.sendMsg(msg.chat.id, mystr, MenuAdmin);
|
this.sendMsg(msg.chat.id, mystr, MenuAdmin);
|
||||||
}
|
}
|
||||||
|
|
||||||
async menumsgAll(msg) {
|
getDestinStr(msg, destin, rec) {
|
||||||
const rec = this.getRecInMem(msg);
|
if (destin === Destin.TUTTI)
|
||||||
if (rec.user) {
|
return 'TUTTI';
|
||||||
const mystr = 'Scrivi qui un Messaggio da inviare a TUTTI:';
|
else if (destin === Destin.STAFF)
|
||||||
rec.msgall_status = StatusMSGALL.ASK;
|
return 'STAFF';
|
||||||
rec.msgall_staff = false;
|
else if (destin === Destin.NO_7_REQ)
|
||||||
await this.sendMsg(msg.chat.id, mystr, MenuAdmin);
|
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);
|
||||||
|
return rec.msgall_username_specifico
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
async menumsgAll(msg) {
|
||||||
|
await this.menumsgGenerico(msg, Destin.TUTTI);
|
||||||
}
|
}
|
||||||
|
|
||||||
async menumsgStaff(msg) {
|
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);
|
const rec = this.getRecInMem(msg);
|
||||||
if (rec.user) {
|
if (rec.user) {
|
||||||
const mystr = 'Scrivi qui un Messaggio da inviare allo STAFF:';
|
|
||||||
rec.msgall_status = StatusMSGALL.ASK;
|
rec.msgall_status = StatusMSGALL.ASK;
|
||||||
rec.msgall_staff = true;
|
rec.msgall_achi = dest;
|
||||||
await this.sendMsg(msg.chat.id, mystr, MenuAdmin);
|
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);
|
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) {
|
deleteRecInMem(msg) {
|
||||||
this.arrUsers = this.arrUsers.filter((rec) => rec.id !== msg.from.id);
|
this.arrUsers = this.arrUsers.filter((rec) => rec.id !== msg.from.id);
|
||||||
}
|
}
|
||||||
@@ -925,7 +1161,8 @@ class Telegram {
|
|||||||
async getUser(msg, rec, conmsg) {
|
async getUser(msg, rec, conmsg) {
|
||||||
let myid = 0;
|
let myid = 0;
|
||||||
let ok = false;
|
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 (!user) {
|
||||||
if (conmsg) {
|
if (conmsg) {
|
||||||
await this.sendMsg(msg.from.id, txt.MSG_ERRORE_USERNAME_NOT_FOUND, MenuNoLogin);
|
await this.sendMsg(msg.from.id, txt.MSG_ERRORE_USERNAME_NOT_FOUND, MenuNoLogin);
|
||||||
@@ -1029,54 +1266,143 @@ class Telegram {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async sendMsgToAll(rec, msg, texttosend, solostaff) {
|
async sistemaRecDest(rec, msg) {
|
||||||
if (texttosend.length < 3) {
|
let recdest = this.getRecByUsername(rec.msgall_username_specifico);
|
||||||
} else {
|
if (!recdest) {
|
||||||
const usersall = await User.getUsersTelegALL(rec.user.idapp);
|
const userdest = await User.findByUsername(this.idapp, rec.msgall_username_specifico);
|
||||||
|
if (!!userdest) {
|
||||||
let nummsgsent = 0;
|
let msgdest = msg;
|
||||||
|
msgdest.from.id = userdest.profile.teleg_id;
|
||||||
let textdainviare = "";
|
await this.createIfNotExist(msgdest);
|
||||||
|
recdest = this.getRecByUsername(rec.msgall_username_specifico);
|
||||||
if (texttosend === Menu.ZOOM) {
|
|
||||||
texttosend = await this.getNextZoom()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (usersall) {
|
|
||||||
if (solostaff)
|
|
||||||
tools.writeEventsLog('[MSG_A_STAFF]: ' + texttosend);
|
|
||||||
else
|
|
||||||
tools.writeEventsLog('[MSG_A_TUTTI]: ' + texttosend);
|
|
||||||
|
|
||||||
for (const utente of usersall) {
|
|
||||||
|
|
||||||
if (texttosend === Menu.LAVAGNA) {
|
|
||||||
textdainviare = await this.getLavagnaByUser(utente, msg);
|
|
||||||
} else {
|
|
||||||
textdainviare = texttosend;
|
|
||||||
}
|
|
||||||
let invia = true;
|
|
||||||
if (solostaff) {
|
|
||||||
invia = User.isManager(utente.perm)
|
|
||||||
}
|
|
||||||
if (invia) {
|
|
||||||
await this.sendMsg(utente.profile.teleg_id, textdainviare);
|
|
||||||
nummsgsent++;
|
|
||||||
await tools.snooze(300)
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((nummsgsent % 100) === 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 this.sendMsg(msg.chat.id, nummsgsent + ' ' + getstr(msg.from.language_code, txt.MSG_MSG_SENT));
|
|
||||||
}
|
}
|
||||||
rec.start_write_msgall = false;
|
if (!!recdest) {
|
||||||
|
recdest.msgall_username_specifico = rec.username_bo;
|
||||||
|
} else {
|
||||||
|
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 (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 = 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);
|
||||||
|
}
|
||||||
|
await tools.snooze(300)
|
||||||
|
}
|
||||||
|
nummsgsent++;
|
||||||
|
|
||||||
|
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 });
|
||||||
|
await tools.snooze(300)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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) {
|
selectMenuHelp(msg) {
|
||||||
return ((msg.text === Menu.INFO) || (msg.text === Menu.ASSISTENZA))
|
return ((msg.text === Menu.INFO) || (msg.text === Menu.ASSISTENZA))
|
||||||
}
|
}
|
||||||
@@ -1106,8 +1432,7 @@ class Telegram {
|
|||||||
if (rec.msgall_status === StatusMSGALL.CONFIRM) {
|
if (rec.msgall_status === StatusMSGALL.CONFIRM) {
|
||||||
if (msg.text === Menu.SI) {
|
if (msg.text === Menu.SI) {
|
||||||
// Take msg to send to ALL
|
// Take msg to send to ALL
|
||||||
await
|
await this.sendMsgToAll(rec, msg, rec.msgtosent, rec.msgall_achi)
|
||||||
this.sendMsgToAll(rec, msg, rec.msgtosent, rec.msgall_staff)
|
|
||||||
} else {
|
} else {
|
||||||
this.sendMsg(msg.chat.id, txt.MSG_OPERAZ_ANNULLATA);
|
this.sendMsg(msg.chat.id, txt.MSG_OPERAZ_ANNULLATA);
|
||||||
}
|
}
|
||||||
@@ -1117,10 +1442,20 @@ class Telegram {
|
|||||||
if (msg.text !== Menu.INDIETRO) {
|
if (msg.text !== Menu.INDIETRO) {
|
||||||
rec.msgtosent = msg.text;
|
rec.msgtosent = msg.text;
|
||||||
rec.msgall_status = StatusMSGALL.CONFIRM;
|
rec.msgall_status = StatusMSGALL.CONFIRM;
|
||||||
let achi = "TUTTI";
|
const cmd = rec.msgtosent.toLowerCase();
|
||||||
if (rec.msgall_staff)
|
let achi = this.getDestinStr(msg, rec.msgall_achi, rec);
|
||||||
achi = "STAFF";
|
let domanda = '';
|
||||||
const domanda = 'Confermi d\'Inviare questo messaggio a ' + achi + ' ?\n' + rec.msgtosent;
|
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);
|
this.ChiediSINO(msg, domanda);
|
||||||
} else {
|
} else {
|
||||||
rec.msgall_status = StatusMSGALL.NONE;
|
rec.msgall_status = StatusMSGALL.NONE;
|
||||||
@@ -1157,8 +1492,7 @@ class Telegram {
|
|||||||
|
|
||||||
async setUser(msg) {
|
async setUser(msg) {
|
||||||
const id = msg.from.id;
|
const id = msg.from.id;
|
||||||
const user = await
|
const user = await User.UserByIdTelegram(this.idapp, id);
|
||||||
User.UserByIdTelegram(this.idapp, id);
|
|
||||||
let rec = this.arrUsers.find((rec) => rec.id === msg.from.id);
|
let rec = this.arrUsers.find((rec) => rec.id === msg.from.id);
|
||||||
if (user && rec) {
|
if (user && rec) {
|
||||||
rec.user = user;
|
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) {
|
async alreadyExist(msg) {
|
||||||
const id = msg.from.id;
|
const id = msg.from.id;
|
||||||
let rec = null;
|
let rec = null;
|
||||||
@@ -1204,7 +1547,12 @@ class Telegram {
|
|||||||
retry: 0,
|
retry: 0,
|
||||||
username_bo: '',
|
username_bo: '',
|
||||||
msgall_status: StatusMSGALL.NONE,
|
msgall_status: StatusMSGALL.NONE,
|
||||||
|
msgall_achi: 0,
|
||||||
|
msgall_username_specifico: '',
|
||||||
|
extraparam: '',
|
||||||
msgtosent: '',
|
msgtosent: '',
|
||||||
|
msg_wait: false,
|
||||||
|
lastmenu: null,
|
||||||
};
|
};
|
||||||
|
|
||||||
this.arrUsers.push(rec);
|
this.arrUsers.push(rec);
|
||||||
@@ -1222,9 +1570,8 @@ class Telegram {
|
|||||||
async getKeyboard(id, menu) {
|
async getKeyboard(id, menu) {
|
||||||
let keyb = MenuStandard;
|
let keyb = MenuStandard;
|
||||||
// Check if you are Admin
|
// Check if you are Admin
|
||||||
const ismanager = await
|
const ismanager = await User.isAdminByIdTeleg(this.idapp, id);
|
||||||
User.isAdminByIdTeleg(this.idapp, id);
|
if (ismanager && menu !== MenuChat)
|
||||||
if (ismanager)
|
|
||||||
keyb = MenuPerAdmin;
|
keyb = MenuPerAdmin;
|
||||||
if (menu) {
|
if (menu) {
|
||||||
keyb = 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)
|
if (!text)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@@ -1255,6 +1602,26 @@ class Telegram {
|
|||||||
return this.modificaMsg(chat_id, msg_id, text);
|
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 {
|
try {
|
||||||
if (!form) {
|
if (!form) {
|
||||||
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 FILELOG = 'filelog.txt';
|
||||||
const FILEEVENTS = 'logevents.txt';
|
const FILEEVENTS = 'logevents.txt';
|
||||||
const FILEBILLETTERA = 'logBillettera.txt';
|
const FILEMANAGERS = 'logmanagers.txt';
|
||||||
|
const FILENAVE = 'logNave.txt';
|
||||||
const subject = process.env.URLBASE_APP1;
|
const subject = process.env.URLBASE_APP1;
|
||||||
const publicVapidKey = process.env.PUBLIC_VAPI_KEY;
|
const publicVapidKey = process.env.PUBLIC_VAPI_KEY;
|
||||||
const privateVapidKey = process.env.PRIVATE_VAPI_KEY;
|
const privateVapidKey = process.env.PRIVATE_VAPI_KEY;
|
||||||
|
|
||||||
|
|
||||||
// Code goes here
|
// Code goes here
|
||||||
const keySize = 256;
|
const keySize = 256;
|
||||||
const ivSize = 128;
|
const ivSize = 128;
|
||||||
@@ -50,11 +52,11 @@ textlang = {
|
|||||||
"partecipanti": "partecipanti",
|
"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à.",
|
'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",
|
'BENVENUTO': "Benvenuto",
|
||||||
'HAI_I_7_REQUISITI': 'PRIMI PASSI OK!\nHai i Primi 7 Requisiti per Entrare in programmazione!',
|
'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 in programmazione!',
|
'NON_HAI_I_7_REQUISITI': 'Attenzione!\nAncora non hai i 7 Requisiti per Entrare nella Lista d\'Imbarco!',
|
||||||
'HAI_I_9_REQUISITI': 'COMPLIMENTI!\nHai TUTTI i 9 Requisiti per poter effettuare e poi ricevere il tuo Dono!',
|
'HAI_I_9_REQUISITI': 'COMPLIMENTI!\nHai Completato TUTTI i 9 Passi della Guida! Grazie per Aiutare AYNI ad Espandersi!',
|
||||||
'NON_HAI_I_9_REQUISITI': 'Attenzione!\nAncora non hai Tutti i 9 Requisiti per poter effettuare e poi ricevere il tuo Dono!',
|
'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 Requisiti: ✨ \n',
|
'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_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_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',
|
'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',
|
'LINEE_GUIDA': 'Accettato le Linee Guida',
|
||||||
'VIDEO_INTRO': 'Visto il Video di AYNI',
|
'VIDEO_INTRO': 'Visto il Video di AYNI',
|
||||||
'SCRITTO_SOGNO': 'Hai scritto il tuo Sogno',
|
'SCRITTO_SOGNO': 'Hai scritto il tuo Sogno',
|
||||||
'PAYMENTS': 'Modalità di Pagamento',
|
'PAYMENTS': 'Modalità di Pagamento (Obbligatorio Paypal)',
|
||||||
'INVITATI': 'persone registrate che hai invitato',
|
'INVITATI': 'persone registrate che hai invitato',
|
||||||
'INVITATI_ATTIVI': 'Invitati con i 7 Requisiti',
|
'INVITATI_ATTIVI': 'Invitati con i 7 Requisiti',
|
||||||
'NONREG': 'Invitati non Registrati',
|
'NONREG': 'Invitati non Registrati',
|
||||||
@@ -79,6 +81,10 @@ textlang = {
|
|||||||
'ZOOM_INIZIATO': 'QUESTA CONFERENZA E\' INIZIATA!',
|
'ZOOM_INIZIATO': 'QUESTA CONFERENZA E\' INIZIATA!',
|
||||||
'SCEGLI_VOCE': 'scegli una voce:',
|
'SCEGLI_VOCE': 'scegli una voce:',
|
||||||
'INVITATI_LISTA': 'I Tuoi Invitati (in verde con almeno i primi 7 Requisiti)',
|
'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: {
|
es: {
|
||||||
"L'Email è già stata Verificata": "L'Email è già stata Verificata",
|
"L'Email è già stata Verificata": "L'Email è già stata Verificata",
|
||||||
@@ -87,11 +93,11 @@ textlang = {
|
|||||||
"partecipanti": "participantes",
|
"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à.",
|
'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",
|
'BENVENUTO': "Benvenuto",
|
||||||
'HAI_I_7_REQUISITI': 'PRIMI PASSI OK!\nHai i Primi 7 Requisiti per Entrare in programmazione!',
|
'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 in programmazione!',
|
'NON_HAI_I_7_REQUISITI': 'Attenzione!\nAncora non hai i 7 Requisiti per Entrare nella Lista d\'Imbarco!',
|
||||||
'HAI_I_9_REQUISITI': 'COMPLIMENTI!\nHai TUTTI i 9 Requisiti per poter effettuare e poi ricevere il tuo Dono!',
|
'HAI_I_9_REQUISITI': 'COMPLIMENTI!\nHai Completato TUTTI i 9 Passi della Guida! Grazie per Aiutare AYNI ad Espandersi!',
|
||||||
'NON_HAI_I_9_REQUISITI': 'Attenzione!\nAncora non hai Tutti i 9 Requisiti per poter effettuare e poi ricevere il tuo Dono!',
|
'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 Requisiti: ✨ \n',
|
'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_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_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',
|
'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',
|
'LINEE_GUIDA': 'Accettato le Linee Guida',
|
||||||
'VIDEO_INTRO': 'Visto il Video di AYNI',
|
'VIDEO_INTRO': 'Visto il Video di AYNI',
|
||||||
'SCRITTO_SOGNO': 'Hai scritto il tuo Sogno',
|
'SCRITTO_SOGNO': 'Hai scritto il tuo Sogno',
|
||||||
'PAYMENTS': 'Modalità di Pagamento',
|
'PAYMENTS': 'Modalità di Pagamento (Obbligatorio Paypal)',
|
||||||
'INVITATI': 'persone registrate che hai invitato',
|
'INVITATI': 'persone registrate che hai invitato',
|
||||||
'INVITATI_ATTIVI': 'Invitati con i 7 Requisiti',
|
'INVITATI_ATTIVI': 'Invitati con i 7 Requisiti',
|
||||||
'NONREG': 'Invitati non Registrati',
|
'NONREG': 'Invitati non Registrati',
|
||||||
@@ -116,16 +122,20 @@ textlang = {
|
|||||||
'ZOOM_INIZIATO': 'QUESTA CONFERENZA E\' INIZIATA!',
|
'ZOOM_INIZIATO': 'QUESTA CONFERENZA E\' INIZIATA!',
|
||||||
'SCEGLI_VOCE': 'scegli una voce:',
|
'SCEGLI_VOCE': 'scegli una voce:',
|
||||||
'INVITATI_LISTA': 'I Tuoi Invitati (in verde con almeno i primi 7 Requisiti)',
|
'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: {
|
us: {
|
||||||
"partecipanti": "participants",
|
"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à.",
|
'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",
|
'BENVENUTO': "Benvenuto",
|
||||||
'HAI_I_7_REQUISITI': 'PRIMI PASSI OK!\nHai i Primi 7 Requisiti per Entrare in programmazione!',
|
'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 in programmazione!',
|
'NON_HAI_I_7_REQUISITI': 'Attenzione!\nAncora non hai i 7 Requisiti per Entrare nella Lista d\'Imbarco!',
|
||||||
'HAI_I_9_REQUISITI': 'COMPLIMENTI!\nHai TUTTI i 9 Requisiti per poter effettuare e poi ricevere il tuo Dono!',
|
'HAI_I_9_REQUISITI': 'COMPLIMENTI!\nHai Completato TUTTI i 9 Passi della Guida! Grazie per Aiutare AYNI ad Espandersi!',
|
||||||
'NON_HAI_I_9_REQUISITI': 'Attenzione!\nAncora non hai Tutti i 9 Requisiti per poter effettuare e poi ricevere il tuo Dono!',
|
'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 Requisiti: ✨ \n',
|
'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_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_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',
|
'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',
|
'LINEE_GUIDA': 'Accettato le Linee Guida',
|
||||||
'VIDEO_INTRO': 'Visto il Video di AYNI',
|
'VIDEO_INTRO': 'Visto il Video di AYNI',
|
||||||
'SCRITTO_SOGNO': 'Hai scritto il tuo Sogno',
|
'SCRITTO_SOGNO': 'Hai scritto il tuo Sogno',
|
||||||
'PAYMENTS': 'Modalità di Pagamento',
|
'PAYMENTS': 'Modalità di Pagamento (Obbligatorio Paypal)',
|
||||||
'INVITATI': 'persone registrate che hai invitato',
|
'INVITATI': 'persone registrate che hai invitato',
|
||||||
'INVITATI_ATTIVI': 'Invitati con i 7 Requisiti',
|
'INVITATI_ATTIVI': 'Invitati con i 7 Requisiti',
|
||||||
'NONREG': 'Invitati non Registrati',
|
'NONREG': 'Invitati non Registrati',
|
||||||
@@ -150,6 +160,10 @@ textlang = {
|
|||||||
'ZOOM_INIZIATO': 'QUESTA CONFERENZA E\' INIZIATA!',
|
'ZOOM_INIZIATO': 'QUESTA CONFERENZA E\' INIZIATA!',
|
||||||
'SCEGLI_VOCE': 'scegli una voce:',
|
'SCEGLI_VOCE': 'scegli una voce:',
|
||||||
'INVITATI_LISTA': 'I Tuoi Invitati (in verde con almeno i primi 7 Requisiti)',
|
'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_PROJECT: 1,
|
||||||
TYPE_TODO: 2,
|
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: {
|
FieldType: {
|
||||||
boolean: 1,
|
boolean: 1,
|
||||||
date: 2,
|
date: 2,
|
||||||
@@ -518,6 +550,11 @@ module.exports = {
|
|||||||
return '';
|
return '';
|
||||||
},
|
},
|
||||||
|
|
||||||
|
isAbilitaNave: function (idapp) {
|
||||||
|
const myapp = MYAPPS.find(item => item.idapp === idapp);
|
||||||
|
return myapp.abilitanave;
|
||||||
|
},
|
||||||
|
|
||||||
getdirByIdApp: function (idapp) {
|
getdirByIdApp: function (idapp) {
|
||||||
|
|
||||||
const myapp =
|
const myapp =
|
||||||
@@ -801,13 +838,35 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
getstrDateTimeShort(mydate) {
|
getstrDateTimeShort(mydate) {
|
||||||
// console.log('getstrDate', mytimestamp)
|
if (mydate) {
|
||||||
return this.getWeekDay(mydate) + ' ' + this.appendLeadingZeroes(mydate.getDate()) + '/' + this.appendLeadingZeroes(mydate.getMonth() + 1) + ' ORE ' + this.appendLeadingZeroes(mydate.getHours()) + ':' + this.appendLeadingZeroes(mydate.getMinutes());
|
// 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) {
|
getlinkzoom(idconf) {
|
||||||
if (idconf === '')
|
if (idconf === '')
|
||||||
idconf = '8886662000';
|
idconf = '6668882000';
|
||||||
return 'https://zoom.us/j/' + idconf
|
return 'https://zoom.us/j/' + idconf
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -889,8 +948,9 @@ module.exports = {
|
|||||||
// console.log('Saved!');
|
// console.log('Saved!');
|
||||||
// });
|
// });
|
||||||
|
|
||||||
const stream = fs.createWriteStream(filename, {flags:'a'});
|
// mystr = this.getstrDateTimeShort(Date.now()) + ' ' + mystr;
|
||||||
stream.write(mystr);
|
const stream = fs.createWriteStream(filename, { flags: 'a' });
|
||||||
|
stream.write('\n' + mystr);
|
||||||
stream.end();
|
stream.end();
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -902,8 +962,12 @@ module.exports = {
|
|||||||
this.writelogfile(mystr, FILEEVENTS);
|
this.writelogfile(mystr, FILEEVENTS);
|
||||||
},
|
},
|
||||||
|
|
||||||
writeBilletteraLog(mystr) {
|
writeManagersLog(mystr) {
|
||||||
this.writelogfile(mystr, FILEBILLETTERA);
|
this.writelogfile(mystr, FILEMANAGERS);
|
||||||
|
},
|
||||||
|
|
||||||
|
writeNaveLog(mystr) {
|
||||||
|
this.writelogfile(mystr, FILENAVE);
|
||||||
},
|
},
|
||||||
|
|
||||||
move(oldPath, newPath, callback) {
|
move(oldPath, newPath, callback) {
|
||||||
@@ -1011,11 +1075,15 @@ module.exports = {
|
|||||||
return mystr.replace(/\s+/g, '')
|
return mystr.replace(/\s+/g, '')
|
||||||
},
|
},
|
||||||
|
|
||||||
ModificheConsentite(table, fieldsvalue) {
|
ModificheConsentite(table, fieldsvalue, idrec, user) {
|
||||||
if (table === 'users') {
|
if (table === 'users') {
|
||||||
if ('aportador_solidario' in fieldsvalue) {
|
if ('aportador_solidario' in fieldsvalue) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if ('ALL' in fieldsvalue) {
|
||||||
|
//++Todo: Cancellalo solo se sono io il creatore dell'utente ... o se posso!
|
||||||
|
return true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@@ -1029,5 +1097,20 @@ module.exports = {
|
|||||||
return false;
|
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
|
||||||