39 Commits

Author SHA1 Message Date
Surya Paolo
6d1ad4132f cambio nome ai circuiti 2023-03-23 15:37:22 +01:00
Surya Paolo
e92edcbe78 - Cerca Amici persone: filtro per Regione o Provincia 2023-03-23 00:09:52 +01:00
Surya Paolo
561bab57a8 circuito 2023-03-22 18:10:23 +01:00
Surya Paolo
00e9aafd4c - Provincia obbligatoria, chiedo conferma se non vuole entrare nel circuito. 2023-03-22 15:54:45 +01:00
Surya Paolo
5993112a8e - Il circuito viene creato in automatico, quando scegli una provincia. 2023-03-21 18:11:56 +01:00
Surya Paolo
7482b65743 - Visu Saldo su Home
- SendRisTo
- Movimenti conto Comunitario
- Profilo
2023-03-17 19:07:31 +01:00
Surya Paolo
e705594294 - Invia Ris a e Ricevi Ris
- Tutorial Guidato Passi da Compiere
- Provincia in cui vivi
- Policy aggiornata
2023-03-11 01:01:11 +01:00
Surya Paolo
6a4c270c91 - fix: se salvavo un record 'settable' e non era completo con tutti i campi, andava a troncare gli altri precedentemente inseriti
- ordinamento Circuiti per stato e numiscritti e descr
2023-03-05 22:04:14 +01:00
Surya Paolo
39cc9b66d6 ver 0.5.73:
- corretto invia monete da Conto Collettivo a Utente
- Aggiunto Provincia (tutorial).. in corso...
2023-03-04 10:20:43 +01:00
Surya Paolo
4effda98ec ver 0.5.71:
- Info Conto
- Admin: poter modificare Fido e QtaMax, sia per i Conti Collettivi sia per gli Utenti.
2023-02-23 17:20:46 +01:00
Surya Paolo
84ceed500d ver 0.5.71:
- Info Conto
- Admin: poter modificare Fido e QtaMax.
2023-02-23 16:07:43 +01:00
Surya Paolo
0076adac76 - Info sul Conto Collettivo
- HomePage
2023-02-20 02:19:53 +01:00
Surya Paolo
874114942a Lista Richieste e Rifiutati dei Conti Collettivi 2023-02-16 20:13:38 +01:00
Surya Paolo
a81300e13d Unsubscribe 2023-02-15 21:40:19 +01:00
Surya Paolo
81d7d32b85 Unsubscribe 2023-02-15 21:39:47 +01:00
Surya Paolo
402a9c373e fix log 2023-02-06 23:26:30 +01:00
Surya Paolo
6e7eb31d38 - pagine admin: Accounts, Movements e Circuits.
- add change min e max range circuiti (per tutti i record).
2023-02-06 22:58:10 +01:00
Surya Paolo
022ad11747 fix Conti Collettivi + messaggi 2023-02-02 13:53:02 +01:00
Surya Paolo
7bf6f91a97 ver: 0.5.62
Conti Collettivi visibili solo se sei admin...
2023-02-02 02:31:04 +01:00
Surya Paolo
2d213b7020 Invio RIS da User a Conto Comunitario 2023-02-01 23:50:39 +01:00
Surya Paolo
aa9d27c8fd Conti Comunitari e Collettivi 2023-02-01 16:36:10 +01:00
Surya Paolo
9a0f0a0cc6 go on Conto Comunitario 2023-02-01 01:19:50 +01:00
Surya Paolo
5f3ce44a68 Pagina "Attività" non compare bene la scritta Beni e Servizi... ?! 2023-01-29 22:22:48 +01:00
Surya Paolo
73aa780733 Possibilità di scrivere l'username anche con la chiocciola @ 2023-01-25 10:47:41 +01:00
Surya Paolo
b9e4dbbaec Conto Comunitario all'interno di un Circuito 2023-01-21 19:02:19 +01:00
Surya Paolo
8e7b9fb5bd fix button registration disabled
Conto Comunitario... passo 2
2023-01-13 12:29:28 +01:00
Surya Paolo
f7d05eb856 Conto Comunitario... 2023-01-12 01:03:10 +01:00
Surya Paolo
e13fe84709 fix SdM
share link
2023-01-09 15:55:12 +01:00
Surya Paolo
dd51982795 fix strette di mano 2023-01-09 04:05:11 +01:00
Surya Paolo
a4b42a1fc3 ver: 0.5.55
Strette di Mano OK
2023-01-09 02:37:35 +01:00
Surya Paolo
331c2e6780 Stringi la mano (fase prima) 2023-01-08 19:20:02 +01:00
Surya Paolo
399153f477 ++Strette di Mano 2023-01-08 02:17:01 +01:00
Surya Paolo
d1135f1151 msg 2023-01-06 15:55:48 +01:00
Surya Paolo
d183a07bad strette di mano 2023-01-06 15:51:48 +01:00
Surya Paolo
f42a39d231 pagina Attivita + Video e PDF Presentazione 2023-01-05 01:37:20 +01:00
Surya Paolo
dd1c9d573f poter visualizzare i propri beni e servizi anche se non sei registrato alla app ! 2023-01-04 02:09:42 +01:00
Surya Paolo
18b827f5f4 ver 0.5.51 2023-01-03 16:51:32 +01:00
Surya Paolo
7a41e6a1d4 replace username 2022-12-23 17:06:54 +01:00
Surya Paolo
7e1407cbb1 Fare procedura per cambiare gli username in giro nelle varie tabelle 2022-12-23 00:36:35 +01:00
42 changed files with 16335 additions and 1706 deletions

25
.env.test.risosrv Normal file
View File

@@ -0,0 +1,25 @@
DATABASE=test_FreePlanet
UDB=paofreeplanet
PDB=suerteFreePlanet@1A
SEND_EMAIL=1
PORT=3001
ENABLE_PUSHNOTIFICATION=1
DIRECTORY_SERVER=freeplanet_serverside
SERVERDIR_WEBSITE=test.freeplanet_server
PORT_APP1="0"
DOMAIN=mongodb://localhost:27018/
SIGNCODE=abc123
DEBUG=0
LOCALE=0
DELAY_SENDEMAIL=1000
VAPI_KEY_SUBJECT="mailto:surya@riso.app"
PUBLIC_VAPI_KEY="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs"
PRIVATE_VAPI_KEY="St9UMzcS76Q9yKG6RInAuYydYjFRliqwHTJY3A5wjO0"
GCM_API_KEY="AIzaSyD7w1jztfVV05mX1iyxoI-r1pZWxuxdUK8"
PATH_CERT_KEY=key.pem
PATH_SERVER_CRT=cert.pem
PATH_SSL_ROOT_PEM=root.pem
PATH_SSL_CHAIN_PEM=chain.pem
PROD=0
PROJECT_DESCR_MAIN='__PROJECTS'
SECRK=iUUb38v23jjDFaosWj92axkBOXCQ

3
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,3 @@
{
"search.useIgnoreFiles": false
}

16
deploynodejs_on_risosrv_test.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/bash
source ./.env.test.risosrv
echo "Sincronizzazione in corso..."
rsync -avz -e 'ssh -p 5522' css root@risosrv:/var/www/$SERVERDIR_WEBSITE/
rsync -avz -e 'ssh -p 5522' docs root@risosrv:/var/www/$SERVERDIR_WEBSITE/
rsync -avz -e 'ssh -p 5522' emails root@risosrv:/var/www/$SERVERDIR_WEBSITE/
rsync -avz -e 'ssh -p 5522' images root@risosrv:/var/www/$SERVERDIR_WEBSITE/
rsync -avz -e 'ssh -p 5522' plugins root@risosrv:/var/www/$SERVERDIR_WEBSITE/
rsync -avz -e 'ssh -p 5522' sass root@risosrv:/var/www/$SERVERDIR_WEBSITE/
rsync -avz -e 'ssh -p 5522' src root@risosrv:/var/www/$SERVERDIR_WEBSITE/
rsync -avz -e 'ssh -p 5522' .env.test.risosrv root@risosrv:/var/www/$SERVERDIR_WEBSITE/.env.test
rsync -avz -e 'ssh -p 5522' package.json root@risosrv:/var/www/$SERVERDIR_WEBSITE/package.json
echo "Sincronizzazione TERMINATA! - SERVER TEST!"

View File

@@ -19,3 +19,9 @@ entrando sul bot riso premi su avvia (o start) e segui le istruzioni
3⃣ condividi il progetto ai tuoi amici ed aiuta così a far crescere questa rete e crescere insieme 💚 partecipa al cambiamento. riso sei anche tu. 3⃣ condividi il progetto ai tuoi amici ed aiuta così a far crescere questa rete e crescere insieme 💚 partecipa al cambiamento. riso sei anche tu.
se hai bisogno di aiuto chiedi in questa chat: 👉🏻 chat riso help se hai bisogno di aiuto chiedi in questa chat: 👉🏻 chat riso help
Gio 05/01 ORE 19:28: USER [paoloar77]: vai al sito
Gio 05/01 ORE 19:28: USER [paoloar77]: link da condividere
Gio 16/02 ORE 18:14: USER [paoloar77]: vai al sito

7
logtrans.txt Normal file
View File

@@ -0,0 +1,7 @@
Lun 06/02 ORE 23:13: Inviate Monete da paoloar77 a surya1977 1 RISTEST [] [Saldo 1: -50] [Saldo 2: 5]
Lun 06/02 ORE 23:15: Inviate Monete da paoloar77 a surya1977 1 RISTEST [causale: ] [Saldo 1: -51 RISTEST] [Saldo 2: 6 RISTEST ]
Lun 06/02 ORE 23:17: Inviate Monete da paoloar77 a surya1977 1 RISTEST [causale: ] [Saldo paoloar77: -52 RISTEST] [Saldo surya1977: 7 RISTEST]
Dom 12/03 ORE 13:35: Inviate Monete da paoloar77 a 1 RIS [causale: ] [Saldo paoloar77: 3 RIS] [Saldo : 2 RIS]
Mer 15/03 ORE 22:15: Inviate Monete da pontiUmani (paoloar77) a paoloar77 1 RIS [causale: ] [Saldo pontiUmani (paoloar77): 1 RIS] [Saldo paoloar77: 4 RIS]
Mer 15/03 ORE 22:37: Inviate Monete da pontiUmani (paoloar77) a surya1977 1 RIS [causale: ] [Saldo pontiUmani (paoloar77): 0 RIS] [Saldo surya1977: 1 RIS]

View File

@@ -9,6 +9,7 @@
"watch": "gulp watch", "watch": "gulp watch",
"test": "export NODE_ENV=development || SET NODE_ENV=development && mocha src/server/**/*.test.js", "test": "export NODE_ENV=development || SET NODE_ENV=development && mocha src/server/**/*.test.js",
"start:prod": "NODE_ENV=production node src/server/server.js", "start:prod": "NODE_ENV=production node src/server/server.js",
"starttest": "NODE_ENV=test node src/server/server.js",
"test-watch": "nodemon --exec 'npm test'" "test-watch": "nodemon --exec 'npm test'"
}, },
"engines": { "engines": {
@@ -47,6 +48,7 @@
"node-telegram-bot-api": "^0.59.0", "node-telegram-bot-api": "^0.59.0",
"nodemailer": "^6.7.8", "nodemailer": "^6.7.8",
"npm-check-updates": "^16.1.0", "npm-check-updates": "^16.1.0",
"pem": "^1.14.6",
"preview-email": "^3.0.7", "preview-email": "^3.0.7",
"pug": "^3.0.2", "pug": "^3.0.2",
"rate-limiter-flexible": "^2.3.9", "rate-limiter-flexible": "^2.3.9",

View File

@@ -8,7 +8,10 @@
} }
], ],
"settings": { "settings": {
"search.useIgnoreFiles": true, "search.useIgnoreFiles": false,
"search.useParentIgnoreFiles": true "search.useParentIgnoreFiles": false,
"files.exclude": {
"": true
}
} }
} }

View File

@@ -1,5 +1,5 @@
{ {
"L'Email è già stata Verificata": "L'Email è già stata Verificata" "L'Email è già stata Verificata": "L'Email è già stata Verificata",
"Email Verificata!": "Email Verificada! Cierre esta ventana y regrese a la otra.", "Email Verificata!": "Email Verificada! Cierre esta ventana y regrese a la otra.",
"Nuova Registrazione": "Nuevo Registro", "Nuova Registrazione": "Nuevo Registro",
"Effettuata una Nuova Registrazione": "Se ha realizado un nuevo registro", "Effettuata una Nuova Registrazione": "Se ha realizado un nuevo registro",

View File

@@ -11,7 +11,8 @@
"<strong>%s</strong> refused your Friendship": "<strong>%s</strong> ha rifiutato l'Amicizia", "<strong>%s</strong> refused your Friendship": "<strong>%s</strong> ha rifiutato l'Amicizia",
"✅ %s accepted your Friendship request !": "✅ %s ha accettato la tua richiesta di Amicizia !", "✅ %s accepted your Friendship request !": "✅ %s ha accettato la tua richiesta di Amicizia !",
"✅ You have accepted %s' Friendship request!": "✅ Hai accettato la richiesta di Amicizia di %s !", "✅ You have accepted %s' Friendship request!": "✅ Hai accettato la richiesta di Amicizia di %s !",
"GROUPS_ACCEPTED": "✅ Sei stato accettato da %s a far parte del Gruppo %s (da parte di %s)", "HANDSHAKE_SET": "<strong>%s</strong> ha comunicato che ti conosce personalmente e ha fiducia in te.",
"GROUPS_ACCEPTED": "✅ Sei stato accettato a far parte del Gruppo %s (da parte di %s)",
"GROUPS_REFUSED": "❌ Ti è stato rifiutato l'accesso da %s a far parte del Gruppo %s. Se pensi sia un'errore, contatta l'amministratore del Gruppo.", "GROUPS_REFUSED": "❌ Ti è stato rifiutato l'accesso da %s a far parte del Gruppo %s. Se pensi sia un'errore, contatta l'amministratore del Gruppo.",
"GROUPS_REMOVED": "❌ l'utente %s è stato rimosso del Gruppo %s (da parte di %s)", "GROUPS_REMOVED": "❌ l'utente %s è stato rimosso del Gruppo %s (da parte di %s)",
"GROUPS_EXIT_USER": "❌ l'utente %s è uscito dal Gruppo %s", "GROUPS_EXIT_USER": "❌ l'utente %s è uscito dal Gruppo %s",
@@ -34,7 +35,9 @@
"FRIEND_UNBLOCKED": "E' stato riattivato %s da %s.", "FRIEND_UNBLOCKED": "E' stato riattivato %s da %s.",
"FRIEND_UNBLOCKED_YOU": "Hai riattivato %s.", "FRIEND_UNBLOCKED_YOU": "Hai riattivato %s.",
"CIRCUIT_ACCEPT_NEWENTRY": "❇️👥 🧍‍♂️ Accetta Ingresso nel Circuito %s:", "CIRCUIT_ACCEPT_NEWENTRY": "❇️👥 🧍‍♂️ Accetta Ingresso nel Circuito %s:",
"CIRCUIT_ACCEPT_NEWENTRY_BYGROUP": "❇️👥 🧍‍♂️ Accetta Ingresso nel Circuito il gruppo %s:",
"CIRCUIT_REQUEST_TO_ENTER": "%s ha chiesto di entrare nel circuito %s", "CIRCUIT_REQUEST_TO_ENTER": "%s ha chiesto di entrare nel circuito %s",
"CIRCUIT_REQUEST_TO_ENTER_WITH_GROUP": "il gruppo %s ha chiesto di entrare nel circuito %s",
"CIRCUIT_CREATED": "✅ %s ha creato un nuovo Circuito chiamato %s", "CIRCUIT_CREATED": "✅ %s ha creato un nuovo Circuito chiamato %s",
"CIRCUIT_REQUEST": "Richiesta di entrare nel Circuito %s da parte di %s", "CIRCUIT_REQUEST": "Richiesta di entrare nel Circuito %s da parte di %s",
"CIRCUIT_ADDED_ADMIN": "E' stato aggiunto %s come Amministratore del circuito %s da parte di %s", "CIRCUIT_ADDED_ADMIN": "E' stato aggiunto %s come Amministratore del circuito %s da parte di %s",
@@ -44,18 +47,34 @@
"RICHIESTA_BLOCCO_CIRCUIT": "Richiesta di bloccare il Circuito %s da parte di %s", "RICHIESTA_BLOCCO_CIRCUIT": "Richiesta di bloccare il Circuito %s da parte di %s",
"CIRCUIT_ELIMINATO": "Il circuito %s è stato eliminato da parte di %s", "CIRCUIT_ELIMINATO": "Il circuito %s è stato eliminato da parte di %s",
"ACCETTATO_NOTIFICA_ADMINS_CIRCUIT": "✅ l'utente %s è stato accettato a far parte del Circuito %s (da parte di %s)", "ACCETTATO_NOTIFICA_ADMINS_CIRCUIT": "✅ l'utente %s è stato accettato a far parte del Circuito %s (da parte di %s)",
"ACCETTATO_NOTIFICA_ADMINS_CIRCUIT_MYGROUP": "✅ il Conto Collettivo %s è stato accettato a far parte del Circuito %s (da parte di %s)",
"CIRCUIT_ACCEPTED": "✅ Sei stato accettato da %s a far parte del Circuito %s.\nApri la APP e clicca in alto a destra sull'icona delle monete, oppure clicca qui: %s", "CIRCUIT_ACCEPTED": "✅ Sei stato accettato da %s a far parte del Circuito %s.\nApri la APP e clicca in alto a destra sull'icona delle monete, oppure clicca qui: %s",
"CIRCUIT_ACCEPTED_YOU": "✅ Hai accettato %s a far parte del Circuito %s", "CIRCUIT_ACCEPTED_YOU": "✅ Hai accettato %s a far parte del Circuito %s",
"CIRCUIT_REFUSED": "❌ Ti è stato rifiutato l'accesso da %s a far parte del Circuito %s. Se pensi sia un'errore, contatta l'amministratore del Circuito.", "CIRCUIT_REFUSED": "❌ Ti è stato rifiutato l'accesso da %s a far parte del Circuito %s. Se pensi sia un'errore, contatta l'amministratore del Circuito.",
"CIRCUIT_REMOVED": "❌ l'utente %s è stato rimosso del Circuito %s (da parte di %s)", "CIRCUIT_REMOVED": "❌ l'utente %s è stato rimosso del Circuito %s (da parte di %s)",
"CIRCUIT_REFUSED_TO_ME": "All'utente %s gli è stato rifiutato l'accesso a far parte del Circuito %s (da parte di %s).", "CIRCUIT_REFUSED_TO_ME": "All'utente %s gli è stato rifiutato l'accesso a far parte del Circuito %s (da parte di %s).",
"CIRCUIT_REFUSED_TO_MYGROUP": "Al Conto Collettivo %s gli è stato rifiutato l'accesso a far parte del Circuito %s (da parte di %s).",
"CIRCUIT_EXIT_USER": "❌ l'utente %s è uscito dal Circuito %s", "CIRCUIT_EXIT_USER": "❌ l'utente %s è uscito dal Circuito %s",
"CIRCUIT_EXIT_USER_TO_ME": "❌ Sei uscito dal Circuito %s", "CIRCUIT_EXIT_USER_TO_ME": "❌ Sei uscito dal Circuito %s",
"CIRCUIT_REMOVED_TO_ME": "❌ Sei stato rimosso dal Circuito %s (da parte di %s)", "CIRCUIT_REMOVED_TO_ME": "❌ Sei stato rimosso dal Circuito %s (da parte di %s)",
"CIRCUIT_SENDCOINSREQ": "%s ti sta inviando <strong>%s %s</strong>.", "CIRCUIT_SENDCOINSREQ": "%s ti sta inviando <strong>%s %s</strong>.",
"COMUNITARIO": "Comunitario",
"COLLETTIVO": "Collettivo",
"CIRCUIT_SENDCOINSREQ_GROUP": "%s sta inviando <strong>%s %s</strong> al Conto %s '%s'.",
"CIRCUIT_SENDCOINSREQ_FROM_GROUP_TO_USER": "il conto %s '%s' (%s) sta inviando <strong>%s %s</strong> a %s.",
"CIRCUIT_SENDCOINSREQ_FROM_GROUP_TO_YOU": "il conto %s '%s' (%s) ti sta inviando <strong>%s %s</strong>",
"CIRCUIT_SENDCOINSREQ_FROM_GROUP_TO_GROUP": "il conto %s '%s' (%s) sta inviando <strong>%s %s</strong> al conto %s '%s'.",
"CIRCUIT_SENDCOINSREQ_TO_ME": "Stai inviando <strong>%s %s</strong> a %s. \nIl destinatario deve accettare la transazione.", "CIRCUIT_SENDCOINSREQ_TO_ME": "Stai inviando <strong>%s %s</strong> a %s. \nIl destinatario deve accettare la transazione.",
"CIRCUIT_SENDCOINSREQ_TO_GROUP": "Stai inviando <strong>%s %s</strong> al Conto %s '%s'. \nIl destinatario deve accettare la transazione.",
"ID_CIRCUIT_COINS_ACCEPTED_FROM_GROUP_TO_YOU": "<strong>%s %s</strong> accettati dal Conto %s '%s' (%s).",
"ID_CIRCUIT_COINS_ACCEPTED_FROM_GROUP_TO_GROUP": "il conto %s '%s' (%s) ha accettato <strong>%s %s</strong> dal conto %s '%s' (%s).",
"ID_CIRCUIT_COINS_ACCEPTED_FROM_ME_TO_GROUP": "il conto %s '%s' (%s) ha accettato <strong>%s %s</strong> da %s.",
"ID_CIRCUIT_COINS_ACCEPTED_FROM_ME_TO_YOU": "<strong>%s %s</strong> accettati da %s.",
"ID_CIRCUIT_COINS_ACCEPTED": "<strong>%s %s</strong> accettati da %s.", "ID_CIRCUIT_COINS_ACCEPTED": "<strong>%s %s</strong> accettati da %s.",
"SALDO_UPDATE": "[Saldo <strong>%s %s</strong>]", "SALDO_UPDATE": "[Saldo <strong>%s %s</strong>]",
"SALDO_UPDATE_WHO": "[Saldo %s <strong>%s %s</strong>]",
"ID_CIRCUIT_COINS_ACCEPTED_TO_ME": "<strong>%s %s</strong> sono stati accettati da %s.", "ID_CIRCUIT_COINS_ACCEPTED_TO_ME": "<strong>%s %s</strong> sono stati accettati da %s.",
"ID_CIRCUIT_COINS_REFUSED": "%s %s rifiutati da %s.", "ID_CIRCUIT_COINS_REFUSED": "%s %s rifiutati da %s.",
"ID_CIRCUIT_COINS_REFUSED_TO_ME": "%s %s rifiutati da %s.", "ID_CIRCUIT_COINS_REFUSED_TO_ME": "%s %s rifiutati da %s.",
@@ -64,5 +83,8 @@
"CIRCUIT_COINS_ALREADY_PROCESSED": "La richiesta è stata già processata. Stato %s", "CIRCUIT_COINS_ALREADY_PROCESSED": "La richiesta è stata già processata. Stato %s",
"STATUS_SENT": "Inviato", "STATUS_SENT": "Inviato",
"STATUS_REFUSED": "Rifiutato", "STATUS_REFUSED": "Rifiutato",
"SALDO_VARIATO": "[Circuito %s] l'utente %s ha variato il Saldo di %s da %s a %s %s",
"FIDOCONCESSO_VARIATO": "[Circuito %s] l'utente %s ha variato il Fido Concesso di %s da %s a %s %s",
"QTAMAX_VARIATO": "[Circuito %s] l'utente %s ha variato la quantità massima concessa di %s da %s a %s %s",
"CLICCA_QUI": "CLICCA QUI" "CLICCA_QUI": "CLICCA QUI"
} }

View File

@@ -16,6 +16,17 @@ const authenticate = (req, res, next) => {
// console.log('authenticate... '); // console.log('authenticate... ');
let noaut = false;
if (req.body.hasOwnProperty('noaut')) {
noaut = req.body.noaut;
}
if (noaut) {
next();
return;
}
const access = 'auth'; const access = 'auth';
User.findByToken(token, access).then((user) => { User.findByToken(token, access).then((user) => {

View File

@@ -33,6 +33,12 @@ const AccountSchema = new Schema({
username: { username: {
type: String, type: String,
}, },
groupname: { // For the Groups
type: String,
},
contocom: { // For the Conto Comunitario dei Circuiti
type: String,
},
circuitId: { // ----- REF TO Circuit circuitId: { // ----- REF TO Circuit
type: String, type: String,
}, },
@@ -94,6 +100,9 @@ AccountSchema.pre('save', async function (next) {
AccountSchema.statics.getFieldsForSearch = function () { AccountSchema.statics.getFieldsForSearch = function () {
return [ return [
{ field: 'name', type: tools.FieldType.string }, { field: 'name', type: tools.FieldType.string },
{ field: 'username', type: tools.FieldType.string },
{ field: 'groupname', type: tools.FieldType.string },
{ field: 'contocom', type: tools.FieldType.string },
]; ];
}; };
@@ -192,7 +201,7 @@ AccountSchema.pre('save', async function (next) {
next(); next();
}); });
AccountSchema.statics.getAccountByUsernameAndCircuitId = async function (idapp, username, circuitId, createifnotexist) { AccountSchema.statics.getAccountByUsernameAndCircuitId = async function (idapp, username, circuitId, createifnotexist, groupname = '', contocom = "") {
const Account = this; const Account = this;
try { try {
@@ -203,11 +212,18 @@ AccountSchema.statics.getAccountByUsernameAndCircuitId = async function (idapp,
return false; return false;
let myquery = { let myquery = {
'idapp': idapp, idapp,
'username': username,
circuitId, circuitId,
}; };
if (groupname) {
myquery.groupname = groupname;
} else if (contocom) {
myquery.contocom = contocom;
} else {
myquery.username = username;
}
let mycircuit = await Circuit.getCircuitById(circuitId); let mycircuit = await Circuit.getCircuitById(circuitId);
if (mycircuit) { if (mycircuit) {
@@ -218,14 +234,35 @@ AccountSchema.statics.getAccountByUsernameAndCircuitId = async function (idapp,
_id: new ObjectID().toString(), _id: new ObjectID().toString(),
idapp, idapp,
username, username,
groupname,
contocom,
circuitId: mycircuit._id, circuitId: mycircuit._id,
deperibile: false, deperibile: false,
fidoConcesso: mycircuit.fido_scoperto_default,
qta_maxConcessa: mycircuit.qta_max_default,
importo_iniziale: 0, importo_iniziale: 0,
saldo: 0, saldo: 0,
fidoConcesso: 0,
qta_maxConcessa: 0,
}); });
if (contocom) {
myaccount.fidoConcesso = shared_consts.CIRCUIT_PARAMS.SCOPERTO_MIN_CONTO_COMUNITARIO;
myaccount.qta_maxConcessa = shared_consts.CIRCUIT_PARAMS.SCOPERTO_MAX_CONTO_COMUNITARIO;
} else {
if (!mycircuit.fido_scoperto_default_grp)
mycircuit.fido_scoperto_default_grp = shared_consts.CIRCUIT_PARAMS.SCOPERTO_MIN_GRP;
if (!mycircuit.qta_max_default_grp)
mycircuit.qta_max_default_grp = shared_consts.CIRCUIT_PARAMS.SCOPERTO_MAX_GRP;
if (groupname) {
myaccount.fidoConcesso = mycircuit.fido_scoperto_default_grp;
myaccount.qta_maxConcessa = mycircuit.qta_max_default_grp;
} else {
myaccount.fidoConcesso = mycircuit.fido_scoperto_default;
myaccount.qta_maxConcessa = mycircuit.qta_max_default;
}
}
return await myaccount.save(); return await myaccount.save();
} }
@@ -239,14 +276,14 @@ AccountSchema.statics.getAccountByUsernameAndCircuitId = async function (idapp,
}; };
AccountSchema.statics.createAccount = async function (idapp, username, circuitName) { AccountSchema.statics.createAccount = async function (idapp, username, circuitName, groupname = '', contocom = '') {
const { Circuit } = require('../models/circuit'); const { Circuit } = require('../models/circuit');
try { try {
mycircuit = await Circuit.findOne({ name: circuitName }, {_id: 1}); mycircuit = await Circuit.findOne({ name: circuitName }, { _id: 1 });
if (mycircuit) { if (mycircuit) {
return await Account.getAccountByUsernameAndCircuitId(idapp, username, mycircuit._id, true); return await Account.getAccountByUsernameAndCircuitId(idapp, username, mycircuit._id, true, groupname, contocom);
} else { } else {
return null; return null;
} }
@@ -323,6 +360,141 @@ AccountSchema.statics.getUserAccounts = async function (idapp, username) {
}; };
AccountSchema.statics.getGroupAccounts = async function (idapp, groupname) {
try {
let aggr1 = [
{
$match: { idapp, groupname },
},
{
$lookup: {
from: 'circuits',
localField: 'circuitId',
foreignField: '_id',
as: 'circuit',
},
},
{ $unwind: '$circuit' },
{
$lookup: {
from: 'sendnotifs',
as: 'notifspending',
let: {
circuitname: '$circuit.name',
groupname: '$groupname',
idapp: '$idapp',
typedir: shared_consts.TypeNotifs.TYPEDIR_CIRCUITS,
typeid: shared_consts.TypeNotifs.ID_CIRCUIT_SENDCOINSREQ,
},
pipeline: [
{
$match: {
$expr: {
$and: [
{ $eq: ['$typedir', '$$typedir'] },
{ $eq: ['$typeid', '$$typeid'] },
{ $eq: ['$status', 0] },
{ $eq: ['$sendergroup', '$$groupname'] },
{ $eq: ['$idapp', '$$idapp'] },
{ $eq: ['$extrarec.circuitname', '$$circuitname'] },
],
},
},
},
],
},
},
];
ris = await this.aggregate(aggr1);
const { SendNotif } = require('../models/sendnotif');
if (ris) {
for (const account of ris) {
const pendingtransactions = await SendNotif.getSumPendingTransactions(idapp, '', account.circuit.name, groupname);
const saldopending = pendingtransactions.reduce((sum, rec) => sum + rec.extrarec.qty, 0);
account.saldo -= saldopending;
}
}
return ris;
} catch (e) {
console.error('e', e);
}
};
// Imposta a tutti i Conti Collettivi, i seguenti minimi e massimi
AccountSchema.statics.SetMinMaxCollettivi = async function (idapp, valmin, valmax) {
const Account = this;
ris = await Account.updateMany({ idapp, groupname: { "$nin": [null, ""] } },
{
$set:
{
fidoConcesso: valmin,
qta_maxConcessa: valmax,
}
});
};
// Imposta a tutti i Conti Comunitari, i seguenti minimi e massimi
AccountSchema.statics.SetMinMaxComunitari = async function (idapp, valmin, valmax) {
const Account = this;
ris = await Account.updateMany({ idapp, contocom: { "$nin": [null, ""] } },
{
$set:
{
fidoConcesso: valmin,
qta_maxConcessa: valmax,
}
});
};
// Imposta a tutti i Conti Personali, i seguenti minimi e massimi
AccountSchema.statics.SetMinMaxPersonali = async function (idapp, valmin, valmax) {
const Account = this;
ris = await Account.updateMany({ idapp, username: { "$nin": [null, ""] } },
{
$set:
{
fidoConcesso: valmin,
qta_maxConcessa: valmax,
}
});
};
AccountSchema.statics.addToPeopleOfMyAccount = async function (idapp, username, circuitId, person_username, perm) {
return await Account.updateOne({ idapp, username, circuitId },
{
$push:
{
people: {
username: person_username,
perm,
date: new Date(),
},
},
});
};
// Rimuovi dagli Admin del Account
AccountSchema.statics.removeAdminOfAccount = async function (idapp, username, circuitId, person_username, perm) {
return await Circuit.updateOne({ idapp, username, circuitId },
{ $pull: { people: { username: { $in: [person_username] } } } });
};
const Account = mongoose.model('Account', AccountSchema); const Account = mongoose.model('Account', AccountSchema);
module.exports = { Account }; module.exports = { Account };

View File

@@ -11,6 +11,9 @@ const { ObjectID } = require('mongodb');
const { Movement } = require('../models/movement'); const { Movement } = require('../models/movement');
const { Account } = require('../models/account'); const { Account } = require('../models/account');
const { Province } = require('../models/province');
const shared_consts = require('../tools/shared_nodejs');
const i18n = require('i18n'); const i18n = require('i18n');
// Resolving error Unknown modifier: $pushAll // Resolving error Unknown modifier: $pushAll
@@ -40,6 +43,9 @@ const CircuitSchema = new Schema({
type: String, type: String,
unique: true, unique: true,
}, },
link_group: {
type: String,
},
subname: { subname: {
type: String, type: String,
}, },
@@ -47,6 +53,10 @@ const CircuitSchema = new Schema({
{ {
type: Number, type: Number,
}], }],
strProv:
{
type: String,
},
pub_to_share: { pub_to_share: {
type: Number, // PUB_TO_SHARE_ALL, PUB_TO_SHARE_ONLY_TABLE_FOLLOW type: Number, // PUB_TO_SHARE_ALL, PUB_TO_SHARE_ONLY_TABLE_FOLLOW
}, },
@@ -106,6 +116,12 @@ const CircuitSchema = new Schema({
qta_max_default: { qta_max_default: {
type: Number, type: Number,
}, },
fido_scoperto_default_grp: {
type: Number,
},
qta_max_default_grp: {
type: Number,
},
data_costituz: { data_costituz: {
type: Date, type: Date,
}, },
@@ -173,6 +189,18 @@ const CircuitSchema = new Schema({
username: { type: String }, username: { type: String },
date: { type: Date }, date: { type: Date },
}], // username }], // username
req_groups: [
{
_id: false,
groupname: { type: String },
date: { type: Date },
}], // username
refused_groups: [
{
_id: false,
groupname: { type: String },
date: { type: Date },
}], // username
deleted: { deleted: {
type: Boolean, type: Boolean,
default: false, default: false,
@@ -207,15 +235,14 @@ CircuitSchema.statics.findAllIdApp = async function (idapp) {
const whatToShow = this.getWhatToShow(idapp, ''); const whatToShow = this.getWhatToShow(idapp, '');
return await Circuit.find(myfind, whatToShow, (err, arrrec) => { return await Circuit.find(myfind, whatToShow).sort({ status: -1, numMembers: -1, name: 1 });
return arrrec;
});
}; };
CircuitSchema.statics.getFieldsForSearch = function () { CircuitSchema.statics.getFieldsForSearch = function () {
return [ return [
{ field: 'nome_circuito', type: tools.FieldType.string }, { field: 'name', type: tools.FieldType.string },
{ field: 'sotto_nome', type: tools.FieldType.string }, { field: 'subname', type: tools.FieldType.string },
{ field: 'path', type: tools.FieldType.string },
{ field: 'nome_valuta', type: tools.FieldType.string }, { field: 'nome_valuta', type: tools.FieldType.string },
{ field: 'descr', type: tools.FieldType.string }, { field: 'descr', type: tools.FieldType.string },
]; ];
@@ -245,13 +272,17 @@ CircuitSchema.statics.getWhatToShow = function (idapp, username) {
date_updated: 1, date_updated: 1,
nome_valuta: 1, nome_valuta: 1,
fido_scoperto_default: 1, fido_scoperto_default: 1,
qta_max_default: 1,
fido_scoperto_default_grp: 1,
qta_max_default_grp: 1,
deperimento: 1, deperimento: 1,
transactionsEnabled: 1, transactionsEnabled: 1,
status: 1, status: 1,
qta_max_default: 1,
valuta_per_euro: 1, valuta_per_euro: 1,
symbol: 1, symbol: 1,
idCity: 1, idCity: 1,
strProv: 1,
link_group: 1,
pub_to_share: 1, pub_to_share: 1,
visibility: 1, visibility: 1,
color: 1, color: 1,
@@ -261,6 +292,8 @@ CircuitSchema.statics.getWhatToShow = function (idapp, username) {
admins: 1, admins: 1,
req_users: 1, req_users: 1,
refused_users: 1, refused_users: 1,
req_groups: 1,
refused_groups: 1,
'mycities': 1, 'mycities': 1,
}; };
@@ -304,11 +337,15 @@ CircuitSchema.statics.getWhatToShow_Unknown = function (idapp, username) {
totCircolante: 1, totCircolante: 1,
totTransato: 1, totTransato: 1,
fido_scoperto_default: 1, fido_scoperto_default: 1,
fido_scoperto_default_grp: 1,
qta_max_default_grp: 1,
qta_max_default: 1, qta_max_default: 1,
valuta_per_euro: 1, valuta_per_euro: 1,
symbol: 1, symbol: 1,
color: 1, color: 1,
idCity: 1, idCity: 1,
strProv: 1,
link_group: 1,
pub_to_share: 1, pub_to_share: 1,
visibility: 1, visibility: 1,
abbrev: 1, abbrev: 1,
@@ -320,6 +357,8 @@ CircuitSchema.statics.getWhatToShow_Unknown = function (idapp, username) {
date_updated: 1, date_updated: 1,
req_users: 1, req_users: 1,
refused_users: 1, refused_users: 1,
req_groups: 1,
refused_groups: 1,
transactionsEnabled: 1, transactionsEnabled: 1,
status: 1, status: 1,
'mycities': 1, 'mycities': 1,
@@ -345,14 +384,14 @@ CircuitSchema.statics.getCircuitsByUsername = async function (idapp, username, u
$or: [ $or: [
{ deleted: { $exists: false } }, { deleted: { $exists: false } },
{ deleted: { $exists: true, $eq: false } }], { deleted: { $exists: true, $eq: false } }],
}).lean(); }).sort({ status: -1, numMembers: -1, name: 1 }).lean();
let listcircuits = await Circuit.find({ let listcircuits = await Circuit.find({
idapp, idapp,
$or: [ $or: [
{ deleted: { $exists: false } }, { deleted: { $exists: false } },
{ deleted: { $exists: true, $eq: false } }], { deleted: { $exists: true, $eq: false } }],
}, whatToShow_Unknown).lean(); }, whatToShow_Unknown).sort({ status: -1, numMembers: -1, name: 1 }).lean();
let asked_circuits = await Circuit.find({ let asked_circuits = await Circuit.find({
idapp, idapp,
@@ -362,7 +401,7 @@ CircuitSchema.statics.getCircuitsByUsername = async function (idapp, username, u
$or: [ $or: [
{ deleted: { $exists: false } }, { deleted: { $exists: false } },
{ deleted: { $exists: true, $eq: false } }], { deleted: { $exists: true, $eq: false } }],
}, whatToShow_Unknown).lean(); }, whatToShow_Unknown).sort({ status: -1 }).lean();
let refused_circuits = await Circuit.find({ let refused_circuits = await Circuit.find({
idapp, idapp,
@@ -372,7 +411,7 @@ CircuitSchema.statics.getCircuitsByUsername = async function (idapp, username, u
$or: [ $or: [
{ deleted: { $exists: false } }, { deleted: { $exists: false } },
{ deleted: { $exists: true, $eq: false } }], { deleted: { $exists: true, $eq: false } }],
}, whatToShow_Unknown).lean(); }, whatToShow_Unknown).sort({ status: -1 }).lean();
return { return {
listcircuits, listcircuits,
@@ -430,6 +469,22 @@ CircuitSchema.statics.getCircuitByName = async function (idapp, name) {
}; };
CircuitSchema.statics.getCircuitByProvince = async function (idapp, strProv) {
const myfind = {
idapp,
strProv,
};
try {
return await Circuit.findOne(myfind);
} catch (e) {
return null;
}
};
CircuitSchema.statics.getCircuitById = async function (circuitId) { CircuitSchema.statics.getCircuitById = async function (circuitId) {
const myfind = { const myfind = {
@@ -550,7 +605,8 @@ CircuitSchema.statics.getUsersSingleCircuit = async function (idapp, username, c
username: 1, username: 1,
name: 1, name: 1,
surname: 1, surname: 1,
profile: 1, idapp: 1 /*, 'circuit.name': 1, 'circuit._id': 1*/ profile: 1,
idapp: 1 /*, 'circuit.name': 1, 'circuit._id': 1*/
}, },
}, },
@@ -620,8 +676,8 @@ CircuitSchema.statics.sendCoins = async function (onlycheck, idapp, usernameOrig
if (circuittable) { if (circuittable) {
const myqty = Math.abs(extrarec.qty); const myqty = Math.abs(extrarec.qty);
const accountdestTable = await Account.getAccountByUsernameAndCircuitId(idapp, extrarec.dest, circuittable._id, true); const accountdestTable = await Account.getAccountByUsernameAndCircuitId(idapp, extrarec.dest, circuittable._id, true, extrarec.groupdest, extrarec.contoComDest);
const accountorigTable = await Account.getAccountByUsernameAndCircuitId(idapp, usernameOrig, circuittable._id, true); const accountorigTable = await Account.getAccountByUsernameAndCircuitId(idapp, usernameOrig, circuittable._id, true, extrarec.grouporig, extrarec.contoComOrig);
const circolantePrec = this.getCircolanteSingolaTransaz(accountorigTable, accountdestTable); const circolantePrec = this.getCircolanteSingolaTransaz(accountorigTable, accountdestTable);
@@ -657,16 +713,30 @@ CircuitSchema.statics.sendCoins = async function (onlycheck, idapp, usernameOrig
}; };
await Circuit.updateOne({ _id: circuittable }, { $set: paramstoupdate }); await Circuit.updateOne({ _id: circuittable }, { $set: paramstoupdate });
ris.result = true;
console.log('Inviate Monete da', usernameOrig, extrarec.dest, myqty, extrarec.causal);
ris.useraccounts = await Account.getUserAccounts(idapp, usernameOrig);
extrarec.saldoOrig = accountorigTable.saldo; extrarec.saldoOrig = accountorigTable.saldo;
extrarec.saldoDest = accountdestTable.saldo; extrarec.saldoDest = accountdestTable.saldo;
let orig = usernameOrig;
if (extrarec.grouporig) {
orig = extrarec.grouporig + ' (' + usernameOrig + ')'
}
if (extrarec.contoComOrig) {
orig = extrarec.contoComOrig + ' (' + usernameOrig + ')'
}
let dest = (extrarec.dest ? extrarec.dest : '') + (extrarec.groupDest ? extrarec.groupDest : '') + (extrarec.contoComDest ? extrarec.contoComDest : '');
ris.result = true;
let msg = 'Inviate Monete da ' + orig + ' a ' + dest + ' ' + myqty + ' ' + circuittable.symbol + ' [causale: ' + extrarec.causal + `] [Saldo ${orig}: ` + extrarec.saldoOrig + ' ' + circuittable.symbol + '] ' + ` [Saldo ${dest}: ` + extrarec.saldoDest + ' ' + circuittable.symbol + ']';
console.log(msg);
ris.useraccounts = await Account.getUserAccounts(idapp, usernameOrig);
tools.writeTransactionLog(msg);
tools.sendMsgTelegramToAdmin(idapp, msg);
} else { } else {
console.log('NON Inviate Monete da', usernameOrig, extrarec.dest, myqty, extrarec.causal); // console.log('NON Inviate Monete da', usernameOrig, extrarec.grouporig, extrarec.dest, extrarec.groupdest, myqty, extrarec.causal);
} }
} }
@@ -688,6 +758,13 @@ CircuitSchema.statics.removeReqCircuit = async function (idapp, username, name)
{ $pull: { req_users: { username: { $in: [username] } } } }); { $pull: { req_users: { username: { $in: [username] } } } });
}; };
// Rimuovo la Richiesta del Gruppo sul Circuito
CircuitSchema.statics.removeReqGroupCircuit = async function (idapp, groupname, name) {
return await Circuit.updateOne({ idapp, name },
{ $pull: { req_groups: { groupname: { $in: [groupname] } } } });
};
// Aggiungi agli utenti Rifiutati del Circuito // Aggiungi agli utenti Rifiutati del Circuito
CircuitSchema.statics.refuseReqCircuit = async function (idapp, username, name) { CircuitSchema.statics.refuseReqCircuit = async function (idapp, username, name) {
@@ -705,6 +782,21 @@ CircuitSchema.statics.refuseReqCircuit = async function (idapp, username, name)
}; };
CircuitSchema.statics.refuseReqGroupCircuit = async function (idapp, groupname, name) {
return await Circuit.updateOne({ idapp, name },
{
$push:
{
refused_groups: {
groupname,
date: new Date(),
},
},
});
};
CircuitSchema.statics.updateData = async function (idapp, circuitname) { CircuitSchema.statics.updateData = async function (idapp, circuitname) {
try { try {
@@ -747,6 +839,186 @@ CircuitSchema.statics.setDeperimentoOff = async function () {
}; };
CircuitSchema.statics.getNameByCircuitId = async function (circuitId) {
let circuit = await Circuit.findOne({ _id: circuitId });
if (circuit)
return circuit.name;
return '';
};
CircuitSchema.statics.getCircuitByCircuitId = async function (circuitId) {
return await Circuit.findOne({ _id: circuitId });
};
CircuitSchema.statics.getListAdminsByCircuitPath = async function (idapp, circuitPath) {
let arr = await Circuit.findOne({
idapp,
path: circuitPath,
$or: [
{ deleted: { $exists: false } },
{ deleted: { $exists: true, $eq: false } }],
}, { admins: 1 }).lean();
return arr && arr.admins ? arr.admins : [];
};
// Imposta a tutti i Conti Collettivi, i seguenti minimi e massimi
CircuitSchema.statics.setstrProvByIdCityCircuits = async function (idapp) {
const { City } = require('../models/city');
const arrcircuits = await Circuit.find({ idapp }).lean();
try {
for (const rec of arrcircuits) {
let recstrProv = await City.findOne({ _id: rec.idCity[0] });
if (recstrProv) {
let objProv = {}
objProv['strProv'] = recstrProv.prov;
await Circuit.updateOne({ _id: rec._id }, { $set: objProv });
}
}
} catch (e) {
}
};
CircuitSchema.statics.SetDefMinMaxCollettivi = async function (idapp, valmin, valmax) {
ris = await Circuit.updateMany({ idapp, contocom: { "$nin": [null, ""] } },
{
$set:
{
fido_scoperto_default: valmin,
qta_max_default: valmax,
}
});
};
// Imposta a tutti i Conti Personali, i seguenti minimi e massimi
CircuitSchema.statics.SetDefMinMaxPersonali = async function (idapp, valmin, valmax) {
ris = await Circuit.updateMany({ idapp },
{
$set:
{
fido_scoperto_default: valmin,
qta_max_default: valmax,
}
});
};
// Imposta a tutti i Conti Collettivi, i seguenti minimi e massimi
CircuitSchema.statics.replaceAllCircuits = async function (idapp) {
const globalTables = require('../tools/globalTables');
const arrcircuit = await Circuit.find({ idapp }).lean();
let num = 0;
for (const circuit of arrcircuit) {
if (circuit.strProv) {
let nomeprovincia = await Province.getStrProvinceByProv(circuit.strProv);
let newname = 'Circuito RIS ' + nomeprovincia;
if (newname !== circuit.name) {
ris = await globalTables.ReplaceCircuitName(idapp, circuit.name, newname);
if (ris)
num++;
}
}
}
console.log('*** Replaced Circuits ', num);
};
CircuitSchema.statics.createCircuitIfNotExist = async function (req, idapp, province) {
const { User } = require('../models/user');
const useradmin = tools.USER_ADMIN_CIRCUITS;
let myrec = null;
try {
const circuit = await this.getCircuitByProvince(idapp, province);
const nomeprovincia = await Province.getStrProvinceByProv(province);
if (!circuit && nomeprovincia) {
const circ = new Circuit({
idapp,
name: 'Circuito RIS ' + nomeprovincia,
path: 'ris' + tools.convertSpaces_ToUScore(nomeprovincia.toLowerCase()),
strProv: province,
photos: [],
admins: [],
color: '#ff5500',
deperimento: false,
transactionsEnabled: false,
status: shared_consts.CIRCUIT_STATUS.FASE1_CREAZIONE_GRUPPO,
symbol: 'RIS',
fido_scoperto_default: 100,
qta_max_default: 200,
fido_scoperto_default_grp: shared_consts.CIRCUIT_PARAMS.SCOPERTO_MIN_GRP,
qta_max_default_grp: shared_consts.CIRCUIT_PARAMS.SCOPERTO_MAX_GRP,
valuta_per_euro: 1,
totTransato: 0,
totCircolante: 0,
date_created: new Date(),
admins: [{ username: useradmin }],
});
myrec = await circ.save();
if (myrec) {
// nuovo Circuito:
await User.setCircuitCmd(idapp, useradmin, myrec.name,
shared_consts.CIRCUITCMD.CREATE, true, useradmin, myrec).then((ris) => {
});
// aggiungi il creatore al Circuito stesso
await User.setCircuitCmd(idapp, useradmin, myrec.name,
shared_consts.CIRCUITCMD.SET, true, useradmin, myrec).then((ris) => {
});
}
msg = 'Nuovo Circuito Creato in Automatico: ' + myrec.name + ' (da ' + req.user.username + ')';
tools.sendMsgTelegramToAdmin(idapp, msg);
}
} catch (e) {
console.error('Error', e);
}
return myrec;
};
CircuitSchema.statics.SetDefMinMaxCollettivi = async function (idapp, valmin, valmax) {
ris = await Circuit.updateMany({ idapp },
{
$set:
{
fido_scoperto_default_grp: valmin,
qta_max_default_grp: valmax,
}
});
};
const Circuit = mongoose.model('Circuit', CircuitSchema); const Circuit = mongoose.model('Circuit', CircuitSchema);
module.exports = { Circuit }; module.exports = { Circuit };

View File

@@ -114,7 +114,7 @@ ExtraListSchema.statics.getTotInLista = async function (idapp) {
const myfind = { idapp }; const myfind = { idapp };
return await ExtraList.count(myfind); return await ExtraList.countDocuments(myfind);
}; };
ExtraListSchema.statics.getRegDellaLista = async function (idapp) { ExtraListSchema.statics.getRegDellaLista = async function (idapp) {
@@ -122,7 +122,7 @@ ExtraListSchema.statics.getRegDellaLista = async function (idapp) {
const myfind = { idapp, registered: true }; const myfind = { idapp, registered: true };
return await ExtraList.count(myfind); return await ExtraList.countDocuments(myfind);
}; };
ExtraListSchema.statics.getLastUser = function (idapp) { ExtraListSchema.statics.getLastUser = function (idapp) {

View File

@@ -138,7 +138,7 @@ GraduatoriaSchema.statics.findByAllRecByUsername = function (idapp, username) {
GraduatoriaSchema.statics.getNumDaImbarcare = async function (idapp) { GraduatoriaSchema.statics.getNumDaImbarcare = async function (idapp) {
const Graduatoria = this; const Graduatoria = this;
return await Graduatoria.count({ idapp }) return await Graduatoria. countDocuments({ idapp })
}; };

View File

@@ -74,7 +74,7 @@ MailingListSchema.statics.getnumSent = async function (idapp, idmailinglist) {
// Extract only the Teacher where in the users table the field permissions is set 'Teacher' bit. // Extract only the Teacher where in the users table the field permissions is set 'Teacher' bit.
return await MailingList.count(myfind); return await MailingList.countDocuments(myfind);
}; };
MailingListSchema.statics.isOk = async function (idapp, iduser, idmailinglist) { MailingListSchema.statics.isOk = async function (idapp, iduser, idmailinglist) {
@@ -84,7 +84,7 @@ MailingListSchema.statics.isOk = async function (idapp, iduser, idmailinglist) {
// Extract only the Teacher where in the users table the field permissions is set 'Teacher' bit. // Extract only the Teacher where in the users table the field permissions is set 'Teacher' bit.
return await MailingList.count(myfind) > 0; return await MailingList.countDocuments(myfind) > 0;
}; };
MailingListSchema.statics.findAllIdApp = async function (idapp) { MailingListSchema.statics.findAllIdApp = async function (idapp) {

View File

@@ -6,8 +6,8 @@ mongoose.level = 'F';
const tools = require('../tools/general'); const tools = require('../tools/general');
const {ObjectID} = require('mongodb'); const { ObjectID } = require('mongodb');
const {Account} = require('../models/account'); const { Account } = require('../models/account');
// Resolving error Unknown modifier: $pushAll // Resolving error Unknown modifier: $pushAll
mongoose.plugin(schema => { mongoose.plugin(schema => {
@@ -17,7 +17,7 @@ mongoose.plugin(schema => {
const MovementSchema = new Schema({ const MovementSchema = new Schema({
_id: { _id: {
type: String, type: String,
default: function() { default: function () {
return new ObjectID().toString(); return new ObjectID().toString();
}, },
}, },
@@ -56,17 +56,17 @@ const MovementSchema = new Schema({
}, },
}); });
MovementSchema.statics.findAllIdApp = async function(idapp) { MovementSchema.statics.findAllIdApp = async function (idapp) {
const MyMovement = this; const MyMovement = this;
const myfind = {idapp}; const myfind = { idapp };
return await MyMovement.find(myfind, (err, arrrec) => { return await MyMovement.find(myfind, (err, arrrec) => {
return arrrec; return arrrec;
}); });
}; };
MovementSchema.pre('save', async function(next) { MovementSchema.pre('save', async function (next) {
if (this.isNew) { if (this.isNew) {
this.transactionDate = new Date(); this.transactionDate = new Date();
@@ -75,38 +75,38 @@ MovementSchema.pre('save', async function(next) {
next(); next();
}); });
MovementSchema.statics.getFieldsForSearch = function() { MovementSchema.statics.getFieldsForSearch = function () {
return [ return [
{field: 'causal', type: tools.FieldType.string}, { field: 'causal', type: tools.FieldType.string },
{field: 'amount', type: tools.FieldType.number}, { field: 'amount', type: tools.FieldType.number },
]; ];
}; };
MovementSchema.statics.executeQueryTable = function(idapp, params) { MovementSchema.statics.executeQueryTable = function (idapp, params) {
params.fieldsearch = this.getFieldsForSearch(); params.fieldsearch = this.getFieldsForSearch();
return tools.executeQueryTable(this, 0, params); return tools.executeQueryTable(this, 0, params);
}; };
MovementSchema.statics.addMov = async function(idapp, accountFromIdTable, accountToIdTable, amount, causal, notifId) { MovementSchema.statics.addMov = async function (idapp, accountFromIdTable, accountToIdTable, amount, causal, notifId) {
try { try {
// Only positive values // Only positive values
amount = Math.abs(amount); amount = Math.abs(amount);
let mymov = await Movement.create( let mymov = await Movement.create(
{ {
_id: new ObjectID().toString(), _id: new ObjectID().toString(),
idapp, idapp,
transactionDate: new Date(), transactionDate: new Date(),
accountFromId: accountFromIdTable._id, accountFromId: accountFromIdTable._id,
accountToId: accountToIdTable._id, accountToId: accountToIdTable._id,
amount, amount,
causal, causal,
residual: 0, residual: 0,
notifId, notifId,
// expiringDate: // expiringDate:
}, },
); );
if (mymov) { if (mymov) {
@@ -122,13 +122,13 @@ MovementSchema.statics.addMov = async function(idapp, accountFromIdTable, accoun
} }
}; };
MovementSchema.statics.getQueryMovsByCircuitId = async function(idapp, username, circuitId) { MovementSchema.statics.getQueryMovsByCircuitId = async function (idapp, username, groupname, contocom, circuitId) {
try { try {
if (!circuitId) { if (!circuitId) {
return []; return [];
} }
const myaccount = await Account.getAccountByUsernameAndCircuitId(idapp, username, circuitId, false); const myaccount = await Account.getAccountByUsernameAndCircuitId(idapp, username, circuitId, false, groupname, contocom);
if (myaccount) { if (myaccount) {
@@ -137,8 +137,8 @@ MovementSchema.statics.getQueryMovsByCircuitId = async function(idapp, username,
$match: { $match: {
idapp, idapp,
$or: [ $or: [
{accountFromId: myaccount._id}, { accountFromId: myaccount._id },
{accountToId: myaccount._id}], { accountToId: myaccount._id }],
}, },
}, },
{ {
@@ -149,30 +149,91 @@ MovementSchema.statics.getQueryMovsByCircuitId = async function(idapp, username,
as: 'accfrom', as: 'accfrom',
}, },
}, },
{$unwind: '$accfrom'}, { $unwind: '$accfrom' },
{ {
$lookup: { $lookup: {
from: 'users', from: 'users',
let: {username: '$accfrom.username', idapp: '$accfrom.idapp'}, let: { username: '$accfrom.username', idapp: '$accfrom.idapp' },
pipeline: [ pipeline: [
{ {
$match: $match:
{ {
$expr: $expr:
{ {
$and: $and:
[ [
{$eq: ['$$username', '$username']}, { $eq: ['$$username', '$username'] },
{$eq: ['$$idapp', '$idapp']}, { $eq: ['$$idapp', '$idapp'] },
], ],
}, },
}, },
}, },
], ],
as: 'userfrom', as: 'userfrom',
}, },
}, },
{$unwind: '$userfrom'}, {
$unwind: {
path: '$userfrom',
preserveNullAndEmptyArrays: true,
},
},
{
$lookup: {
from: 'mygroups',
let: { groupname: '$accfrom.groupname', idapp: '$accfrom.idapp' },
pipeline: [
{
$match:
{
$expr:
{
$and:
[
{ $eq: ['$$groupname', '$groupname'] },
{ $eq: ['$$idapp', '$idapp'] },
],
},
},
},
],
as: 'groupfrom',
},
},
{
$unwind: {
path: '$groupfrom',
preserveNullAndEmptyArrays: true,
},
},
{
$lookup: {
from: 'circuits',
let: { contocom: '$accfrom.contocom', idapp: '$accfrom.idapp' },
pipeline: [
{
$match:
{
$expr:
{
$and:
[
{ $eq: ['$$contocom', '$path'] },
{ $eq: ['$$idapp', '$idapp'] },
],
},
},
},
],
as: 'contocomfrom',
},
},
{
$unwind: {
path: '$contocomfrom',
preserveNullAndEmptyArrays: true,
},
},
{ {
$lookup: { $lookup: {
from: 'accounts', from: 'accounts',
@@ -181,66 +242,137 @@ MovementSchema.statics.getQueryMovsByCircuitId = async function(idapp, username,
as: 'accto', as: 'accto',
}, },
}, },
{$unwind: '$accto'}, { $unwind: '$accto' },
{ {
'$lookup': { $lookup: {
'from': 'circuits', from: 'circuits',
'localField': 'accfrom.circuitId', localField: 'accfrom.circuitId',
'foreignField': '_id', foreignField: '_id',
'as': 'circuitfrom', as: 'circuitfrom',
}, },
}, },
{ {
'$unwind': '$circuitfrom', $unwind: '$circuitfrom',
}, },
{ {
'$lookup': { $lookup: {
'from': 'circuits', from: 'circuits',
'localField': 'accto.circuitId', localField: 'accto.circuitId',
'foreignField': '_id', foreignField: '_id',
'as': 'circuitto', as: 'circuitto',
}, },
}, },
{ {
'$unwind': '$circuitto', $unwind: '$circuitto',
}, },
{ {
$lookup: { $lookup: {
from: 'users', from: 'users',
let: {username: '$accto.username', idapp: '$accto.idapp'}, let: { username: '$accto.username', idapp: '$accto.idapp' },
pipeline: [ pipeline: [
{ {
$match: $match:
{ {
$expr: $expr:
{ {
$and: $and:
[ [
{$eq: ['$$username', '$username']}, { $eq: ['$$username', '$username'] },
{$eq: ['$$idapp', '$idapp']}, { $eq: ['$$idapp', '$idapp'] },
], ],
}, },
}, },
}, },
], ],
as: 'userto', as: 'userto',
}, },
}, },
{$unwind: '$userto'}, {
$unwind: {
path: '$userto',
preserveNullAndEmptyArrays: true,
},
},
{
$lookup: {
from: 'mygroups',
let: { groupname: '$accto.groupname', idapp: '$accto.idapp' },
pipeline: [
{
$match:
{
$expr:
{
$and:
[
{ $eq: ['$$groupname', '$groupname'] },
{ $eq: ['$$idapp', '$idapp'] },
],
},
},
},
],
as: 'groupto',
},
},
{
$unwind: {
path: '$groupto',
preserveNullAndEmptyArrays: true,
},
},
{
$lookup: {
from: 'circuits',
let: { contocom: '$accto.contocom', idapp: '$accto.idapp' },
pipeline: [
{
$match:
{
$expr:
{
$and:
[
{ $eq: ['$$contocom', '$path'] },
{ $eq: ['$$idapp', '$idapp'] },
],
},
},
},
],
as: 'contocomto',
},
},
{
$unwind: {
path: '$contocomto',
preserveNullAndEmptyArrays: true,
},
},
{ {
$project: $project:
{ {
transactionDate: 1, transactionDate: 1,
amount: 1, amount: 1,
causal: 1, causal: 1,
notifId: 1, notifId: 1,
'circuitfrom.symbol': 1, 'circuitfrom.symbol': 1,
'circuitto.symbol': 1, 'circuitto.symbol': 1,
'userfrom.username': 1, 'userfrom.username': 1,
'userfrom.profile.img': 1, 'userfrom.profile.img': 1,
'userto.username': 1, 'userto.username': 1,
'userto.profile.img': 1, 'userto.profile.img': 1,
}, 'groupfrom.groupname': 1,
'groupfrom.title': 1,
'groupfrom.photos': 1,
'groupto.groupname': 1,
'groupto.title': 1,
'groupto.photos': 1,
'contocomfrom.path': 1,
'contocomfrom.name': 1,
'contocomto.path': 1,
'contocomto.name': 1,
},
}, },
]; ];
@@ -255,7 +387,8 @@ MovementSchema.statics.getQueryMovsByCircuitId = async function(idapp, username,
return []; return [];
}; };
MovementSchema.statics.getQueryAllUsersMovsByCircuitId = async function(idapp, circuitId) {
MovementSchema.statics.getQueryAllUsersMovsByCircuitId = async function (idapp, circuitId) {
try { try {
if (!circuitId) { if (!circuitId) {
@@ -275,24 +408,24 @@ MovementSchema.statics.getQueryAllUsersMovsByCircuitId = async function(idapp, c
as: 'accfrom', as: 'accfrom',
}, },
}, },
{$unwind: '$accfrom'}, { $unwind: '$accfrom' },
{ {
$lookup: { $lookup: {
from: 'users', from: 'users',
let: {username: '$accfrom.username', idapp: '$accfrom.idapp'}, let: { username: '$accfrom.username', idapp: '$accfrom.idapp' },
pipeline: [ pipeline: [
{ {
$match: $match:
{ {
$expr: $expr:
{ {
$and: $and:
[ [
{$eq: ['$$username', '$username']}, { $eq: ['$$username', '$username'] },
{$eq: ['$$idapp', '$idapp']}, { $eq: ['$$idapp', '$idapp'] },
], ],
}, },
}, },
}, },
], ],
as: 'userfrom', as: 'userfrom',
@@ -304,6 +437,62 @@ MovementSchema.statics.getQueryAllUsersMovsByCircuitId = async function(idapp, c
preserveNullAndEmptyArrays: true, preserveNullAndEmptyArrays: true,
}, },
}, },
{
$lookup: {
from: 'mygroups',
let: { groupname: '$accfrom.groupname', idapp: '$accfrom.idapp' },
pipeline: [
{
$match:
{
$expr:
{
$and:
[
{ $eq: ['$$groupname', '$groupname'] },
{ $eq: ['$$idapp', '$idapp'] },
],
},
},
},
],
as: 'groupfrom',
},
},
{
$unwind: {
path: '$groupfrom',
preserveNullAndEmptyArrays: true,
},
},
{
$lookup: {
from: 'circuits',
let: { contocom: '$accfrom.contocom', idapp: '$accfrom.idapp' },
pipeline: [
{
$match:
{
$expr:
{
$and:
[
{ $eq: ['$$contocom', '$path'] },
{ $eq: ['$$idapp', '$idapp'] },
],
},
},
},
],
as: 'contocomfrom',
},
},
{
$unwind: {
path: '$contocomfrom',
preserveNullAndEmptyArrays: true,
},
},
{ {
$lookup: { $lookup: {
from: 'accounts', from: 'accounts',
@@ -319,7 +508,7 @@ MovementSchema.statics.getQueryAllUsersMovsByCircuitId = async function(idapp, c
}, },
}, },
{ {
$match: {'accto.circuitId': circuitId}, $match: { 'accto.circuitId': circuitId },
}, },
{ {
'$lookup': { '$lookup': {
@@ -352,20 +541,20 @@ MovementSchema.statics.getQueryAllUsersMovsByCircuitId = async function(idapp, c
{ {
$lookup: { $lookup: {
from: 'users', from: 'users',
let: {username: '$accto.username', idapp: '$accto.idapp'}, let: { username: '$accto.username', idapp: '$accto.idapp' },
pipeline: [ pipeline: [
{ {
$match: $match:
{ {
$expr: $expr:
{ {
$and: $and:
[ [
{$eq: ['$$username', '$username']}, { $eq: ['$$username', '$username'] },
{$eq: ['$$idapp', '$idapp']}, { $eq: ['$$idapp', '$idapp'] },
], ],
}, },
}, },
}, },
], ],
as: 'userto', as: 'userto',
@@ -378,19 +567,85 @@ MovementSchema.statics.getQueryAllUsersMovsByCircuitId = async function(idapp, c
}, },
}, },
{ {
$project: $lookup: {
from: 'mygroups',
let: { groupname: '$accto.groupname', idapp: '$accto.idapp' },
pipeline: [
{ {
transactionDate: 1, $match:
amount: 1, {
causal: 1, $expr:
notifId: 1, {
'circuitfrom.symbol': 1, $and:
'circuitto.symbol': 1, [
'userfrom.username': 1, { $eq: ['$$groupname', '$groupname'] },
'userfrom.profile.img': 1, { $eq: ['$$idapp', '$idapp'] },
'userto.username': 1, ],
'userto.profile.img': 1, },
},
}, },
],
as: 'groupto',
},
},
{
$unwind: {
path: '$groupto',
preserveNullAndEmptyArrays: true,
},
},
{
$lookup: {
from: 'circuits',
let: { contocom: '$accto.contocom', idapp: '$accto.idapp' },
pipeline: [
{
$match:
{
$expr:
{
$and:
[
{ $eq: ['$$contocom', '$path'] },
{ $eq: ['$$idapp', '$idapp'] },
],
},
},
},
],
as: 'contocomto',
},
},
{
$unwind: {
path: '$contocomto',
preserveNullAndEmptyArrays: true,
},
},
{
$project:
{
transactionDate: 1,
amount: 1,
causal: 1,
notifId: 1,
'circuitfrom.symbol': 1,
'circuitto.symbol': 1,
'userfrom.username': 1,
'userfrom.profile.img': 1,
'userto.username': 1,
'userto.profile.img': 1,
'groupfrom.groupname': 1,
'groupfrom.title': 1,
'groupto.groupname': 1,
'groupto.title': 1,
'contocomfrom.path': 1,
'contocomfrom.name': 1,
'contocomfrom.title': 1,
'contocomto.path': 1,
'contocomto.name': 1,
'contocomto.title': 1,
},
}, },
]; ];
@@ -404,10 +659,10 @@ MovementSchema.statics.getQueryAllUsersMovsByCircuitId = async function(idapp, c
return []; return [];
}; };
MovementSchema.statics.getMovsByCircuitId = async function(idapp, username, circuitId) { MovementSchema.statics.getMovsByCircuitId = async function (idapp, username, circuitId) {
const MyMovement = this; const MyMovement = this;
const myquery = await MyMovement.getQueryMovsByCircuitId(idapp, username, circuitId); const myquery = await MyMovement.getQueryMovsByCircuitId(idapp, username, '', '', circuitId);
if (myquery && myquery.length > 0) { if (myquery && myquery.length > 0) {
ris = await MyMovement.aggregate(myquery); ris = await MyMovement.aggregate(myquery);
@@ -418,11 +673,11 @@ MovementSchema.statics.getMovsByCircuitId = async function(idapp, username, circ
return []; return [];
}; };
MovementSchema.statics.checkIfCoinsAlreadySent = async function(notifId) { MovementSchema.statics.checkIfCoinsAlreadySent = async function (notifId) {
const MyMovement = this; const MyMovement = this;
try { try {
const rec = await MyMovement.findOne({notifId}, {_id: 1}); const rec = await MyMovement.findOne({ notifId }, { _id: 1 });
return !!rec; return !!rec;
@@ -436,4 +691,4 @@ MovementSchema.statics.checkIfCoinsAlreadySent = async function(notifId) {
const Movement = mongoose.model('Movement', MovementSchema); const Movement = mongoose.model('Movement', MovementSchema);
module.exports = {Movement}; module.exports = { Movement };

View File

@@ -75,8 +75,9 @@ const MyGroupSchema = new Schema({
}, },
admins: [ admins: [
{ {
username: {type: String}, username: { type: String },
date: {type: Date}, perm: { type: Number },
date: { type: Date },
}, },
], ],
blocked: { blocked: {
@@ -97,34 +98,38 @@ const MyGroupSchema = new Schema({
req_users: [ req_users: [
{ {
_id: false, _id: false,
username: {type: String}, username: { type: String },
date: {type: Date}, date: { type: Date },
}], // username }], // username
refused_users: [ refused_users: [
{ {
_id: false, _id: false,
username: {type: String}, username: { type: String },
date: {type: Date}, date: { type: Date },
}], // username }], // username
deleted: { deleted: {
type: Boolean, type: Boolean,
default: false, default: false,
}, },
circuits_list: [ mycircuits: [
{ {
Num: { type: Number }, _id: false,
inscription_date: {type: Date}, circuitname: { type: String },
date: { type: Date },
}], }],
lastdate_reqRisGroup: {
type: Date,
},
}); });
MyGroupSchema.statics.getFieldsForSearch = function() { MyGroupSchema.statics.getFieldsForSearch = function () {
return [{field: 'descr', type: tools.FieldType.string}]; return [{ field: 'descr', type: tools.FieldType.string }];
}; };
MyGroupSchema.statics.executeQueryTable = function(idapp, params, user) { MyGroupSchema.statics.executeQueryTable = function (idapp, params, user) {
params.fieldsearch = this.getFieldsForSearch(); params.fieldsearch = this.getFieldsForSearch();
const {User} = require('./user'); const { User } = require('./user');
if (params.options) { if (params.options) {
if (tools.isBitActive(params.options, shared_consts.OPTIONS_SEARCH_USER_ONLY_FULL_WORDS)) { if (tools.isBitActive(params.options, shared_consts.OPTIONS_SEARCH_USER_ONLY_FULL_WORDS)) {
@@ -137,9 +142,9 @@ MyGroupSchema.statics.executeQueryTable = function(idapp, params, user) {
return tools.executeQueryTable(this, idapp, params, user); return tools.executeQueryTable(this, idapp, params, user);
}; };
MyGroupSchema.pre('save', async function(next) { MyGroupSchema.pre('save', async function (next) {
if (this.isNew) { if (this.isNew) {
const myrec = await MyGroup.findOne().limit(1).sort({_id: -1}); const myrec = await MyGroup.findOne().limit(1).sort({ _id: -1 });
if (!!myrec) { if (!!myrec) {
if (myrec._doc._id === 0) if (myrec._doc._id === 0)
this._id = 1; this._id = 1;
@@ -156,71 +161,85 @@ MyGroupSchema.pre('save', async function(next) {
next(); next();
}); });
MyGroupSchema.statics.findAllIdApp = async function(idapp) { MyGroupSchema.statics.findAllIdApp = async function (idapp) {
const myfind = {idapp}; const myfind = { idapp };
return await MyGroup.find(myfind); return await MyGroup.find(myfind);
}; };
MyGroupSchema.statics.findAllGroups = async function(idapp) { MyGroupSchema.statics.findAllGroups = async function (idapp) {
const whatToShow = this.getWhatToShow(idapp, ''); const whatToShow = this.getWhatToShow(idapp, '');
return await MyGroup.find({ return await MyGroup.find({
idapp, idapp,
$or: [ $or: [
{deleted: {$exists: false}}, { deleted: { $exists: false } },
{deleted: {$exists: true, $eq: false}}], { deleted: { $exists: true, $eq: false } }],
}, whatToShow); }, whatToShow);
}; };
// Rimuovo la Richiesta del Gruppo // Rimuovo la Richiesta del Gruppo
MyGroupSchema.statics.removeReqGroup = async function(idapp, username, groupnameDest) { MyGroupSchema.statics.removeReqGroup = async function (idapp, username, groupnameDest) {
return await MyGroup.updateOne({idapp, groupname: groupnameDest}, return await MyGroup.updateOne({ idapp, groupname: groupnameDest },
{$pull: {req_users: {username: {$in: [username]}}}}); { $pull: { req_users: { username: { $in: [username] } } } });
}; };
// Aggiungi agli utenti Rifiutati del Gruppo // Aggiungi agli utenti Rifiutati del Gruppo
MyGroupSchema.statics.refuseReqGroup = async function(idapp, username, groupnameDest) { MyGroupSchema.statics.refuseReqGroup = async function (idapp, username, groupnameDest) {
return await MyGroup.updateOne({idapp, groupname: groupnameDest}, return await MyGroup.updateOne({ idapp, groupname: groupnameDest },
{
$push:
{ {
$push: refused_users: {
{ username,
refused_users: { date: new Date(),
username, },
date: new Date(), },
}, });
},
});
}; };
// Aggiungi agli Admin del Gruppo // Aggiungi agli Admin del Gruppo
MyGroupSchema.statics.addToAdminOfMyGroup = async function(idapp, username, groupnameDest) { MyGroupSchema.statics.addToAdminOfMyGroup = async function (idapp, username, groupnameDest) {
return await MyGroup.updateOne({idapp, groupname: groupnameDest}, return await MyGroup.updateOne({ idapp, groupname: groupnameDest },
{
$push:
{ {
$push: admins: {
{ username,
admins: { date: new Date(),
username, },
date: new Date(), },
}, });
},
});
}; };
// Rimuovi dagli Admin del Gruppo // Rimuovi dagli Admin del Gruppo
MyGroupSchema.statics.removeAdminOfMyGroup = async function(idapp, username, groupnameDest) { MyGroupSchema.statics.removeAdminOfMyGroup = async function (idapp, username, groupnameDest) {
return await MyGroup.updateOne({idapp, groupname: groupnameDest}, return await MyGroup.updateOne({ idapp, groupname: groupnameDest },
{$pull: {admins: {username: {$in: [username]}}}}); { $pull: { admins: { username: { $in: [username] } } } });
}; };
MyGroupSchema.statics.getWhatToShow = function(idapp, username) { MyGroupSchema.statics.getListAdminsByGroupName = async function (idapp, groupname) {
let arr = await MyGroup.findOne({
idapp,
groupname,
$or: [
{ deleted: { $exists: false } },
{ deleted: { $exists: true, $eq: false } }],
}, { admins: 1 }).lean();
return arr && arr.admins ? arr.admins : [];
};
MyGroupSchema.statics.getWhatToShow = function (idapp, username) {
// FOR ME, PERMIT ALL // FOR ME, PERMIT ALL
return { return {
groupname: 1, groupname: 1,
@@ -242,12 +261,13 @@ MyGroupSchema.statics.getWhatToShow = function(idapp, username) {
createdBy: 1, createdBy: 1,
date_created: 1, date_created: 1,
date_updated: 1, date_updated: 1,
circuits_list: 1, mycircuits: 1,
lastdate_reqRisGroup: 1,
}; };
}; };
MyGroupSchema.statics.getWhatToShow_Unknown = function(idapp, username) { MyGroupSchema.statics.getWhatToShow_Unknown = function (idapp, username) {
return { return {
groupname: 1, groupname: 1,
title: 1, title: 1,
@@ -259,14 +279,15 @@ MyGroupSchema.statics.getWhatToShow_Unknown = function(idapp, username) {
note: 1, note: 1,
date_created: 1, date_created: 1,
date_updated: 1, date_updated: 1,
circuits_list: 1, mycircuits: 1,
lastdate_reqRisGroup: 1,
}; };
}; };
MyGroupSchema.statics.getArrUsernameFromFieldByGroupname = async function( MyGroupSchema.statics.getArrUsernameFromFieldByGroupname = async function (
idapp, groupname, field) { idapp, groupname, field) {
const {User} = require('../models/user'); const { User } = require('../models/user');
const myobj = {}; const myobj = {};
myobj[field + '.' + subfield] = 1; myobj[field + '.' + subfield] = 1;
@@ -274,7 +295,7 @@ MyGroupSchema.statics.getArrUsernameFromFieldByGroupname = async function(
let arrrec = await User.findOne({ let arrrec = await User.findOne({
idapp, idapp,
groupname, groupname,
$or: [{deleted: {$exists: false}}, {deleted: {$exists: true, $eq: false}}], $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }],
}, myobj).then((ris) => ris ? ris._doc[field] : []); }, myobj).then((ris) => ris ? ris._doc[field] : []);
if (arrrec.length > 0) { if (arrrec.length > 0) {
@@ -284,7 +305,7 @@ MyGroupSchema.statics.getArrUsernameFromFieldByGroupname = async function(
}; };
MyGroupSchema.statics.getInfoGroupByGroupname = async function(idapp, groupname) { MyGroupSchema.statics.getInfoGroupByGroupname = async function (idapp, groupname) {
const whatToShow = this.getWhatToShow(idapp, groupname); const whatToShow = this.getWhatToShow(idapp, groupname);
@@ -294,13 +315,13 @@ MyGroupSchema.statics.getInfoGroupByGroupname = async function(idapp, groupname)
}; };
const query = [ const query = [
{$match: myfind}, { $match: myfind },
{ $unwind: '$circuits_list' }, { $unwind: '$mycircuits' },
{ {
$lookup: { $lookup: {
from: 'circuits', from: 'circuits',
localField: 'circuits_list.Num', localField: 'mycircuits.circuitname',
foreignField: 'Num', foreignField: 'name',
as: 'mycircuits', as: 'mycircuits',
}, },
}, },
@@ -319,7 +340,7 @@ MyGroupSchema.statics.getInfoGroupByGroupname = async function(idapp, groupname)
}, },
}, },
}, },
{$project: whatToShow}, { $project: whatToShow },
]; ];
@@ -336,15 +357,15 @@ MyGroupSchema.statics.getInfoGroupByGroupname = async function(idapp, groupname)
}; };
MyGroupSchema.statics.deleteGroup = async function(idapp, usernameOrig, groupname) { MyGroupSchema.statics.deleteGroup = async function (idapp, usernameOrig, groupname) {
console.log('Gruppo ' + groupname + ' rimosso da ' + usernameOrig); console.log('Gruppo ' + groupname + ' rimosso da ' + usernameOrig);
return await MyGroup.findOneAndRemove({idapp, groupname}); return await MyGroup.findOneAndRemove({ idapp, groupname });
}; };
MyGroupSchema.statics.getGroupsByUsername = async function(idapp, username, req) { MyGroupSchema.statics.getGroupsByUsername = async function (idapp, username, req) {
try { try {
const {User} = require('../models/user'); const { User } = require('../models/user');
const whatToShow = this.getWhatToShow(idapp, username); const whatToShow = this.getWhatToShow(idapp, username);
const whatToShow_Unknown = this.getWhatToShow_Unknown(idapp, username); const whatToShow_Unknown = this.getWhatToShow_Unknown(idapp, username);
@@ -353,17 +374,17 @@ MyGroupSchema.statics.getGroupsByUsername = async function(idapp, username, req)
let listUsersGroup = await User.find({ let listUsersGroup = await User.find({
idapp, idapp,
username: {$in: arrUsernameGroups}, username: { $in: arrUsernameGroups },
$or: [ $or: [
{deleted: {$exists: false}}, { deleted: { $exists: false } },
{deleted: {$exists: true, $eq: false}}], { deleted: { $exists: true, $eq: false } }],
}, whatToShow); }, whatToShow);
let listgroups = await MyGroup.find({ let listgroups = await MyGroup.find({
idapp, idapp,
$or: [ $or: [
{deleted: {$exists: false}}, { deleted: { $exists: false } },
{deleted: {$exists: true, $eq: false}}], { deleted: { $exists: true, $eq: false } }],
}, whatToShow_Unknown); }, whatToShow_Unknown);
/*let listRequestUsersGroup = await User.find({ /*let listRequestUsersGroup = await User.find({
@@ -379,21 +400,21 @@ MyGroupSchema.statics.getGroupsByUsername = async function(idapp, username, req)
let listSentRequestGroups = await MyGroup.find({ let listSentRequestGroups = await MyGroup.find({
idapp, idapp,
'req_users': { 'req_users': {
$elemMatch: {username: {$eq: username}}, $elemMatch: { username: { $eq: username } },
}, },
$or: [ $or: [
{deleted: {$exists: false}}, { deleted: { $exists: false } },
{deleted: {$exists: true, $eq: false}}], { deleted: { $exists: true, $eq: false } }],
}, whatToShow_Unknown); }, whatToShow_Unknown);
let listRefusedGroups = await MyGroup.find({ let listRefusedGroups = await MyGroup.find({
idapp, idapp,
'refused_users': { 'refused_users': {
$elemMatch: {username: {$eq: username}}, $elemMatch: { username: { $eq: username } },
}, },
$or: [ $or: [
{deleted: {$exists: false}}, { deleted: { $exists: false } },
{deleted: {$exists: true, $eq: false}}], { deleted: { $exists: true, $eq: false } }],
}, whatToShow_Unknown); }, whatToShow_Unknown);
return { return {
@@ -418,12 +439,12 @@ MyGroupSchema.statics.getGroupsByUsername = async function(idapp, username, req)
}; };
}; };
MyGroupSchema.statics.extractCitiesName = async function(idapp, id) { MyGroupSchema.statics.extractCitiesName = async function (idapp, id) {
try { try {
let aggr1 = [ let aggr1 = [
{ {
$match: {idapp, _id: id}, $match: { idapp, _id: id },
}, },
{ {
$lookup: { $lookup: {
@@ -459,13 +480,157 @@ MyGroupSchema.statics.extractCitiesName = async function(idapp, id) {
ris = await this.aggregate(aggr1); ris = await this.aggregate(aggr1);
return ris; return ris;
}catch (e) { } catch (e) {
console.error('e', e); console.error('e', e);
} }
}; };
MyGroupSchema.statics.ifCircuitAlreadyInGroup = async function (idapp, groupname, circuitname) {
// Controllo se è stato già inserito il circuito sul gruppo
return await this.findOne({
idapp,
groupname,
'mycircuits': {
$elemMatch: { circuitname: { $eq: circuitname } },
},
}).lean();
};
// aggiungo il Circuito all'interno del Gruppo
MyGroupSchema.statics.addCircuitFromGroup = async function (idapp, groupname, circuitname) {
return await this.updateOne({ idapp, groupname },
{
$push: {
'mycircuits': {
circuitname,
date: new Date(),
}
}
});
};
// Rimuovo il Circuito all'interno del Gruppo
MyGroupSchema.statics.removeCircuitFromGroup = async function (idapp, groupname, circuitname) {
return await this.updateOne({ idapp, groupname },
{ $pull: { 'mycircuits': { circuitname: { $in: [circuitname] } } } });
};
MyGroupSchema.statics.getQueryReceiveRISGroups = function (idapp, hours) {
const query = [
{
$match: {
idapp,
'lastdate_reqRisGroup': { $gte: tools.IncDateNow(-(1000 * 60 * 60 * hours)) },
$or: [
{ deleted: { $exists: false } },
{ deleted: { $exists: true, $eq: false } }],
},
},
{
$group:
{
_id: "$groupname",
count: {
$sum: 1,
},
}
},
{ $sort: { 'lastdate_reqRisGroup': -1 } },
{ $limit: 30 },
{
$lookup: {
from: "mygroups",
let: {
groupname: "$_id",
idapp,
},
pipeline: [
{
$match: {
$expr: {
$and: [
{
$eq: [
"$$groupname",
"$groupname",
],
},
{
$eq: [
"$$idapp",
"$idapp",
],
},
],
},
},
},
],
as: "mygroup",
},
},
{ $unwind: "$mygroup" },
{
$replaceRoot: {
newRoot: {
$mergeObjects: ["$mygroup", "$$ROOT"],
},
},
},
{
$project: {
_id: 0,
groupname: 1,
title: 1,
descr: 1,
visibility: 1,
idCatGrp: 1,
userId: 1,
photos: 1,
idCity: 1,
website: 1,
link_telegram: 1,
note: 1,
admins: 1,
blocked: 1,
req_users: 1,
createdBy: 1,
date_created: 1,
date_updated: 1,
lastdate_reqRisGroup: 1,
},
},
];
return query;
};
MyGroupSchema.statics.getReceiveRISGroups = async function (idapp) {
return await this.aggregate(this.getQueryReceiveRISGroups(idapp, 8)).then(ris => {
return ris;
});
};
MyGroupSchema.statics.setReceiveRisGroup = async function (idapp, groupname) {
return await this.findOneAndUpdate({
idapp, groupname,
},
{ $set: { 'lastdate_reqRisGroup': new Date() } }, { new: false }).lean().then((record) => {
return !!record;
});
};
const MyGroup = mongoose.model('MyGroup', MyGroupSchema); const MyGroup = mongoose.model('MyGroup', MyGroupSchema);
module.exports = {MyGroup}; module.exports = { MyGroup };

View File

@@ -135,6 +135,7 @@ const MyPageSchema = new Schema({
MyPageSchema.statics.getFieldsForSearch = function () { MyPageSchema.statics.getFieldsForSearch = function () {
return [{ field: 'title', type: tools.FieldType.string }, return [{ field: 'title', type: tools.FieldType.string },
{ field: 'path', type: tools.FieldType.string },
{ field: 'keywords', type: tools.FieldType.string }, { field: 'keywords', type: tools.FieldType.string },
{ field: 'description', type: tools.FieldType.string }, { field: 'description', type: tools.FieldType.string },
{ field: 'content', type: tools.FieldType.string }] { field: 'content', type: tools.FieldType.string }]

View File

@@ -0,0 +1 @@
<div class="landing" data-v-313f9fef=""><section data-v-313f9fef=""><div class="row justify-between items-start q-col-gutter-sm" data-v-313f9fef=""><div class="col-12" data-v-313f9fef=""><div class="feature-item" data-v-313f9fef="" style="margin-top: 0px !important;"><div class="text-big" data-v-313f9fef="" style="margin: 0px !important; padding: 2px !important;">Come posso sostenere il progetto <b>Riso.app</b>?</div><p class="feat-descr" data-v-313f9fef=""></p><ul class="mylist" style="padding-left: 20px;"><li>📱<b>Condividendo la APP</b> a tutti coloro che vogliono far parte insieme della crescita e sviluppo di una Nuova Era.</li><li>👥 Aiutando a creare Gruppi Territoriali nella vostra città, impegnandosi a realizzare progetti per il Bene Comune, in onore ai principi Amorevoli e di condivisione.</li><li>🌱 Sostenendo le persone attorno a voi, e rispettando la nostra vera Casa: Madre Natura e Tutti gli Esseri Viventi. ❤️</li><li>👨🏻‍💻 Con una <b>piccola donazione</b> per le spese dei Server, manutenzione e per i continui sviluppi e miglioramenti.</li></ul>1) Tramite <b><a href="https://paypal.me/paoloarena" target="_blank"><font size="4">Paypal</font></a></b><br>2) Tramite <b><a href="https://www.satispay.com/app/match/link/money-box/S6Y-SVN--62712D42-35B0-4BB9-8511-410C2AB8CD45" target="_blank"><font size="4">Satispay</font></a></b><br>In alternativa scegli tu una forma di scambio (auto-produzioni di cibo) da donare (per info: <a href="https://t.me/surya1977" target="_blank">Surya Paolo</a>)<br><span style="color: red; font-size: 2rem;"></span>&nbsp;<br>Grazie Mille per l'Aiuto ed il Supporto<br><p></p></div><div class="feature-item" data-v-313f9fef="" style="margin-top: 0px !important;"><br></div></div></div></section></div>

View File

@@ -46,7 +46,14 @@ ProvinceSchema.statics.getRegionByStrProvince = async function(strprovince) {
return ''; return '';
} }
ProvinceSchema.statics.getStrProvinceByProv = async function(prov) {
const myrec = await Province.findOne({prov}).lean();
if (myrec) {
return myrec.descr;
}
return '';
}
ProvinceSchema.statics.getFieldsForSearch = function() { ProvinceSchema.statics.getFieldsForSearch = function() {
return [ return [
@@ -91,7 +98,7 @@ ProvinceSchema.statics.executeQueryPickup = async function(idapp, params) {
ProvinceSchema.statics.findAllIdApp = async function(idapp) { ProvinceSchema.statics.findAllIdApp = async function(idapp) {
const myfind = {}; const myfind = {};
return Province.find(myfind).sort({reg: 1, prov: 1}); return Province.find(myfind).sort({descr: 1});
}; };
const Province = mongoose.model('Province', ProvinceSchema); const Province = mongoose.model('Province', ProvinceSchema);

View File

@@ -6,7 +6,7 @@ mongoose.level = 'F';
const i18n = require('i18n'); const i18n = require('i18n');
const {ObjectID} = require('mongodb'); const { ObjectID } = require('mongodb');
const shared_consts = require('../tools/shared_nodejs'); const shared_consts = require('../tools/shared_nodejs');
@@ -39,10 +39,18 @@ const sendNotifSchema = new Schema({
type: String, type: String,
default: '', default: '',
}, },
title: { descr: {
type: String, type: String,
}, },
descr: { sendergroup: { // mittente
type: String,
default: '',
},
destgroup: {
type: String,
default: '',
},
title: {
type: String, type: String,
}, },
openUrl: { openUrl: {
@@ -90,23 +98,26 @@ const sendNotifSchema = new Schema({
}, },
}); });
sendNotifSchema.statics.setNotifAsRead = function(idapp, username, idnotif) { sendNotifSchema.statics.setNotifAsRead = function (idapp, username, idnotif) {
const SendNotif = this; const SendNotif = this;
if (!username)
return null;
try { try {
if (idnotif) { if (idnotif) {
return SendNotif.findOneAndUpdate({ return SendNotif.findOneAndUpdate({
$and: [ $and: [
{idapp}, { idapp },
{dest: username}, { dest: username },
{'_id': idnotif}, { '_id': idnotif },
], ],
$or: [ $or: [
{deleted: {$exists: false}}, { deleted: { $exists: false } },
{deleted: {$exists: true, $eq: false}}], { deleted: { $exists: true, $eq: false } }],
}, {$set: {read: true}}, {new: false}).then((ret) => { }, { $set: { read: true } }, { new: false }).then((ret) => {
return !!ret; return !!ret;
}).catch((err) => { }).catch((err) => {
console.error('err', err); console.error('err', err);
@@ -117,7 +128,7 @@ sendNotifSchema.statics.setNotifAsRead = function(idapp, username, idnotif) {
} }
}; };
sendNotifSchema.statics.getRecNotif = function(id) { sendNotifSchema.statics.getRecNotif = function (id) {
const SendNotif = this; const SendNotif = this;
try { try {
@@ -128,16 +139,19 @@ sendNotifSchema.statics.getRecNotif = function(id) {
}; };
sendNotifSchema.statics.findAllNotifByUsernameIdAndIdApp = function(username, lastdataread, idapp) { sendNotifSchema.statics.findAllNotifByUsernameIdAndIdApp = function (username, lastdataread, idapp) {
const SendNotif = this; const SendNotif = this;
if (!lastdataread)
lastdataread = 0;
return SendNotif.find({ return SendNotif.find({
$and: [ $and: [
{idapp}, { idapp },
{'dest': username}, { 'dest': username },
{'datenotif': {$gt: new Date(lastdataread)}}, { 'datenotif': { $gt: new Date(lastdataread) } },
], ],
}).lean().sort({datenotif: -1}).then(async (arrnotif) => { }).lean().sort({ datenotif: -1 }).then(async (arrnotif) => {
// console.log('arrnotif', arrnotif.length); // console.log('arrnotif', arrnotif.length);
return this.compileOtherFields(arrnotif); return this.compileOtherFields(arrnotif);
@@ -148,13 +162,13 @@ sendNotifSchema.statics.findAllNotifByUsernameIdAndIdApp = function(username, la
}; };
sendNotifSchema.statics.getDescrAndLinkByRecNotif = async function(recnotif) { sendNotifSchema.statics.getDescrAndLinkByRecNotif = async function (recnotif, userorig) {
const numchars = 80; const numchars = 80;
let newdescr = ''; let newdescr = '';
let mydescr = ''; let mydescr = '';
let myidrec = ''; let myidrec = '';
let userorig = recnotif.sender; let sender = recnotif.sender;
let tag = ''; let tag = '';
try { try {
@@ -174,18 +188,18 @@ sendNotifSchema.statics.getDescrAndLinkByRecNotif = async function(recnotif) {
tag = 'newservice'; tag = 'newservice';
} }
} else if (recnotif.typedir === shared_consts.TypeNotifs.TYPEDIR_FRIENDS) { } else if (recnotif.typedir === shared_consts.TypeNotifs.TYPEDIR_FRIENDS) {
recnotif.openUrl = '/my/' + userorig; recnotif.openUrl = '/my/' + sender;
if (recnotif.typeid === shared_consts.TypeNotifs.ID_FRIENDS_NEW_REC) { if (recnotif.typeid === shared_consts.TypeNotifs.ID_FRIENDS_NEW_REC) {
newdescr = i18n.__('<strong>%s</strong> asked you for Friendship', userorig, mydescr); newdescr = i18n.__('<strong>%s</strong> asked you for Friendship', sender, mydescr);
tag = 'newfriend'; tag = 'newfriend';
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_FRIENDS_ACCEPTED) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_FRIENDS_ACCEPTED) {
newdescr = i18n.__('<strong>%s</strong> accepted your Friendship', userorig, mydescr); newdescr = i18n.__('<strong>%s</strong> accepted your Friendship', sender, mydescr);
tag = 'acceptedfriend'; tag = 'acceptedfriend';
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_FRIENDS_ACCEPTED_MY_REQUEST) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_FRIENDS_ACCEPTED_MY_REQUEST) {
newdescr = i18n.__('✅ You have accepted %s\' Friendship request!', userorig, mydescr); newdescr = i18n.__('✅ You have accepted %s\' Friendship request!', sender, mydescr);
tag = 'acceptedfriend'; tag = 'acceptedfriend';
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_FRIENDS_REFUSED) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_FRIENDS_REFUSED) {
newdescr = i18n.__('<strong>%s</strong> refused your Friendship', userorig, mydescr); newdescr = i18n.__('<strong>%s</strong> refused your Friendship', sender, mydescr);
tag = 'refusedfriend'; tag = 'refusedfriend';
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_FRIENDS_REPORTED) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_FRIENDS_REPORTED) {
tag = 'reportuser'; tag = 'reportuser';
@@ -193,173 +207,254 @@ sendNotifSchema.statics.getDescrAndLinkByRecNotif = async function(recnotif) {
newdescr = i18n.__('FRIEND_REPORTED_YOU', recnotif.paramsObj.username_worked); newdescr = i18n.__('FRIEND_REPORTED_YOU', recnotif.paramsObj.username_worked);
recnotif.openUrl = '/my/' + recnotif.paramsObj.username_worked; recnotif.openUrl = '/my/' + recnotif.paramsObj.username_worked;
} else if (recnotif.paramsObj.isAdmin) { } else if (recnotif.paramsObj.isAdmin) {
newdescr = i18n.__('FRIEND_REPORTED', recnotif.paramsObj.usernameDest, userorig); newdescr = i18n.__('FRIEND_REPORTED', recnotif.paramsObj.usernameDest, sender);
recnotif.openUrl = '/my/' + recnotif.paramsObj.usernameDest; recnotif.openUrl = '/my/' + recnotif.paramsObj.usernameDest;
} else { } else {
recnotif.openUrl = '/my/' + recnotif.paramsObj.username_action; recnotif.openUrl = '/my/' + recnotif.paramsObj.username_action;
newdescr = i18n.__('FRIEND_REPORTED_TO_ME', recnotif.paramsObj.username_action, recnotif.paramsObj.username_action); newdescr = i18n.__('FRIEND_REPORTED_TO_ME', recnotif.paramsObj.username_action, recnotif.paramsObj.username_action);
} }
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_FRIENDS_UNBLOCKED) { }
tag = 'unblockeduser'; } else if (recnotif.typedir === shared_consts.TypeNotifs.TYPEDIR_HANDSHAKE) {
if (recnotif.paramsObj.usernameDest === recnotif.paramsObj.username_action) { recnotif.openUrl = '/my/' + sender;
newdescr = i18n.__('FRIEND_UNBLOCKED_YOU', recnotif.paramsObj.username_worked); if (recnotif.typeid === shared_consts.TypeNotifs.ID_HANDSHAKE_ACCEPTED) {
recnotif.openUrl = '/my/' + recnotif.paramsObj.username_worked; newdescr = i18n.__('HANDSHAKE_SET', sender, mydescr);
} else if (recnotif.paramsObj.isAdmin) { tag = 'acceptedhandshake';
newdescr = i18n.__('FRIEND_UNBLOCKED', recnotif.paramsObj.usernameDest, userorig);
} else {
newdescr = i18n.__('FRIEND_UNBLOCKED_TO_ME', recnotif.paramsObj.username_action, recnotif.paramsObj.username_action);
}
} }
} else if (recnotif.typedir === shared_consts.TypeNotifs.TYPEDIR_GROUPS) { } else if (recnotif.typedir === shared_consts.TypeNotifs.TYPEDIR_GROUPS) {
tag = 'group'; tag = 'group';
recnotif.openUrl = '/grp/' + recnotif.paramsObj.groupnameDest; recnotif.openUrl = '/grp/' + recnotif.paramsObj.groupnameDest;
if (recnotif.typeid === shared_consts.TypeNotifs.ID_GROUP_NEW_REC) { if (recnotif.typeid === shared_consts.TypeNotifs.ID_GROUP_NEW_REC) {
newdescr = i18n.__('GROUP_CREATED', userorig, recnotif.paramsObj.groupnameDest); newdescr = i18n.__('GROUP_CREATED', sender, recnotif.paramsObj.groupnameDest);
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_GROUP_ACCEPTED) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_GROUP_ACCEPTED) {
if (recnotif.paramsObj.isAdmin) { if (recnotif.paramsObj.isAdmin) {
newdescr = i18n.__('ACCETTATO_NOTIFICA_ADMINS', userorig, recnotif.paramsObj.groupnameDest, recnotif.paramsObj.username_action); newdescr = i18n.__('ACCETTATO_NOTIFICA_ADMINS', sender, recnotif.paramsObj.groupnameDest, recnotif.paramsObj.username_action);
recnotif.openUrl = '/my/' + userorig; recnotif.openUrl = '/my/' + sender;
} else { } else {
newdescr = i18n.__('GROUPS_ACCEPTED', userorig, recnotif.paramsObj.groupnameDest, recnotif.paramsObj.username_action); newdescr = i18n.__('GROUPS_ACCEPTED', recnotif.paramsObj.groupnameDest, recnotif.paramsObj.username_action);
} }
tag = 'addgroup'; tag = 'addgroup';
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_GROUP_REMOVED) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_GROUP_REMOVED) {
if (recnotif.paramsObj.username_action === recnotif.paramsObj.usernameDest && userorig === recnotif.paramsObj.usernameDest) { if (recnotif.paramsObj.username_action === recnotif.paramsObj.usernameDest && sender === recnotif.paramsObj.usernameDest) {
newdescr = i18n.__('GROUPS_EXIT_USER_TO_ME', recnotif.paramsObj.groupnameDest, recnotif.paramsObj.username_action); newdescr = i18n.__('GROUPS_EXIT_USER_TO_ME', recnotif.paramsObj.groupnameDest, recnotif.paramsObj.username_action);
} else if (userorig === recnotif.paramsObj.usernameDest) { } else if (sender === recnotif.paramsObj.usernameDest) {
newdescr = i18n.__('GROUPS_REMOVED_TO_ME', recnotif.paramsObj.groupnameDest, recnotif.paramsObj.username_action); newdescr = i18n.__('GROUPS_REMOVED_TO_ME', recnotif.paramsObj.groupnameDest, recnotif.paramsObj.username_action);
} else if (userorig === recnotif.paramsObj.username_action) { } else if (sender === recnotif.paramsObj.username_action) {
newdescr = i18n.__('GROUPS_EXIT_USER', userorig, recnotif.paramsObj.groupnameDest); newdescr = i18n.__('GROUPS_EXIT_USER', sender, recnotif.paramsObj.groupnameDest);
recnotif.openUrl = '/my/' + userorig; recnotif.openUrl = '/my/' + sender;
} else { } else {
newdescr = i18n.__('GROUPS_REMOVED', userorig, recnotif.paramsObj.groupnameDest, recnotif.paramsObj.username_action); newdescr = i18n.__('GROUPS_REMOVED', sender, recnotif.paramsObj.groupnameDest, recnotif.paramsObj.username_action);
} }
tag = 'remgroup'; tag = 'remgroup';
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_GROUP_REFUSED) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_GROUP_REFUSED) {
newdescr = i18n.__('GROUPS_REFUSED', userorig, recnotif.paramsObj.groupnameDest, recnotif.paramsObj.username_action); newdescr = i18n.__('GROUPS_REFUSED', sender, recnotif.paramsObj.groupnameDest, recnotif.paramsObj.username_action);
tag = 'refgroup'; tag = 'refgroup';
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_GROUP_REQUEST_TO_ENTER) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_GROUP_REQUEST_TO_ENTER) {
newdescr = i18n.__('GROUP_REQUEST_TO_ENTER', userorig, recnotif.paramsObj.groupnameDest, recnotif.paramsObj.singleadmin_username); newdescr = i18n.__('GROUP_REQUEST_TO_ENTER', sender, recnotif.paramsObj.groupnameDest, recnotif.paramsObj.singleadmin_username);
tag = 'reqgroups'; tag = 'reqgroups';
// sendnotifPush = false; // non lo rimandare 2 volte ! // sendnotifPush = false; // non lo rimandare 2 volte !
// telegrambot.askConfirmationUser(idapp, shared_consts.CallFunz.RICHIESTA_GRUPPO, myuser, singleadmin.username, groupname, group._id); // telegrambot.askConfirmationUser(idapp, shared_consts.CallFunz.RICHIESTA_GRUPPO, myuser, singleadmin.username, groupname, group._id);
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_GROUP_BLOCK_USER) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_GROUP_BLOCK_USER) {
newdescr = i18n.__('RICHIESTA_BLOCCO_GRUPPO', userorig, recnotif.paramsObj.groupnameDest, recnotif.paramsObj.singleadmin_username); newdescr = i18n.__('RICHIESTA_BLOCCO_GRUPPO', sender, recnotif.paramsObj.groupnameDest, recnotif.paramsObj.singleadmin_username);
tag = 'blockgroups'; tag = 'blockgroups';
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_GROUP_DELETE_USER) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_GROUP_DELETE_USER) {
newdescr = i18n.__('GRUPPO_ELIMINATO', userorig, recnotif.paramsObj.username_action); newdescr = i18n.__('GRUPPO_ELIMINATO', sender, recnotif.paramsObj.username_action);
tag = 'deletegroup'; tag = 'deletegroup';
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_GROUP_ADDED_ADMIN_OFMYGROUP) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_GROUP_ADDED_ADMIN_OFMYGROUP) {
if (userorig === recnotif.paramsObj.usernameDest) { if (sender === recnotif.paramsObj.usernameDest) {
newdescr = i18n.__('GROUPS_ADDED_ADMIN_GROUP_YOU', recnotif.paramsObj.groupnameDest, recnotif.paramsObj.username_action); newdescr = i18n.__('GROUPS_ADDED_ADMIN_GROUP_YOU', recnotif.paramsObj.groupnameDest, recnotif.paramsObj.username_action);
} else { } else {
newdescr = i18n.__('GROUPS_ADDED_ADMIN_GROUP', userorig, recnotif.paramsObj.groupnameDest, recnotif.paramsObj.username_action); newdescr = i18n.__('GROUPS_ADDED_ADMIN_GROUP', sender, recnotif.paramsObj.groupnameDest, recnotif.paramsObj.username_action);
recnotif.openUrl = '/my/' + userorig; recnotif.openUrl = '/my/' + sender;
} }
tag = 'addadmingrp'; tag = 'addadmingrp';
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_GROUP_REMOVED_ADMIN_OFMYGROUP) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_GROUP_REMOVED_ADMIN_OFMYGROUP) {
if (userorig === recnotif.paramsObj.usernameDest) { if (sender === recnotif.paramsObj.usernameDest) {
newdescr = i18n.__('GROUPS_REMOVED_ADMIN_GROUP_YOU', recnotif.paramsObj.groupnameDest, recnotif.paramsObj.username_action); newdescr = i18n.__('GROUPS_REMOVED_ADMIN_GROUP_YOU', recnotif.paramsObj.groupnameDest, recnotif.paramsObj.username_action);
} else { } else {
newdescr = i18n.__('GROUPS_REMOVED_ADMIN_GROUP', userorig, recnotif.paramsObj.groupnameDest, recnotif.paramsObj.username_action); newdescr = i18n.__('GROUPS_REMOVED_ADMIN_GROUP', sender, recnotif.paramsObj.groupnameDest, recnotif.paramsObj.username_action);
recnotif.openUrl = '/my/' + userorig; recnotif.openUrl = '/my/' + sender;
} }
tag = 'removeadmingrp'; tag = 'removeadmingrp';
} }
} else if (recnotif.typedir === shared_consts.TypeNotifs.TYPEDIR_CIRCUITS) { } else if (recnotif.typedir === shared_consts.TypeNotifs.TYPEDIR_CIRCUITS) {
tag = 'circuit'; tag = 'circuit';
recnotif.openUrl = '/circuit/' + recnotif.paramsObj.path; recnotif.openUrl = '/circuit/' + recnotif.paramsObj.path;
strtipocontoOrig = recnotif.paramsObj.extrarec.contoComOrig ? i18n.__('COMUNITARIO') : i18n.__('COLLETTIVO');
strtipocontoDest = recnotif.paramsObj.extrarec.contoComDest ? i18n.__('COMUNITARIO') : i18n.__('COLLETTIVO');
let groupOComorig = recnotif.paramsObj.extrarec.contoComOrig ? recnotif.paramsObj.extrarec.contoComOrig : recnotif.paramsObj.extrarec.grouporig;
let groupOComdest = recnotif.paramsObj.extrarec.contoComDest ? recnotif.paramsObj.extrarec.contoComDest : recnotif.paramsObj.extrarec.groupdest;
let myorig = '';
let mydest = '';
let destinatario = '';
let qty = '';
let symbol = '';
let username_action = '';
let username_mittente = '';
try {
username_action = recnotif.paramsObj.username_action
username_mittente = recnotif.paramsObj.sender ? recnotif.paramsObj.sender : username_action
myorig = recnotif.paramsObj.extrarec.grouporig;
mydest = recnotif.paramsObj.extrarec.groupdest ? recnotif.paramsObj.extrarec.groupdest : recnotif.paramsObj.extrarec.dest;
destinatario = recnotif.paramsObj.extrarec.dest ? recnotif.paramsObj.extrarec.dest : (recnotif.paramsObj.extrarec.groupdest ? recnotif.paramsObj.extrarec.groupdest : recnotif.paramsObj.extrarec.contoComDest);
qty = recnotif.paramsObj.extrarec && recnotif.paramsObj.extrarec.qty ? recnotif.paramsObj.extrarec.qty.toString() : '';
symbol = recnotif.paramsObj.extrarec ? recnotif.paramsObj.extrarec.symbol : '';
} catch (e) {
}
if (groupOComdest) {
destinatario += ' (' + username_mittente + ')'
}
if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_NEW_REC) { if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_NEW_REC) {
newdescr = i18n.__('CIRCUIT_CREATED', userorig, recnotif.paramsObj.circuitnameDest); newdescr = i18n.__('CIRCUIT_CREATED', sender, recnotif.paramsObj.circuitnameDest);
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_ACCEPTED) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_ACCEPTED) {
if (recnotif.paramsObj.isAdmin) { if (recnotif.paramsObj.isAdmin) {
newdescr = i18n.__('ACCETTATO_NOTIFICA_ADMINS_CIRCUIT', userorig, recnotif.paramsObj.circuitnameDest, if (recnotif.extrarec.groupname) {
recnotif.paramsObj.username_action); newdescr = i18n.__('ACCETTATO_NOTIFICA_ADMINS_CIRCUIT_MYGROUP', recnotif.extrarec.groupname, recnotif.paramsObj.circuitnameDest,
recnotif.openUrl = '/my/' + userorig; username_action);
} else {
newdescr = i18n.__('ACCETTATO_NOTIFICA_ADMINS_CIRCUIT', sender, recnotif.paramsObj.circuitnameDest,
username_action);
}
recnotif.openUrl = '/my/' + sender;
} else { } else {
if (userorig === recnotif.paramsObj.usernameDest) { if (sender === recnotif.paramsObj.usernameDest) {
newdescr = i18n.__('CIRCUIT_ACCEPTED', recnotif.paramsObj.username_action, recnotif.paramsObj.circuitnameDest, tools.getHostByIdApp(recnotif.idapp) + recnotif.openUrl); newdescr = i18n.__('CIRCUIT_ACCEPTED', username_action, recnotif.paramsObj.circuitnameDest, tools.getHostByIdApp(recnotif.idapp) + recnotif.openUrl);
} else { } else {
newdescr = i18n.__('CIRCUIT_ACCEPTED_YOU', recnotif.paramsObj.usernameDest, recnotif.paramsObj.circuitnameDest); newdescr = i18n.__('CIRCUIT_ACCEPTED_YOU', recnotif.paramsObj.usernameDest, recnotif.paramsObj.circuitnameDest);
} }
} }
tag = 'addcircuit'; tag = 'addcircuit';
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_REMOVED) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_REMOVED) {
if (recnotif.paramsObj.username_action === recnotif.paramsObj.usernameDest && userorig === recnotif.paramsObj.usernameDest) { if (username_action === recnotif.paramsObj.usernameDest && sender === recnotif.paramsObj.usernameDest) {
newdescr = i18n.__('CIRCUIT_EXIT_USER_TO_ME', recnotif.paramsObj.circuitnameDest, recnotif.paramsObj.username_action); newdescr = i18n.__('CIRCUIT_EXIT_USER_TO_ME', recnotif.paramsObj.circuitnameDest, username_action);
} else if (userorig === recnotif.paramsObj.usernameDest) { } else if (sender === recnotif.paramsObj.usernameDest) {
newdescr = i18n.__('CIRCUIT_REMOVED_TO_ME', recnotif.paramsObj.circuitnameDest, recnotif.paramsObj.username_action); newdescr = i18n.__('CIRCUIT_REMOVED_TO_ME', recnotif.paramsObj.circuitnameDest, username_action);
} else if (userorig === recnotif.paramsObj.username_action) { } else if (sender === username_action) {
newdescr = i18n.__('CIRCUIT_EXIT_USER', userorig, recnotif.paramsObj.circuitnameDest); newdescr = i18n.__('CIRCUIT_EXIT_USER', sender, recnotif.paramsObj.circuitnameDest);
recnotif.openUrl = '/my/' + userorig; recnotif.openUrl = '/my/' + sender;
} else { } else {
newdescr = i18n.__('CIRCUIT_REMOVED', userorig, recnotif.paramsObj.circuitnameDest, recnotif.paramsObj.username_action); newdescr = i18n.__('CIRCUIT_REMOVED', sender, recnotif.paramsObj.circuitnameDest, username_action);
} }
tag = 'remcircuit'; tag = 'remcircuit';
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_REFUSED) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_REFUSED) {
if (recnotif.paramsObj.isAdmin) { if (recnotif.paramsObj.isAdmin) {
newdescr = i18n.__('CIRCUIT_REFUSED_TO_ME', userorig, recnotif.paramsObj.circuitnameDest, recnotif.paramsObj.username_action); if (recnotif.extrarec.groupname) {
newdescr = i18n.__('CIRCUIT_REFUSED_TO_MYGROUP', recnotif.extrarec.groupname, recnotif.paramsObj.circuitnameDest, username_action);
}
} else { } else {
newdescr = i18n.__('CIRCUIT_REFUSED', recnotif.paramsObj.username_action, recnotif.paramsObj.circuitnameDest); newdescr = i18n.__('CIRCUIT_REFUSED', username_action, recnotif.paramsObj.circuitnameDest);
} }
tag = 'refcircuit'; tag = 'refcircuit';
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_REQUEST_TO_ENTER) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_REQUEST_TO_ENTER) {
newdescr = i18n.__('CIRCUIT_REQUEST_TO_ENTER', userorig, recnotif.paramsObj.circuitnameDest, if (recnotif.extrarec.groupname) {
newdescr = i18n.__('CIRCUIT_REQUEST_TO_ENTER_WITH_GROUP', recnotif.extrarec.groupname, recnotif.paramsObj.circuitnameDest,
recnotif.paramsObj.singleadmin_username); recnotif.paramsObj.singleadmin_username);
} else {
newdescr = i18n.__('CIRCUIT_REQUEST_TO_ENTER', sender, recnotif.paramsObj.circuitnameDest,
recnotif.paramsObj.singleadmin_username);
}
tag = 'reqcircuits'; tag = 'reqcircuits';
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_DELETE_USER) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_DELETE_USER) {
newdescr = i18n.__('CIRCUIT_ELIMINATO', userorig, recnotif.paramsObj.username_action); newdescr = i18n.__('CIRCUIT_ELIMINATO', sender, username_action);
tag = 'deletecircuit'; tag = 'deletecircuit';
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_ADDED_ADMIN) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_ADDED_ADMIN) {
if (userorig === recnotif.paramsObj.usernameDest) { if (sender === recnotif.paramsObj.usernameDest) {
newdescr = i18n.__('CIRCUIT_ADDED_ADMIN_YOU', recnotif.paramsObj.circuitnameDest, recnotif.paramsObj.username_action); newdescr = i18n.__('CIRCUIT_ADDED_ADMIN_YOU', recnotif.paramsObj.circuitnameDest, username_action);
} else { } else {
newdescr = i18n.__('CIRCUIT_ADDED_ADMIN', userorig, recnotif.paramsObj.circuitnameDest, recnotif.paramsObj.username_action); newdescr = i18n.__('CIRCUIT_ADDED_ADMIN', sender, recnotif.paramsObj.circuitnameDest, username_action);
recnotif.openUrl = '/my/' + userorig; recnotif.openUrl = '/my/' + sender;
} }
tag = 'addadmingrp'; tag = 'addadmingrp';
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_REMOVED_ADMIN) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_REMOVED_ADMIN) {
if (userorig === recnotif.paramsObj.usernameDest) { if (sender === recnotif.paramsObj.usernameDest) {
newdescr = i18n.__('CIRCUIT_REMOVED_ADMIN_YOU', recnotif.paramsObj.circuitnameDest, recnotif.paramsObj.username_action); newdescr = i18n.__('CIRCUIT_REMOVED_ADMIN_YOU', recnotif.paramsObj.circuitnameDest, username_action);
} else { } else {
newdescr = i18n.__('CIRCUIT_REMOVED_ADMIN', userorig, recnotif.paramsObj.circuitnameDest, recnotif.paramsObj.username_action); newdescr = i18n.__('CIRCUIT_REMOVED_ADMIN', sender, recnotif.paramsObj.circuitnameDest, username_action);
recnotif.openUrl = '/my/' + userorig; recnotif.openUrl = '/my/' + sender;
} }
tag = 'removeadmincircuit'; tag = 'removeadmincircuit';
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_SENDCOINSREQ) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_SENDCOINSREQ) {
newdescr = i18n.__('CIRCUIT_SENDCOINSREQ', tools.getAhref(recnotif.paramsObj.username_action, await tools.getLinkUserTelegram(recnotif.idapp, recnotif.paramsObj.username_action)), recnotif.paramsObj.extrarec.qty.toString(), if (groupOComdest) {
recnotif.paramsObj.extrarec.symbol); newdescr = i18n.__('CIRCUIT_SENDCOINSREQ_GROUP', tools.getAhref(username_action, await tools.getLinkUserTelegram(recnotif.idapp, username_action)), qty,
symbol, strtipocontoDest, groupOComdest);
} else if (groupOComorig && (sender === recnotif.paramsObj.usernameDest)) {
newdescr = i18n.__('CIRCUIT_SENDCOINSREQ_FROM_GROUP_TO_YOU', strtipocontoOrig, groupOComorig, username_action, qty, symbol, recnotif.paramsObj.extrarec.dest);
} else if (groupOComorig) {
newdescr = i18n.__('CIRCUIT_SENDCOINSREQ_FROM_GROUP_TO_USER', strtipocontoOrig, groupOComorig, username_action, qty, symbol, recnotif.paramsObj.extrarec.dest);
} else {
newdescr = i18n.__('CIRCUIT_SENDCOINSREQ', tools.getAhref(username_action, await tools.getLinkUserTelegram(recnotif.idapp, username_action)), qty,
symbol);
}
tag = 'sendcoin'; tag = 'sendcoin';
recnotif.openUrl = '/circuit/' + recnotif.paramsObj.path; //++Todo: dove lo mando ? recnotif.openUrl = '/circuit/' + recnotif.paramsObj.path; //++Todo: dove lo mando ?
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_SENDCOINSREQ_SENT) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_SENDCOINSREQ_SENT) {
newdescr = i18n.__('CIRCUIT_SENDCOINSREQ_TO_ME', recnotif.paramsObj.extrarec.qty.toString(),
recnotif.paramsObj.extrarec.symbol, recnotif.paramsObj.extrarec.dest); if (myorig) {
if (groupOComdest) {
newdescr = i18n.__('CIRCUIT_SENDCOINSREQ_FROM_GROUP_TO_GROUP', strtipocontoOrig, myorig, username_action, qty, symbol, strtipocontoDest, groupOComdest);
} else {
newdescr = i18n.__('CIRCUIT_SENDCOINSREQ_FROM_GROUP_TO_USER', strtipocontoOrig, myorig, username_action, qty, symbol, mydest);
}
} else {
if (groupOComdest) {
newdescr = i18n.__('CIRCUIT_SENDCOINSREQ_TO_GROUP', qty, symbol, strtipocontoDest, groupOComdest);
} else {
newdescr = i18n.__('CIRCUIT_SENDCOINSREQ_TO_ME', qty, symbol, mydest);
}
}
tag = 'sendcoin'; tag = 'sendcoin';
recnotif.openUrl = '/circuit/' + recnotif.paramsObj.path; //++Todo: dove lo mando ? recnotif.openUrl = '/circuit/' + recnotif.paramsObj.path; //++Todo: dove lo mando ?
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_COINS_ACCEPTED) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_COINS_ACCEPTED) {
newdescr = i18n.__('ID_CIRCUIT_COINS_ACCEPTED', recnotif.paramsObj.extrarec.qty.toString(), recnotif.paramsObj.extrarec.symbol, newdescr = i18n.__('ID_CIRCUIT_COINS_ACCEPTED', qty, symbol,
recnotif.paramsObj.username_action) + `\n` + i18n.__('SALDO_UPDATE', recnotif.paramsObj.extrarec.saldoDest, username_action) + `\n` + i18n.__('SALDO_UPDATE', recnotif.paramsObj.extrarec.saldoDest, symbol);
recnotif.paramsObj.extrarec.symbol
); if (myorig) {
if (groupOComdest) {
newdescr = i18n.__('ID_CIRCUIT_COINS_ACCEPTED_FROM_GROUP_TO_GROUP', strtipocontoDest, myorig, username_action, qty, symbol, strtipocontoDest, groupOComdest, username_mittente) + `\n`
+ i18n.__('SALDO_UPDATE', recnotif.paramsObj.extrarec.saldoDest, symbol);
} else {
newdescr = i18n.__('ID_CIRCUIT_COINS_ACCEPTED_FROM_GROUP_TO_YOU', qty, symbol, strtipocontoOrig, myorig, username_action)
+ `\n` + i18n.__('SALDO_UPDATE', recnotif.paramsObj.extrarec.saldoDest, symbol);
}
} else {
if (groupOComdest) {
newdescr = i18n.__('ID_CIRCUIT_COINS_ACCEPTED_FROM_ME_TO_GROUP', strtipocontoDest, groupOComdest, username_action, qty, symbol, username_mittente)
+ `\n` + i18n.__('SALDO_UPDATE', recnotif.paramsObj.extrarec.saldoDest, symbol);
} else {
newdescr = i18n.__('ID_CIRCUIT_COINS_ACCEPTED_FROM_ME_TO_YOU', qty, symbol, username_action)
+ `\n` + i18n.__('SALDO_UPDATE', recnotif.paramsObj.extrarec.saldoDest, symbol);
}
}
tag = 'sendcoin'; tag = 'sendcoin';
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_COINS_ACCEPTED_SENT) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_COINS_ACCEPTED_SENT) {
newdescr = i18n.__('ID_CIRCUIT_COINS_ACCEPTED_TO_ME', recnotif.paramsObj.extrarec.qty.toString(), if (!destinatario) {
recnotif.paramsObj.extrarec.symbol, destinatario = username_action
recnotif.paramsObj.extrarec.dest) + `\n` + i18n.__('SALDO_UPDATE', recnotif.paramsObj.extrarec.saldoOrig, }
recnotif.paramsObj.extrarec.symbol); let saldostr = i18n.__('SALDO_UPDATE', recnotif.paramsObj.extrarec.saldoOrig, symbol);
if (groupOComorig) {
saldostr = i18n.__('SALDO_UPDATE_WHO', groupOComorig, recnotif.paramsObj.extrarec.saldoOrig, symbol);
}
newdescr = i18n.__('ID_CIRCUIT_COINS_ACCEPTED_TO_ME', qty, symbol, destinatario)
+ `\n` + saldostr;
tag = 'sendcoin'; tag = 'sendcoin';
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_COINS_REFUSED) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_COINS_REFUSED) {
newdescr = i18n.__('ID_CIRCUIT_COINS_REFUSED', recnotif.paramsObj.extrarec.qty.toString(), recnotif.paramsObj.extrarec.symbol, newdescr = i18n.__('ID_CIRCUIT_COINS_REFUSED', qty, symbol, username_action);
recnotif.paramsObj.username_action);
tag = 'sendcoin'; tag = 'sendcoin';
} else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_COINS_REFUSED_SENT) { } else if (recnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_COINS_REFUSED_SENT) {
newdescr = i18n.__('ID_CIRCUIT_COINS_REFUSED_TO_ME', recnotif.paramsObj.extrarec.qty.toString(), recnotif.paramsObj.extrarec.symbol,
recnotif.paramsObj.extrarec.dest); newdescr = i18n.__('ID_CIRCUIT_COINS_REFUSED_TO_ME', qty, symbol, destinatario);
tag = 'sendcoin';ac tag = 'sendcoin';
} }
} }
@@ -377,14 +472,14 @@ sendNotifSchema.statics.getDescrAndLinkByRecNotif = async function(recnotif) {
}; };
sendNotifSchema.statics.compileOtherFields = async function(arrnotif) { sendNotifSchema.statics.compileOtherFields = async function (arrnotif) {
const {User} = require('../models/user'); const { User } = require('../models/user');
try { try {
// Fill in the image profile of the semyinders ! // Fill in the image profile of the semyinders !
for (const notif of arrnotif) { for (const notif of arrnotif) {
let myimgprofile = await User.findOne({idapp: notif.idapp, username: notif.sender}, {'profile.img': 1}).lean(); let myimgprofile = await User.findOne({ idapp: notif.idapp, username: notif.sender }, { 'profile.img': 1 }).lean();
if (myimgprofile && myimgprofile.profile.img) if (myimgprofile && myimgprofile.profile.img)
notif.myimgsender = 'upload/profile/' + notif.sender + '/' + myimgprofile.profile.img; notif.myimgsender = 'upload/profile/' + notif.sender + '/' + myimgprofile.profile.img;
} }
@@ -398,7 +493,7 @@ sendNotifSchema.statics.compileOtherFields = async function(arrnotif) {
}; };
sendNotifSchema.statics.findLastNotifsByUserIdAndIdApp = function(username, idapp, limit) { sendNotifSchema.statics.findLastNotifsByUserIdAndIdApp = function (username, idapp, limit) {
const SendNotif = this; const SendNotif = this;
return SendNotif.aggregate([ return SendNotif.aggregate([
@@ -408,9 +503,9 @@ sendNotifSchema.statics.findLastNotifsByUserIdAndIdApp = function(username, idap
dest: username, dest: username,
}, },
}, },
{$limit: limit}, { $limit: limit },
{ {
$sort: {datenotif: -1}, $sort: { datenotif: -1 },
}, },
]).then(async (arrnotif) => { ]).then(async (arrnotif) => {
return this.compileOtherFields(arrnotif); return this.compileOtherFields(arrnotif);
@@ -421,14 +516,16 @@ sendNotifSchema.statics.findLastNotifsByUserIdAndIdApp = function(username, idap
}; };
sendNotifSchema.statics.saveAndSendNotif = async function(myrecnotif, req, res, user) { sendNotifSchema.statics.saveAndSendNotif = async function (myrecnotif, req, res, user) {
const SendNotif = this; const SendNotif = this;
let idapp = req.body.idapp; let idapp = req.body.idapp;
const check = tools.checkUserOk(myrecnotif.sender, user ? myrecnotif.sender : req.user.username, res); let check = tools.checkUserOk(myrecnotif.sender, user ? myrecnotif.sender : req.user.username, res);
if (!check)
check = tools.checkUserOk(myrecnotif.sendergroup, user ? myrecnotif.sendergroup : req.user.username, res);
if (check.exit) return check.ret; if (check.exit) return check.ret;
const {myrecout, save} = await SendNotif.updateStatusAndDescr(myrecnotif, false); const { myrecout, save } = await SendNotif.updateStatusAndDescr(myrecnotif, false, req.user.username);
if (!myrecout) if (!myrecout)
return null; return null;
@@ -458,13 +555,13 @@ sendNotifSchema.statics.saveAndSendNotif = async function(myrecnotif, req, res,
}; };
sendNotifSchema.statics.updateStatusAndDescr = async function(myrecnotif, onlysave) { sendNotifSchema.statics.updateStatusAndDescr = async function (myrecnotif, onlysave, userorig) {
const SendNotif = this; const SendNotif = this;
try { try {
if (!myrecnotif.openUrl) { if (!myrecnotif.openUrl) {
// If not exist, then I set openUrl and description // If not exist, then I set openUrl and description
myrecnotif = await this.getDescrAndLinkByRecNotif(myrecnotif); myrecnotif = await this.getDescrAndLinkByRecNotif(myrecnotif, userorig);
} }
let newstatus = 0; let newstatus = 0;
@@ -474,6 +571,8 @@ sendNotifSchema.statics.updateStatusAndDescr = async function(myrecnotif, onlysa
let sender = myrecnotif.sender; let sender = myrecnotif.sender;
let newdest = myrecnotif.dest; let newdest = myrecnotif.dest;
let sendergroup = myrecnotif.sendergroup;
let newdestgroup = myrecnotif.destgroup;
// Controllare se devo modificare un Notif già esistente ! // Controllare se devo modificare un Notif già esistente !
if (myrecnotif.typedir === shared_consts.TypeNotifs.TYPEDIR_FRIENDS) { if (myrecnotif.typedir === shared_consts.TypeNotifs.TYPEDIR_FRIENDS) {
@@ -533,23 +632,31 @@ sendNotifSchema.statics.updateStatusAndDescr = async function(myrecnotif, onlysa
typeidsearch = shared_consts.TypeNotifs.ID_CIRCUIT_SENDCOINSREQ_SENT; typeidsearch = shared_consts.TypeNotifs.ID_CIRCUIT_SENDCOINSREQ_SENT;
if (myrecnotif.paramsObj.extrarec.hasOwnProperty('notifIdToUpdate')) if (myrecnotif.paramsObj.extrarec.hasOwnProperty('notifIdToUpdate'))
idnotiftosearch = myrecnotif.paramsObj.extrarec.notifIdToUpdate; idnotiftosearch = myrecnotif.paramsObj.extrarec.notifIdToUpdate;
if (myrecnotif.paramsObj.extrarec.hasOwnProperty('idStatusToSent'))
idnotiftosearch = myrecnotif.paramsObj.extrarec.idStatusToSent;
newstatus = shared_consts.CircuitsNotif.STATUS_COINS_ACCEPTED_SENT; newstatus = shared_consts.CircuitsNotif.STATUS_COINS_ACCEPTED_SENT;
} else if (myrecnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_COINS_REFUSED_SENT) { } else if (myrecnotif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_COINS_REFUSED_SENT) {
typeidsearch = shared_consts.TypeNotifs.ID_CIRCUIT_SENDCOINSREQ_SENT; typeidsearch = shared_consts.TypeNotifs.ID_CIRCUIT_SENDCOINSREQ_SENT;
if (myrecnotif.paramsObj.extrarec.hasOwnProperty('notifIdToUpdate')) if (myrecnotif.paramsObj.extrarec.hasOwnProperty('notifIdToUpdate'))
idnotiftosearch = myrecnotif.paramsObj.extrarec.notifIdToUpdate; idnotiftosearch = myrecnotif.paramsObj.extrarec.notifIdToUpdate;
if (myrecnotif.paramsObj.extrarec.hasOwnProperty('idStatusToSent'))
idnotiftosearch = myrecnotif.paramsObj.extrarec.idStatusToSent;
newstatus = shared_consts.CircuitsNotif.STATUS_COINS_REFUSED_SENT; newstatus = shared_consts.CircuitsNotif.STATUS_COINS_REFUSED_SENT;
} }
} }
if (newstatus) { if (newstatus) {
const fields_to_update = { let fields_to_update = {
status: newstatus, status: newstatus,
read: false, read: false,
descr: myrecnotif.descr, descr: myrecnotif.descr,
datenotif: new Date(), datenotif: new Date(),
sender, sender,
dest: newdest, dest: newdest,
sendergroup,
destgroup: newdestgroup,
}; };
let query = { let query = {
@@ -566,17 +673,26 @@ sendNotifSchema.statics.updateStatusAndDescr = async function(myrecnotif, onlysa
_id: idnotiftosearch, _id: idnotiftosearch,
status: 0, status: 0,
}; };
fields_to_update = {
status: newstatus,
read: false,
descr: myrecnotif.descr,
datenotif: new Date(),
};
// Cerca il record e se lo trova lo aggiorna
const myrec = await SendNotif.findOneAndUpdate(query, { $set: fields_to_update }, {
new: false,
returnNewDocument: true,
});
if (myrec) {
return { myrecout: myrec, save: true };
}
} }
// Cerca il record e se lo trova lo aggiorna
const myrec = await SendNotif.findOneAndUpdate(query, {$set: fields_to_update}, {
new: true,
returnNewDocument: true,
});
if (myrec) {
return {myrecout: myrec, save: false};
}
} }
// myrecnotif._id = new ObjectID(); // myrecnotif._id = new ObjectID();
@@ -584,19 +700,19 @@ sendNotifSchema.statics.updateStatusAndDescr = async function(myrecnotif, onlysa
myrecnotif.status = newstatus; myrecnotif.status = newstatus;
} }
return {myrecout: myrecnotif, save: true}; return { myrecout: myrecnotif, save: true };
} catch (e) { } catch (e) {
console.error(e); console.error(e);
return {myrecout: null, save: false}; return { myrecout: null, save: false };
} }
}; };
sendNotifSchema.statics.getStatus = async function(notifId) { sendNotifSchema.statics.getStatus = async function (notifId) {
const SendNotif = this; const SendNotif = this;
try { try {
return await SendNotif.findOne({_id: notifId}, {status: 1}).lean().then((rec) => rec.status); return await SendNotif.findOne({ _id: notifId }, { status: 1 }).lean().then((rec) => rec.status);
} catch (e) { } catch (e) {
return 0; return 0;
@@ -604,7 +720,7 @@ sendNotifSchema.statics.getStatus = async function(notifId) {
}; };
sendNotifSchema.statics.checkIfCoinsAlreadySent = async function(notifId) { sendNotifSchema.statics.checkIfCoinsAlreadySent = async function (notifId) {
const SendNotif = this; const SendNotif = this;
try { try {
@@ -612,7 +728,7 @@ sendNotifSchema.statics.checkIfCoinsAlreadySent = async function(notifId) {
if (status !== null) { if (status !== null) {
return (status === shared_consts.CircuitsNotif.STATUS_COINS_ACCEPTED) || return (status === shared_consts.CircuitsNotif.STATUS_COINS_ACCEPTED) ||
(status === shared_consts.CircuitsNotif.STATUS_COINS_REFUSED); (status === shared_consts.CircuitsNotif.STATUS_COINS_REFUSED);
} }
return true; return true;
@@ -624,11 +740,11 @@ sendNotifSchema.statics.checkIfCoinsAlreadySent = async function(notifId) {
}; };
sendNotifSchema.statics.saveNotif = async function(myrecnotif) { sendNotifSchema.statics.saveNotif = async function (myrecnotif, req) {
const SendNotif = this; const SendNotif = this;
const {myrecout, save} = await SendNotif.updateStatusAndDescr(myrecnotif, true); const { myrecout, save } = await SendNotif.updateStatusAndDescr(myrecnotif, true, req.user.username);
if (!myrecout) if (!myrecout)
return null; return null;
@@ -644,14 +760,16 @@ sendNotifSchema.statics.saveNotif = async function(myrecnotif) {
}; };
sendNotifSchema.statics.getDefaultRec = function(req) { sendNotifSchema.statics.getDefaultRec = function (req) {
return { return {
idapp: req.body.idapp, idapp: req.body.idapp,
typedir: '', typedir: '',
typeid: '', typeid: '',
sender: req.user ? req.user.username : '', sender: req.user ? req.user.username : '',
sendergroup: '',
dest: '', dest: '',
destgroup: '',
descr: '', descr: '',
openUrl: '', openUrl: '',
datenotif: new Date(), datenotif: new Date(),
@@ -663,7 +781,7 @@ sendNotifSchema.statics.getDefaultRec = function(req) {
}; };
sendNotifSchema.statics.getExtraParam = function(myrecnotif, paramsObj) { sendNotifSchema.statics.getExtraParam = function (myrecnotif, paramsObj) {
let out = myrecnotif; let out = myrecnotif;
//if (myrecnotif._doc) { //if (myrecnotif._doc) {
//out = myrecnotif._doc //out = myrecnotif._doc
@@ -681,7 +799,7 @@ sendNotifSchema.statics.getExtraParam = function(myrecnotif, paramsObj) {
return myrecnotif; return myrecnotif;
}; };
sendNotifSchema.statics.createNewNotification = async function(req, res, paramsObj, table, rec, typedir, typeid) { sendNotifSchema.statics.createNewNotification = async function (req, res, paramsObj, table, rec, typedir, typeid) {
const SendNotif = this; const SendNotif = this;
try { try {
@@ -705,7 +823,7 @@ sendNotifSchema.statics.createNewNotification = async function(req, res, paramsO
} }
}; };
sendNotifSchema.statics.createNewNotifToSingleUser = async function(req, res, paramsObj, onlysave, typedir, typeid) { sendNotifSchema.statics.createNewNotifToSingleUser = async function (req, res, paramsObj, onlysave, typedir, typeid) {
const SendNotif = this; const SendNotif = this;
try { try {
@@ -723,13 +841,13 @@ sendNotifSchema.statics.createNewNotifToSingleUser = async function(req, res, pa
} }
}; };
sendNotifSchema.statics.sendToTheDestinations = async function(myrecnotifpass, req, res) { sendNotifSchema.statics.sendToTheDestinations = async function (myrecnotifpass, req, res) {
const SendNotif = this; const SendNotif = this;
const {User} = require('../models/user'); const { User } = require('../models/user');
const {City} = require('../models/city'); const { City } = require('../models/city');
const {Province} = require('../models/province'); const { Province } = require('../models/province');
try { try {
@@ -737,8 +855,8 @@ sendNotifSchema.statics.sendToTheDestinations = async function(myrecnotifpass, r
const userlist = await User.find({ const userlist = await User.find({
idapp: myrecnotifpass.idapp, idapp: myrecnotifpass.idapp,
$or: [ $or: [
{deleted: {$exists: false}}, { deleted: { $exists: false } },
{deleted: {$exists: true, $eq: false}}], { deleted: { $exists: true, $eq: false } }],
}, { }, {
name: 1, name: 1,
surname: 1, surname: 1,
@@ -760,9 +878,9 @@ sendNotifSchema.statics.sendToTheDestinations = async function(myrecnotifpass, r
const mytable = globalTables.getTableByTableName(myrecnotifpass.tablerec); const mytable = globalTables.getTableByTableName(myrecnotifpass.tablerec);
if (shared_consts.TABLES_ADV_NOTIFICATION.includes(myrecnotifpass.tablerec) || if (shared_consts.TABLES_ADV_NOTIFICATION.includes(myrecnotifpass.tablerec) ||
shared_consts.TABLES_EVENTS_NOTIFICATION.includes(myrecnotifpass.tablerec)) { shared_consts.TABLES_EVENTS_NOTIFICATION.includes(myrecnotifpass.tablerec)) {
const myrectableorig = await mytable.findOne({_id: myrecnotifpass.idrec}).lean(); const myrectableorig = await mytable.findOne({ _id: myrecnotifpass.idrec }).lean();
if (myrectableorig) { if (myrectableorig) {
for (const city of myrectableorig.idCity) { for (const city of myrectableorig.idCity) {
arrprovinces.push(await City.getProvinceByIdCity(city)); arrprovinces.push(await City.getProvinceByIdCity(city));
@@ -779,7 +897,7 @@ sendNotifSchema.statics.sendToTheDestinations = async function(myrecnotifpass, r
myrecnotifpass.myrectableorig = myrectableorig; myrecnotifpass.myrectableorig = myrectableorig;
} }
myrecnotifpass = await this.getDescrAndLinkByRecNotif(myrecnotifpass); myrecnotifpass = await this.getDescrAndLinkByRecNotif(myrecnotifpass, req.user.username);
delete myrecnotifpass._doc['_id']; delete myrecnotifpass._doc['_id'];
for (const user of userlist) { for (const user of userlist) {
@@ -790,16 +908,16 @@ sendNotifSchema.statics.sendToTheDestinations = async function(myrecnotifpass, r
let send = false; let send = false;
if (shared_consts.TABLES_ADV_NOTIFICATION.includes(myrecnotifpass.tablerec) || if (shared_consts.TABLES_ADV_NOTIFICATION.includes(myrecnotifpass.tablerec) ||
shared_consts.TABLES_EVENTS_NOTIFICATION.includes(myrecnotifpass.tablerec)) { shared_consts.TABLES_EVENTS_NOTIFICATION.includes(myrecnotifpass.tablerec)) {
// Estrai la Città, la Provincia e la regione. // Estrai la Città, la Provincia e la regione.
if (usernotifprofile && tools.isBitActive(usernotifprofile.value, shared_consts.UsersNotif.NEW_ADV_PROVINCE) && if (usernotifprofile && tools.isBitActive(usernotifprofile.value, shared_consts.UsersNotif.NEW_ADV_PROVINCE) &&
user.profile.notif_provinces && user.profile.notif_provinces.some(r => arrprovinces.indexOf(r) >= 0)) { user.profile.notif_provinces && user.profile.notif_provinces.some(r => arrprovinces.indexOf(r) >= 0)) {
send = true; send = true;
} }
if (usernotifprofile && tools.isBitActive(usernotifprofile.value, shared_consts.UsersNotif.NEW_ADV_REGION) && if (usernotifprofile && tools.isBitActive(usernotifprofile.value, shared_consts.UsersNotif.NEW_ADV_REGION) &&
user.profile.notif_regions && user.profile.notif_regions.some(r => arrregions.indexOf(r) >= 0)) { user.profile.notif_regions && user.profile.notif_regions.some(r => arrregions.indexOf(r) >= 0)) {
send = true; send = true;
} }
@@ -836,18 +954,18 @@ sendNotifSchema.statics.sendToTheDestinations = async function(myrecnotifpass, r
}; };
sendNotifSchema.statics.sendToSingleUserDest = async function(myrecnotif, req, res, onlysave) { sendNotifSchema.statics.sendToSingleUserDest = async function (myrecnotif, req, res, onlysave) {
const SendNotif = this; const SendNotif = this;
try { try {
myrecnotif.dest = myrecnotif.paramsObj && myrecnotif.paramsObj.usernameDest ? myrecnotif.paramsObj.usernameDest : ''; myrecnotif.dest = myrecnotif.paramsObj && myrecnotif.paramsObj.usernameDest ? myrecnotif.paramsObj.usernameDest : '';
myrecnotif.username_worked = myrecnotif.paramsObj && myrecnotif.paramsObj.username_worked myrecnotif.username_worked = myrecnotif.paramsObj && myrecnotif.paramsObj.username_worked
? myrecnotif.paramsObj.username_worked ? myrecnotif.paramsObj.username_worked
: myrecnotif.dest; : myrecnotif.dest;
if (onlysave) { if (onlysave) {
return await SendNotif.saveNotif(myrecnotif); return await SendNotif.saveNotif(myrecnotif, req);
} else { } else {
return await SendNotif.saveAndSendNotif(myrecnotif, req, res, null); return await SendNotif.saveAndSendNotif(myrecnotif, req, res, null);
} }
@@ -859,13 +977,14 @@ sendNotifSchema.statics.sendToSingleUserDest = async function(myrecnotif, req, r
}; };
sendNotifSchema.statics.getSumPendingTransactions = async function(idapp, username, circuitname) { sendNotifSchema.statics.getSumPendingTransactions = async function (idapp, username, circuitname, groupname) {
const SendNotif = this; const SendNotif = this;
try { try {
const query = { const query = {
idapp, idapp,
sender: username, sender: username,
sendergroup: groupname,
typedir: shared_consts.TypeNotifs.TYPEDIR_CIRCUITS, typedir: shared_consts.TypeNotifs.TYPEDIR_CIRCUITS,
typeid: shared_consts.TypeNotifs.ID_CIRCUIT_SENDCOINSREQ, typeid: shared_consts.TypeNotifs.ID_CIRCUIT_SENDCOINSREQ,
status: 0, status: 0,
@@ -882,4 +1001,4 @@ sendNotifSchema.statics.getSumPendingTransactions = async function(idapp, userna
const SendNotif = mongoose.model('SendNotif', sendNotifSchema); const SendNotif = mongoose.model('SendNotif', sendNotifSchema);
module.exports = {SendNotif: SendNotif}; module.exports = { SendNotif: SendNotif };

View File

@@ -132,6 +132,8 @@ const SiteSchema = new Schema({
type: Number, type: Number,
default: 0, default: 0,
}, },
videoPromo: { type: String },
PDFPromo: { type: String },
}, },
confsite: { confsite: {
options: { // ConfSite options: { // ConfSite

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,98 @@
const mongoose = require('mongoose').set('debug', false);
const Schema = mongoose.Schema;
const tools = require('../tools/general');
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;
});
const UserRequestSchema = new Schema({
_id: {
type: Number,
},
idapp: {
type: String,
},
typeReq: {
type: Number,
},
valueRequested: {
type: Number,
},
strRequested: {
type: String,
},
username: {
type: String,
},
groupname: {
type: String,
},
note: {
type: String,
},
createdBy: {
type: String,
},
date_created: {
type: Date,
},
date_updated: {
type: Date,
},
deleted: {
type: Boolean,
default: false,
},
processed: {
type: Boolean,
default: false,
},
username_answered: {
type: String,
},
state_requested: {
type: Number,
},
msgout_answered: {
type: String,
},
});
UserRequestSchema.statics.getFieldsForSearch = function () {
return [{ field: 'descr', type: tools.FieldType.string }];
};
UserRequestSchema.statics.executeQueryTable = function (idapp, params, user) {
params.fieldsearch = this.getFieldsForSearch();
const { User } = require('./user');
return tools.executeQueryTable(this, idapp, params, user);
};
UserRequestSchema.pre('save', async function (next) {
if (this.isNew) {
this.date_created = new Date();
}
next();
});
UserRequestSchema.statics.findAllIdApp = async function (idapp) {
const myfind = { idapp };
return await UserRequest.find(myfind);
};
const UserRequest = mongoose.model('UserRequest', UserRequestSchema);
module.exports = { UserRequest };

View File

@@ -48,7 +48,7 @@ module.exports = {
{_id: 46, idSector: [7], descr: 'Idraulico'}, {_id: 46, idSector: [7], descr: 'Idraulico'},
{_id: 47, idSector: [7], descr: 'Giardiniere'}, {_id: 47, idSector: [7], descr: 'Giardiniere'},
{_id: 48, idSector: [7], descr: 'Canne fumarie e camini e stufe'}, {_id: 48, idSector: [7], descr: 'Canne fumarie e camini e stufe'},
{_id: 49, idSector: [7], descr: 'Pannelli solari e pompe calore'}, {_id: 49, idSector: [7], descr: 'Pannelli solari'},
{_id: 50, idSector: [7], descr: 'Riparazioni varie'}, {_id: 50, idSector: [7], descr: 'Riparazioni varie'},
{_id: 51, idSector: [7], descr: 'Tuttofare'}, {_id: 51, idSector: [7], descr: 'Tuttofare'},
{_id: 52, idSector: [7], descr: 'Traslochi'}, {_id: 52, idSector: [7], descr: 'Traslochi'},
@@ -121,5 +121,8 @@ module.exports = {
{_id: 126, idSector: [1], descr: 'Terreno'}, {_id: 126, idSector: [1], descr: 'Terreno'},
{_id: 127, idSector: [1], descr: 'Stanza in affitto'}, {_id: 127, idSector: [1], descr: 'Stanza in affitto'},
{_id: 128, idSector: [1], descr: 'Stanza in condivisione'}, {_id: 128, idSector: [1], descr: 'Stanza in condivisione'},
{_id: 129, idSector: [3], descr: 'Home Restaurant'},
{_id: 130, idSector: [7], descr: 'Pompe di calore'},
{_id: 131, idSector: [7], descr: 'Impianti Fotovoltaici'},
], ],
}; };

View File

@@ -0,0 +1,54 @@
const express = require('express');
const router = express.Router();
const tools = require('../tools/general');
const server_constants = require('../tools/server_constants');
const { authenticate } = require('../middleware/authenticate');
const mongoose = require('mongoose').set('debug', false);
const { User } = require('../models/user');
const { Circuit } = require('../models/circuit');
const { Account } = require('../models/account');
const _ = require('lodash');
const { ObjectID } = require('mongodb');
async function getCircuitRecAdminsInfo(idapp, data) {
if (data && data.admins) {
for (const admin of data.admins) {
const myuser = await User.findOne({ idapp, username: admin.username }, { 'profile.img': 1 }).lean();
admin.profile = { img: myuser.profile.img };
}
}
return data;
}
router.post('/loadall', authenticate, async (req, res) => {
const idapp = req.body.idapp;
try {
let listaccounts = []
if (User.isAdmin(req.user.perm)) {
listaccounts = await Account.find({ idapp }).lean();
}
res.send({ listaccounts });
} catch (e) {
console.error('Error in Accounts', e);
return res.status(400).send(e);
}
const ris = null;
});
module.exports = router;

View File

@@ -5,23 +5,24 @@ const tools = require('../tools/general');
const server_constants = require('../tools/server_constants'); const server_constants = require('../tools/server_constants');
const {authenticate} = require('../middleware/authenticate'); const { authenticate } = require('../middleware/authenticate');
const mongoose = require('mongoose').set('debug', false); const mongoose = require('mongoose').set('debug', false);
const {User} = require('../models/user'); const { User } = require('../models/user');
const {Circuit} = require('../models/circuit'); const { Circuit } = require('../models/circuit');
const { Account } = require('../models/account');
const _ = require('lodash'); const _ = require('lodash');
const {ObjectID} = require('mongodb'); const { ObjectID } = require('mongodb');
async function getCircuitRecAdminsInfo(idapp, data) { async function getCircuitRecAdminsInfo(idapp, data) {
if (data && data.admins) { if (data && data.admins) {
for (const admin of data.admins) { for (const admin of data.admins) {
const myuser = await User.findOne({idapp, username: admin.username}, {'profile.img': 1}).lean(); const myuser = await User.findOne({ idapp, username: admin.username }, { 'profile.img': 1 }).lean();
admin.profile = {img: myuser.profile.img}; admin.profile = { img: myuser.profile.img };
} }
} }
@@ -35,15 +36,16 @@ router.post('/load', authenticate, async (req, res) => {
try { try {
const {SendNotif} = require('../models/sendnotif'); const { SendNotif } = require('../models/sendnotif');
const {Movement} = require('../models/movement'); const { Movement } = require('../models/movement');
// Check if ìs a Notif to read // Check if ìs a Notif to read
const idnotif = req.body['idnotif'] ? req.body['idnotif'] : ''; const idnotif = req.body['idnotif'] ? req.body['idnotif'] : '';
const lastdr = req.body['lastdr'] ? req.body['lastdr'] : '';
SendNotif.setNotifAsRead(idapp, usernameOrig, idnotif); SendNotif.setNotifAsRead(idapp, usernameOrig, idnotif);
const whatshow = Circuit.getWhatToShow(idapp, req.user.username); const whatshow = Circuit.getWhatToShow(idapp, req.user.username);
let data = await Circuit.findOne({idapp, path}, whatshow).lean(); let data = await Circuit.findOne({ idapp, path }, whatshow).lean();
const whatshowUsers = await User.getWhatToShow_IfFriends(idapp, req.user.username); const whatshowUsers = await User.getWhatToShow_IfFriends(idapp, req.user.username);
@@ -70,7 +72,16 @@ router.post('/load', authenticate, async (req, res) => {
data.movements = await Movement.getMovsByCircuitId(idapp, usernameOrig, data._id); data.movements = await Movement.getMovsByCircuitId(idapp, usernameOrig, data._id);
} }
res.send({circuit: data, users_in_circuit}); if (data) {
data.account = await Account.getAccountByUsernameAndCircuitId(idapp, '', data._id, false, '', data.path);
}
const arrrecnotif = await SendNotif.findAllNotifByUsernameIdAndIdApp(req.user.username, lastdr, idapp);
const useraccounts = await Account.getUserAccounts(idapp, req.user.username);
await User.setLastCircuitOpened(idapp, req.user.username, path);
res.send({ circuit: data, users_in_circuit, arrrecnotif, useraccounts });
} catch (e) { } catch (e) {
console.error('Error in Circuits', e); console.error('Error in Circuits', e);

View File

@@ -5,6 +5,8 @@ const router = express.Router(),
const telegrambot = require('../telegram/telegrambot'); const telegrambot = require('../telegram/telegrambot');
const i18n = require('i18n');
const sharp = require('sharp'); const sharp = require('sharp');
const { authenticate, authenticate_noerror } = require( const { authenticate, authenticate_noerror } = require(
@@ -142,6 +144,8 @@ router.post(process.env.LINK_REQUEST_NEWPASSWORD, async (req, res) => {
const email = body.email.toLowerCase().trim(); const email = body.email.toLowerCase().trim();
const codetocheck = body.codetocheck ? body.codetocheck.trim() : ''; const codetocheck = body.codetocheck ? body.codetocheck.trim() : '';
console.log('Request Reset Pwd:', email, ' idapp=', idapp);
// Check if too many requests // Check if too many requests
if (await User.tooManyReqPassword(idapp, email, true)) { if (await User.tooManyReqPassword(idapp, email, true)) {
console.log(process.env.LINK_REQUEST_NEWPASSWORD, 'TOO MANY REQUESTS !!! EXIT ', email); console.log(process.env.LINK_REQUEST_NEWPASSWORD, 'TOO MANY REQUESTS !!! EXIT ', email);
@@ -362,6 +366,7 @@ router.post('/settable', authenticate, async (req, res) => {
} else { } else {
if ((mydata['_id'] === undefined || mydata['_id'] === '' || (mytablerec.isNew && mydata['_id'] === 0)) && (mytablerec._id === undefined)) { if ((mydata['_id'] === undefined || mydata['_id'] === '' || (mytablerec.isNew && mydata['_id'] === 0)) && (mytablerec._id === undefined)) {
mytablerec._id = new ObjectID(); mytablerec._id = new ObjectID();
mydata._id = new ObjectID();
} }
} }
@@ -397,12 +402,31 @@ router.post('/settable', authenticate, async (req, res) => {
if (shared_consts.TABLES_UPDATE_LASTMODIFIED.includes(params.table)) { if (shared_consts.TABLES_UPDATE_LASTMODIFIED.includes(params.table)) {
mytablerec.date_updated = new Date(); mytablerec.date_updated = new Date();
mydata.date_updated = new Date();
} }
// console.log('mydata',mydata); // console.log('mydata',mydata);
// return await mytablerec.save().
// then(async (rec) => {
return await mytablerec.save(). const myPromise = new Promise((resolve, reject) => {
then(async (rec) => { resolve(mytablerec._id && mytable.findById(mytablerec._id))
});
return await myPromise
.then(async (doupdate) => {
if (doupdate)
return mytable.updateOne({ _id: mytablerec._id }, mydata, { new: true })
else
return mytablerec.save()
})
.then(async (risult) => {
let rec = null;
if (risult && risult.ok === 1) {
rec = await mytable.findById(mytablerec._id).lean();
} else {
rec = risult;
}
if (shared_consts.TABLES_GETCOMPLETEREC.includes(params.table)) { if (shared_consts.TABLES_GETCOMPLETEREC.includes(params.table)) {
return await mytablestrutt.getCompleteRecord(rec.idapp, rec._id); return await mytablestrutt.getCompleteRecord(rec.idapp, rec._id);
@@ -467,7 +491,12 @@ router.post('/settable', authenticate, async (req, res) => {
return res.send({ rec: myrec, ris }); return res.send({ rec: myrec, ris });
}); });
} else if (params.table === shared_consts.TAB_MYCIRCUITS && isnewrec) { } else if (params.table === shared_consts.TAB_MYCIRCUITS && isnewrec) {
// nuovo Record: // nuovo Circuito:
await User.setCircuitCmd(mydata.idapp, req.user.username, myrec.name,
shared_consts.CIRCUITCMD.CREATE, true, req.user.username, extrarec).then((ris) => {
return res.send({ rec: myrec, ris });
});
// aggiungi il creatore al Circuito stesso // aggiungi il creatore al Circuito stesso
return await User.setCircuitCmd(mydata.idapp, req.user.username, myrec.name, return await User.setCircuitCmd(mydata.idapp, req.user.username, myrec.name,
shared_consts.CIRCUITCMD.SET, true, req.user.username, extrarec).then((ris) => { shared_consts.CIRCUITCMD.SET, true, req.user.username, extrarec).then((ris) => {
@@ -558,7 +587,7 @@ router.post('/setsubrec', authenticate, (req, res) => {
router.post('/gettable', authenticate, (req, res) => { router.post('/gettable', authenticate, (req, res) => {
const params = req.body; const params = req.body;
let idapp = req.user.idapp; let idapp = req.user ? req.user.idapp : params.idapp;
const mytable = globalTables.getTableByTableName(params.table); const mytable = globalTables.getTableByTableName(params.table);
// console.log('mytable', mytable); // console.log('mytable', mytable);
if (!mytable) { if (!mytable) {
@@ -668,12 +697,49 @@ router.post('/getpage', async (req, res) => {
const idapp = req.body.idapp; const idapp = req.body.idapp;
const mypath = params.path; const mypath = params.path;
return await MyPage.findOne({ idapp, path: mypath }).then((ris) => { let found = await MyPage.findOne({ idapp, path: mypath }).then((ris) => {
return res.send({ mypage: ris }); if (ris)
return res.send({ mypage: ris });
else
return null;
}).catch((e) => { }).catch((e) => {
console.log(e.message); console.log(e.message);
res.status(400).send(e); res.status(400).send(e);
}); });
if (!found) {
// trova quelli con il :
let regexp = new RegExp(`:`, 'ig')
const searchpagesSpec = await MyPage.find({ idapp, path: { $regex: regexp } });
if (searchpagesSpec) {
let arrsubpath = mypath.split('/');
for (let i = 0; i < searchpagesSpec.length; i++) {
let arrsubstr = searchpagesSpec[i].path.split('/');
if (arrsubpath.length === arrsubpath.length) {
let mypathbuild = '';
for (let j = 0; j < arrsubstr.length; j++) {
if (arrsubstr[j].includes(':')) {
mypathbuild += arrsubpath[j] + '/';
} else {
mypathbuild += arrsubstr[j] + '/';
}
}
if (mypath + '/' === mypathbuild) {
return res.send({ mypage: searchpagesSpec[i] });
}
}
}
}
return await MyPage.findOne({ idapp, path: mypath }).then((ris) => {
return res.send({ mypage: ris });
});
}
return found;
}); });
@@ -795,6 +861,12 @@ router.patch('/chval', authenticate, async (req, res) => {
} }
let precRec = null
if (mydata.table === 'accounts') {
precRec = await mytable.findById(id);
}
return await mytable.findByIdAndUpdate(id, { $set: fieldsvalue }). return await mytable.findByIdAndUpdate(id, { $set: fieldsvalue }).
then(async (rec) => { then(async (rec) => {
// tools.mylogshow(' REC TO MODIFY: ', rec); // tools.mylogshow(' REC TO MODIFY: ', rec);
@@ -821,14 +893,38 @@ router.patch('/chval', authenticate, async (req, res) => {
} }
if (mydata.table === 'accounts') { if (mydata.table === 'accounts') {
let msg = '';
if (rec.circuitId)
circuit = await Circuit.getCircuitByCircuitId(rec.circuitId);
let dest = rec.groupname ? rec.groupname : rec.username;
let valprec = 0
if ('saldo' in fieldsvalue) { if ('saldo' in fieldsvalue) {
msg = 'l\'utente ' + req.user.username + ' ha variato il Saldo di ' + rec.username + ' a ' + fieldsvalue.saldo; valprec = precRec && precRec.saldo ? precRec.saldo : 0
msg = i18n.__('SALDO_VARIATO', circuit.name, req.user.username, dest, valprec, fieldsvalue.saldo, circuit.symbol);
} else if ('fidoConcesso' in fieldsvalue) {
valprec = precRec && precRec.fidoConcesso ? precRec.fidoConcesso : 0
msg = i18n.__('FIDOCONCESSO_VARIATO', circuit.name, req.user.username, dest, valprec, fieldsvalue.fidoConcesso, circuit.symbol);
} else if ('qta_maxConcessa' in fieldsvalue) {
valprec = precRec && precRec.qta_maxConcessa ? precRec.qta_maxConcessa : 0
msg = i18n.__('QTAMAX_VARIATO', circuit.name, req.user.username, dest, valprec, fieldsvalue.qta_maxConcessa, circuit.symbol);
}
if (msg) {
telegrambot.sendMsgTelegramToTheManagers(idapp, msg); telegrambot.sendMsgTelegramToTheManagers(idapp, msg);
telegrambot.sendMsgTelegramToTheAdminsOfCircuit(idapp, circuit.path, msg);
} }
} }
if (mydata.table === 'users') { if (mydata.table === 'users') {
if ('profile.resid_province' in fieldsvalue) {
// Controlla se esiste il Circuito di questa provincia, se non esiste lo crea!
await Circuit.createCircuitIfNotExist(req, idapp, fieldsvalue['profile.resid_province']);
}
if (camporequisiti) { if (camporequisiti) {
await User.checkIfSbloccatiRequisiti(idapp, allData, id); await User.checkIfSbloccatiRequisiti(idapp, allData, id);
} }
@@ -1310,7 +1406,7 @@ function load(req, res, version) {
let myuserextra = null; let myuserextra = null;
if (req.user) { if (req.user) {
// askedfriends = User.getAskedFriendsByUsername(idapp, req.user.username); // askedfriends = User.getAskedFriendsByUsername(idapp, req.user.username);
myuserextra = User.addExtraInfo(idapp, req.user); myuserextra = User.addExtraInfo(idapp, req.user._doc, req.user);
} }
return Promise.all([ return Promise.all([
@@ -1748,6 +1844,7 @@ router.delete('/delfile', authenticate, (req, res) => {
deleteFile(req, res, 0); deleteFile(req, res, 0);
}); });
function deleteFile(req, res, version) { function deleteFile(req, res, version) {
const relativefile = req.query.filename; const relativefile = req.query.filename;
const idapp = req.user.idapp; const idapp = req.user.idapp;

View File

@@ -5,23 +5,23 @@ const tools = require('../tools/general');
const server_constants = require('../tools/server_constants'); const server_constants = require('../tools/server_constants');
const {authenticate} = require('../middleware/authenticate'); const { authenticate } = require('../middleware/authenticate');
const mongoose = require('mongoose').set('debug', false); const mongoose = require('mongoose').set('debug', false);
const {User} = require('../models/user'); const { User } = require('../models/user');
const {MyGroup} = require('../models/mygroup'); const { MyGroup } = require('../models/mygroup');
const _ = require('lodash'); const _ = require('lodash');
const {ObjectID} = require('mongodb'); const { ObjectID } = require('mongodb');
async function getGroupRecAdminsInfo(idapp, data) { async function getGroupRecAdminsInfo(idapp, data) {
if (data && data.admins) { if (data && data.admins) {
for (const admin of data.admins) { for (const admin of data.admins) {
const myuser = await User.findOne({idapp, username: admin.username}, {'profile.img': 1}).lean(); const myuser = await User.findOne({ idapp, username: admin.username }, { 'profile.img': 1 }).lean();
admin.profile = {img: myuser.profile.img}; admin.profile = { img: myuser.profile.img };
} }
} }
@@ -35,14 +35,33 @@ router.post('/load', authenticate, async (req, res) => {
try { try {
const {SendNotif} = require('../models/sendnotif'); const { SendNotif } = require('../models/sendnotif');
const { Circuit } = require('../models/circuit');
const { Account } = require('../models/account');
// Check if ìs a Notif to read // Check if ìs a Notif to read
const idnotif = req.body['idnotif'] ? req.body['idnotif'] : ''; const idnotif = req.body['idnotif'] ? req.body['idnotif'] : '';
SendNotif.setNotifAsRead(idapp, usernameOrig, idnotif); SendNotif.setNotifAsRead(idapp, usernameOrig, idnotif);
const whatshow = MyGroup.getWhatToShow(idapp, req.user.username); const whatshow = MyGroup.getWhatToShow(idapp, req.user.username);
let data = await MyGroup.findOne({idapp, groupname}, whatshow).lean(); let data = await MyGroup.findOne({ idapp, groupname }, whatshow).lean();
/*
if (data.mycircuits) {
for (let i = 0; i < data.mycircuits.length; i++) {
const mycirc = await Circuit.findOne({ idapp, name: data.mycircuits[i].circuitname }).lean();
data.mycircuits[i] = mycirc;
}
}
*/
if (data.mycircuits) {
for (let i = 0; i < data.mycircuits.length; i++) {
const mycirc = await Circuit.findOne({ idapp, name: data.mycircuits[i].circuitname }).lean();
if (mycirc)
data.mycircuits[i].account = await Account.getAccountByUsernameAndCircuitId(idapp, '', mycirc._id, true, groupname);
}
}
let cities = []; let cities = [];
if (data) { if (data) {
@@ -57,16 +76,16 @@ router.post('/load', authenticate, async (req, res) => {
const whatshowUsers = await User.getWhatToShow_IfFriends(idapp, req.user.username); const whatshowUsers = await User.getWhatToShow_IfFriends(idapp, req.user.username);
const users_in_group = await User.find( const users_in_group = await User.find(
{ {
idapp, idapp,
'profile.mygroups': { 'profile.mygroups': {
$elemMatch: {groupname: {$eq: groupname}}, $elemMatch: { groupname: { $eq: groupname } },
},
}, },
whatshowUsers, },
whatshowUsers,
).lean(); ).lean();
res.send({mygroup: data, users_in_group, cities}); res.send({ mygroup: data, users_in_group, cities });
} catch (e) { } catch (e) {
console.error('Error in MyGroups', e); console.error('Error in MyGroups', e);

View File

@@ -47,13 +47,6 @@ const newsletter = [
listUniqueId: '', listUniqueId: '',
mailchimpApiKey: '' mailchimpApiKey: ''
}, },
{
name: 'MandalaSolidale',
mailchimpInstance: '',
listUniqueId: '',
mailchimpApiKey: ''
}
]; ];
async function AddMailingList(locale, idapp, user, settomailchimp, sendnews) { async function AddMailingList(locale, idapp, user, settomailchimp, sendnews) {

View File

@@ -7,6 +7,8 @@ const server_constants = require('../tools/server_constants');
const { authenticate } = require('../middleware/authenticate'); const { authenticate } = require('../middleware/authenticate');
const { MyGroup } = require('../models/mygroup');
const mongoose = require('mongoose').set('debug', false) const mongoose = require('mongoose').set('debug', false)
const { User } = require('../models/user'); const { User } = require('../models/user');
@@ -50,6 +52,10 @@ router.post('/load', async (req, res) => {
lastsonline: await User.getLastOnlineUsers(idapp), lastsonline: await User.getLastOnlineUsers(idapp),
lastssharedlink: await User.getLastSharedLink(idapp), lastssharedlink: await User.getLastSharedLink(idapp),
diffusorilist: await User.getDiffusoriUsers(idapp), diffusorilist: await User.getDiffusoriUsers(idapp),
receiveRislist: await User.getReceiveRISUsers(idapp),
// receiveRislist: await User.find({idapp}).limit(20),
receiveRislistgroup: await MyGroup.getReceiveRISGroups(idapp),
strettelist: await User.getBestStretteDiManoUsers(idapp),
checkuser: await User.checkUser(idapp, username), checkuser: await User.checkUser(idapp, username),
// navi_partite: await Nave.getNaviPartite(idapp), // navi_partite: await Nave.getNaviPartite(idapp),
// navi_in_partenza: await Nave.getNaviInPartenza(idapp), // navi_in_partenza: await Nave.getNaviInPartenza(idapp),

View File

@@ -38,6 +38,8 @@ router.post('/', authenticate, async (req, res) => {
subscriptionModel.access = req.body.others.access; subscriptionModel.access = req.body.others.access;
subscriptionModel.browser = req.get('User-Agent'); subscriptionModel.browser = req.get('User-Agent');
// console.log('subscriptionModel.browser', subscriptionModel.browser);
// Find if already exist // Find if already exist
await Subscription.findOne({ await Subscription.findOne({
userId: subscriptionModel.userId, userId: subscriptionModel.userId,

View File

@@ -0,0 +1,99 @@
const express = require('express');
const router = express.Router();
const tools = require('../tools/general');
const server_constants = require('../tools/server_constants');
const { authenticate } = require('../middleware/authenticate');
const mongoose = require('mongoose').set('debug', false);
const { User } = require('../models/user');
const { MyGroup } = require('../models/mygroup');
const _ = require('lodash');
const { ObjectID } = require('mongodb');
async function getGroupRecAdminsInfo(idapp, data) {
if (data && data.admins) {
for (const admin of data.admins) {
const myuser = await User.findOne({ idapp, username: admin.username }, { 'profile.img': 1 }).lean();
admin.profile = { img: myuser.profile.img };
}
}
return data;
}
router.post('/load', authenticate, async (req, res) => {
const idapp = req.body.idapp;
const groupname = req.body.groupname;
const usernameOrig = req.user.username;
try {
const { SendNotif } = require('../models/sendnotif');
const { Circuit } = require('../models/circuit');
const { Account } = require('../models/account');
// Check if ìs a Notif to read
const idnotif = req.body['idnotif'] ? req.body['idnotif'] : '';
SendNotif.setNotifAsRead(idapp, usernameOrig, idnotif);
const whatshow = MyGroup.getWhatToShow(idapp, req.user.username);
let data = await MyGroup.findOne({ idapp, groupname }, whatshow).lean();
/*
if (data.mycircuits) {
for (let i = 0; i < data.mycircuits.length; i++) {
const mycirc = await Circuit.findOne({ idapp, name: data.mycircuits[i].circuitname }).lean();
data.mycircuits[i] = mycirc;
}
}
*/
if (data.mycircuits) {
for (let i = 0; i < data.mycircuits.length; i++) {
const mycirc = await Circuit.findOne({ idapp, name: data.mycircuits[i].circuitname }).lean();
if (mycirc)
data.mycircuits[i].account = await Account.getAccountByUsernameAndCircuitId(idapp, '', mycirc._id, true, groupname);
}
}
let cities = [];
if (data) {
cities = await MyGroup.extractCitiesName(idapp, data._id);
if (cities && cities.length > 0) {
cities = cities[0].mycities;
}
}
data = await getGroupRecAdminsInfo(idapp, data);
const whatshowUsers = await User.getWhatToShow_IfFriends(idapp, req.user.username);
const users_in_group = await User.find(
{
idapp,
'profile.mygroups': {
$elemMatch: { groupname: { $eq: groupname } },
},
},
whatshowUsers,
).lean();
res.send({ mygroup: data, users_in_group, cities });
} catch (e) {
console.error('Error in MyGroups', e);
return res.status(400).send(e);
}
const ris = null;
});
module.exports = router;

View File

@@ -1,7 +1,7 @@
const express = require('express'); 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 { Nave } = require('../models/nave');
const Hours = require('../models/hours'); const Hours = require('../models/hours');
@@ -9,13 +9,13 @@ const Hours = require('../models/hours');
//const { ListaIngresso } = require('../models/listaingresso'); //const { ListaIngresso } = require('../models/listaingresso');
//const { Graduatoria } = require('../models/graduatoria'); //const { Graduatoria } = require('../models/graduatoria');
// const { ExtraList } = require('../models/extralist'); // const { ExtraList } = require('../models/extralist');
const {ObjectID} = require('mongodb'); const { ObjectID } = require('mongodb');
const sendemail = require('../sendemail'); const sendemail = require('../sendemail');
const {Settings} = require('../models/settings'); const { Settings } = require('../models/settings');
const {SendNotif} = require('../models/sendnotif'); const { SendNotif } = require('../models/sendnotif');
const tools = require('../tools/general'); const tools = require('../tools/general');
const shared_consts = require('../tools/shared_nodejs'); const shared_consts = require('../tools/shared_nodejs');
@@ -28,7 +28,7 @@ const _ = require('lodash');
const reg = require('../reg/registration'); const reg = require('../reg/registration');
const {authenticate} = require('../middleware/authenticate'); const { authenticate } = require('../middleware/authenticate');
const Cart = require('../models/cart'); const Cart = require('../models/cart');
const CartClass = require('../modules/Cart'); const CartClass = require('../modules/Cart');
@@ -36,15 +36,16 @@ const Product = require('../models/product');
const Variant = require('../models/variant'); const Variant = require('../models/variant');
const TypedError = require('../modules/ErrorHandler'); const TypedError = require('../modules/ErrorHandler');
const {MyGroup} = require('../models/mygroup'); const { MyGroup } = require('../models/mygroup');
const {Circuit} = require('../models/circuit'); const { Circuit } = require('../models/circuit');
const { Account } = require('../models/account');
const mongoose = require('mongoose').set('debug', false); const mongoose = require('mongoose').set('debug', false);
const Subscription = mongoose.model('subscribers'); const Subscription = mongoose.model('subscribers');
function existSubScribe(userId, access, browser) { function existSubScribe(userId, access, browser) {
return Subscription.findOne({userId, access, browser}).then(itemsub => { return Subscription.findOne({ userId, access, browser }).then(itemsub => {
return itemsub; return itemsub;
}).catch(err => { }).catch(err => {
return null; return null;
@@ -69,7 +70,7 @@ router.post('/test1', async (req, res) => {
}); });
await sendemail.sendEmail_Registration(user.lang, user.email, user, await sendemail.sendEmail_Registration(user.lang, user.email, user,
user.idapp, user.linkreg); user.idapp, user.linkreg);
}); });
@@ -105,17 +106,17 @@ router.post('/', async (req, res) => {
// tools.mylog("LANG PASSATO = " + user.lang, "IDAPP", user.idapp); // tools.mylog("LANG PASSATO = " + user.lang, "IDAPP", user.idapp);
if (!tools.isAlphaNumericAndSpecialCharacter(body.username) || if (!tools.isAlphaNumericAndSpecialCharacter(body.username) ||
body.email.length < 6 || body.email.length < 6 ||
body.username.length < 6 || body.password.length < 6) { body.username.length < 6 || body.password.length < 6) {
await tools.snooze(5000); await tools.snooze(5000);
console.log('Username non valido in Registrazione: ' + body.username); console.log('Username non valido in Registrazione: ' + body.username);
res.status(400). res.status(400).
send({code: server_constants.RIS_CODE_USERNAME_NOT_VALID, msg: ''}); send({ code: server_constants.RIS_CODE_USERNAME_NOT_VALID, msg: '' });
return 1; return 1;
} }
if (tools.blockwords(body.username) || tools.blockwords(body.name) || if (tools.blockwords(body.username) || tools.blockwords(body.name) ||
tools.blockwords(body.surname)) { tools.blockwords(body.surname)) {
// tools.writeIPToBan(user.ipaddr + ': [' + user.username + '] ' + user.name + ' ' + user.surname); // tools.writeIPToBan(user.ipaddr + ': [' + user.username + '] ' + user.name + ' ' + user.surname);
await tools.snooze(5000); await tools.snooze(5000);
return res.status(404).send(); return res.status(404).send();
@@ -152,14 +153,14 @@ router.post('/', async (req, res) => {
if (lastrec.ipaddr === user.ipaddr) { if (lastrec.ipaddr === user.ipaddr) {
// Se l'ha fatto troppo ravvicinato // Se l'ha fatto troppo ravvicinato
if (lastrec.date_reg) { if (lastrec.date_reg) {
let ris = tools.isdiffSecDateLess(lastrec.date_reg, 120); let ris = tools.isdiffSecDateLess(lastrec.date_reg, 5);
if (ris) { if (ris) {
tools.writeIPToBan( tools.writeIPToBan(
user.ipaddr + ': [' + user.username + '] ' + user.name + ' ' + user.ipaddr + ': [' + user.username + '] ' + user.name + ' ' +
user.surname); user.surname);
await tools.snooze(10000); await tools.snooze(10000);
res.status(400). res.status(400).
send({code: server_constants.RIS_CODE_BANIP, msg: ''}); send({ code: server_constants.RIS_CODE_BANIP, msg: '' });
return 1; return 1;
} }
} }
@@ -185,29 +186,29 @@ router.post('/', async (req, res) => {
// Check if already esist email or username // Check if already esist email or username
exit = await User.findByUsername(user.idapp, user.username). exit = await User.findByUsername(user.idapp, user.username).
then((useralreadyexist) => { then((useralreadyexist) => {
if (useralreadyexist) { if (useralreadyexist) {
if (tools.getAskToVerifyReg(useralreadyexist.idapp)) { if (tools.getAskToVerifyReg(useralreadyexist.idapp)) {
if (!useralreadyexist.verified_by_aportador && useralreadyexist.profile.teleg_id > 0) { if (!useralreadyexist.verified_by_aportador && useralreadyexist.profile.teleg_id > 0) {
if (trovarec) { if (trovarec) {
utentenonancoraVerificato = true; utentenonancoraVerificato = true;
}
} }
} }
if (!utentenonancoraVerificato) {
res.status(400).
send({
code: server_constants.RIS_CODE_USERNAME_ALREADY_EXIST,
msg: '',
});
return 1;
}
} }
}); if (!utentenonancoraVerificato) {
res.status(400).
send({
code: server_constants.RIS_CODE_USERNAME_ALREADY_EXIST,
msg: '',
});
return 1;
}
}
});
if (!utentenonancoraVerificato) { if (!utentenonancoraVerificato) {
@@ -215,17 +216,17 @@ router.post('/', async (req, res) => {
return; return;
exit = await User.findByEmail(user.idapp, user.email). exit = await User.findByEmail(user.idapp, user.email).
then((useralreadyexist) => { then((useralreadyexist) => {
if (useralreadyexist) { if (useralreadyexist) {
res.status(400). res.status(400).
send({ send({
code: server_constants.RIS_CODE_EMAIL_ALREADY_EXIST, code: server_constants.RIS_CODE_EMAIL_ALREADY_EXIST,
msg: '', msg: '',
}); });
return 1; return 1;
} }
}); });
if (exit === 1) if (exit === 1)
return; return;
@@ -233,14 +234,14 @@ router.post('/', async (req, res) => {
let recuser = null; let recuser = null;
recuser = await User.findByCellAndNameSurname(user.idapp, user.profile.cell, recuser = await User.findByCellAndNameSurname(user.idapp, user.profile.cell,
user.name, user.surname); user.name, user.surname);
if (recuser && user.name !== '' && user.surname !== '' && if (recuser && user.name !== '' && user.surname !== '' &&
user.profile.cell !== '') { user.profile.cell !== '') {
console.log('UTENTE GIA ESISTENTE:\n'); console.log('UTENTE GIA ESISTENTE:\n');
console.log(user); console.log(user);
// User already registered! // User already registered!
res.status(400). res.status(400).
send({code: server_constants.RIS_CODE_USER_ALREADY_EXIST, msg: ''}); send({ code: server_constants.RIS_CODE_USER_ALREADY_EXIST, msg: '' });
return 1; return 1;
} }
@@ -258,14 +259,14 @@ router.post('/', async (req, res) => {
if (!id_aportador && tools.getAskToVerifyReg(body.idapp)) { if (!id_aportador && tools.getAskToVerifyReg(body.idapp)) {
// Si sta tentando di registrare una persona sotto che non corrisponde! // Si sta tentando di registrare una persona sotto che non corrisponde!
let msg = 'Il link di registrazione non sembra risultare valido.<br>invitante: ' + let msg = 'Il link di registrazione non sembra risultare valido.<br>invitante: ' +
user.aportador_solidario + '<br>username: ' + user.username; user.aportador_solidario + '<br>username: ' + user.username;
await telegrambot.sendMsgTelegramToTheManagers(user.idapp, msg); await telegrambot.sendMsgTelegramToTheManagers(user.idapp, msg);
res.status(400). res.status(400).
send({ send({
code: server_constants.RIS_CODE_USER_APORTADOR_NOT_VALID, code: server_constants.RIS_CODE_USER_APORTADOR_NOT_VALID,
msg: '', msg: '',
}); });
return 1; return 1;
} }
@@ -274,9 +275,9 @@ router.post('/', async (req, res) => {
// Se mi sono registrato ma l'invitante non mi abilita, allora il posso registrarmi nuovamente, con lo stesso username e password, // Se mi sono registrato ma l'invitante non mi abilita, allora il posso registrarmi nuovamente, con lo stesso username e password,
// con un'altro link di un'altro invitante ! // con un'altro link di un'altro invitante !
await User.setaportador_solidario(user.idapp, user.username, await User.setaportador_solidario(user.idapp, user.username,
user.aportador_solidario); user.aportador_solidario);
const myuser = await User.findOne({_id: trovarec._id}); const myuser = await User.findOne({ _id: trovarec._id });
if (myuser) { if (myuser) {
await telegrambot.askConfirmationUser(myuser.idapp, shared_consts.CallFunz.REGISTRATION, myuser); await telegrambot.askConfirmationUser(myuser.idapp, shared_consts.CallFunz.REGISTRATION, myuser);
@@ -306,44 +307,44 @@ router.post('/', async (req, res) => {
return user.save().then(async () => { return user.save().then(async () => {
return User.findByUsername(user.idapp, user.username, false). return User.findByUsername(user.idapp, user.username, false).
then((usertrovato) => { then((usertrovato) => {
// tools.mylog("TROVATO USERNAME ? ", user.username, usertrovato); // tools.mylog("TROVATO USERNAME ? ", user.username, usertrovato);
if (usertrovato !== null) { if (usertrovato !== null) {
return user.generateAuthToken(req); return user.generateAuthToken(req);
} else { } else {
res.status(400).send(); res.status(400).send();
return 0; return 0;
} }
}). }).
then(async (token) => { then(async (token) => {
// tools.mylog("passo il TOKEN: ", token); // tools.mylog("passo il TOKEN: ", token);
if (recextra) { if (recextra) {
recextra.registered = true; recextra.registered = true;
recextra.username = user.username; recextra.username = user.username;
await recextra.save(); await recextra.save();
// await User.fixUsername(user.idapp, user.ind_order, user.username); // await User.fixUsername(user.idapp, user.ind_order, user.username);
} }
return token; return token;
}). }).
then(async (token) => { then(async (token) => {
// tools.mylog("LINKREG = " + user.linkreg); // tools.mylog("LINKREG = " + user.linkreg);
// Invia un'email all'utente // Invia un'email all'utente
// tools.mylog('process.env.TESTING_ON', process.env.TESTING_ON); // tools.mylog('process.env.TESTING_ON', process.env.TESTING_ON);
console.log('res.locale', res.locale); console.log('res.locale', res.locale);
await telegrambot.askConfirmationUser(user.idapp, shared_consts.CallFunz.REGISTRATION, user, '', '', '', regexpire); await telegrambot.askConfirmationUser(user.idapp, shared_consts.CallFunz.REGISTRATION, user, '', '', '', regexpire);
// if (!tools.testing()) { // if (!tools.testing()) {
await sendemail.sendEmail_Registration(user.lang, user.email, user, await sendemail.sendEmail_Registration(user.lang, user.email, user,
user.idapp, user.linkreg); user.idapp, user.linkreg);
// } // }
res.header('x-auth', token).send(user); res.header('x-auth', token).send(user);
return true; return true;
}); });
}).catch((e) => { }).catch((e) => {
console.error(e.message); console.error(e.message);
res.status(400).send(e); res.status(400).send(e);
@@ -378,15 +379,15 @@ router.patch('/:id', authenticate, (req, res) => {
if (!User.isAdmin(req.user.perm)) { if (!User.isAdmin(req.user.perm)) {
// If without permissions, exit // If without permissions, exit
return res.status(404). return res.status(404).
send({code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: ''}); send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' });
} }
User.findByIdAndUpdate(id, {$set: body}).then((user) => { User.findByIdAndUpdate(id, { $set: body }).then((user) => {
tools.mylogshow(' USER TO MODIFY: ', user); tools.mylogshow(' USER TO MODIFY: ', user);
if (!user) { if (!user) {
return res.status(404).send(); return res.status(404).send();
} else { } else {
res.send({code: server_constants.RIS_CODE_OK, msg: ''}); res.send({ code: server_constants.RIS_CODE_OK, msg: '' });
} }
}).catch((e) => { }).catch((e) => {
@@ -395,33 +396,65 @@ router.patch('/:id', authenticate, (req, res) => {
}); });
}); });
router.post('/profile', authenticate, (req, res) => { router.post('/receiveris', authenticate, (req, res) => {
const usernameOrig = req.user.username; const username = req.user ? req.user.username : '';
const groupname = req.body.groupname;
const idapp = req.body.idapp;
try {
if (!username)
return res.send({ code: server_constants.RIS_CODE_ERR });
if (groupname) {
return MyGroup.setReceiveRisGroup(idapp, groupname)
.then(risult => {
res.send({ code: server_constants.RIS_CODE_OK });
}).catch((err) => {
tools.mylog('ERRORE IN receiveris: ' + err.message);
res.status(400).send();
});
} else if (username) {
return User.setReceiveRis(idapp, username)
.then(risult => {
res.send({ code: server_constants.RIS_CODE_OK });
}).catch((err) => {
tools.mylog('ERRORE IN receiveris: ' + err.message);
res.status(400).send();
});
}
} catch (e) {
res.status(400).send();
};
});
router.post('/profile', (req, res) => {
const usernameOrig = req.user ? req.user.username : '';
const perm = req.user ? req.user.perm : tools.Perm.PERM_NONE;
const username = req.body['username']; const username = req.body['username'];
const idapp = req.body.idapp; const idapp = req.body.idapp;
const locale = req.body.locale; const locale = req.body.locale;
//++Todo: controlla che tipo di dati ha il permesso di leggere //++Todo: controlla che tipo di dati ha il permesso di leggere
try { try {
// Check if ìs a Notif to read // Check if ìs a Notif to read
const idnotif = req.body['idnotif'] ? req.body['idnotif'] : ''; const idnotif = req.body['idnotif'] ? req.body['idnotif'] : '';
SendNotif.setNotifAsRead(idapp, usernameOrig, idnotif); SendNotif.setNotifAsRead(idapp, usernameOrig, idnotif);
return User.getUserProfileByUsername(idapp, username, req.user.username, return User.getUserProfileByUsername(idapp, username, usernameOrig,
false, req.user.perm). false, perm).
then((ris) => { then((ris) => {
return User.getFriendsByUsername(idapp, req.user.username). return User.getFriendsByUsername(idapp, usernameOrig).
then((friends) => { then((friends) => {
res.send({user: ris, friends}); res.send({ user: ris, friends });
}); });
}).catch((e) => { }).catch((e) => {
tools.mylog('ERRORE IN Profile: ' + e.message); tools.mylog('ERRORE IN Profile: ' + e.message);
res.status(400).send(); res.status(400).send();
}); });
} catch (e) { } catch (e) {
tools.mylogserr('Error profile: ', e); tools.mylogserr('Error profile: ', e);
res.status(400).send(); res.status(400).send();
@@ -437,27 +470,27 @@ router.post('/panel', authenticate, async (req, res) => {
if (!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm)) { if (!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm)) {
// If without permissions, exit // If without permissions, exit
return res.status(404). return res.status(404).
send({code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: ''}); send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' });
} }
try { try {
const myuser = await User.findOne({idapp, username}, const myuser = await User.findOne({ idapp, username },
{ {
username: 1, username: 1,
name: 1, name: 1,
surname: 1, surname: 1,
email: 1, email: 1,
verified_by_aportador: 1, verified_by_aportador: 1,
aportador_solidario: 1, aportador_solidario: 1,
lasttimeonline: 1, lasttimeonline: 1,
deleted: 1, deleted: 1,
sospeso: 1, sospeso: 1,
blocked: 1, blocked: 1,
reported: 1, reported: 1,
username_who_report: 1, username_who_report: 1,
date_report: 1, date_report: 1,
profile: 1, profile: 1,
}).lean(); }).lean();
if (!!myuser) { if (!!myuser) {
res.send(myuser); res.send(myuser);
} else { } else {
@@ -502,7 +535,7 @@ router.post('/notifs', authenticate, async (req, res) => {
router.post('/login', (req, res) => { router.post('/login', (req, res) => {
var body = _.pick(req.body, var body = _.pick(req.body,
['username', 'password', 'idapp', 'keyappid', 'lang']); ['username', 'password', 'idapp', 'keyappid', 'lang']);
var user = new User(body); var user = new User(body);
// const subs = _.pick(req.body, ['subs']); // const subs = _.pick(req.body, ['subs']);
@@ -516,86 +549,86 @@ router.post('/login', (req, res) => {
let resalreadysent = false; let resalreadysent = false;
User.findByCredentials(user.idapp, user.username, user.password). User.findByCredentials(user.idapp, user.username, user.password).
then(async (user) => { then(async (user) => {
// tools.mylog("CREDENZIALI ! "); // tools.mylog("CREDENZIALI ! ");
if (!user) { if (!user) {
await tools.snooze(3000); await tools.snooze(3000);
const msg = 'Tentativo di Login ERRATO [' + body.username + ' , ' + const msg = 'Tentativo di Login ERRATO [' + body.username + ' , ' +
body.password + ']\n' + '[IP: ' + tools.getiPAddressUser(req) + body.password + ']\n' + '[IP: ' + tools.getiPAddressUser(req) +
']'; ']';
tools.mylogshow(msg); tools.mylogshow(msg);
tools.writeErrorLog(msg); tools.writeErrorLog(msg);
// telegrambot.sendMsgTelegramToTheManagers(body.idapp, msg); // telegrambot.sendMsgTelegramToTheManagers(body.idapp, msg);
res.status(404).send({code: server_constants.RIS_CODE_LOGIN_ERR}); res.status(404).send({ code: server_constants.RIS_CODE_LOGIN_ERR });
} }
return user; return user;
}). }).
then(user => { then(user => {
// console.log('Lgn-Ok'); // console.log('Lgn-Ok');
if (user) { if (user) {
return user.generateAuthToken(req).then((token) => { return user.generateAuthToken(req).then((token) => {
var usertosend = new User(); var usertosend = new User();
shared_consts.fieldsUserToChange().forEach((field) => { shared_consts.fieldsUserToChange().forEach((field) => {
usertosend[field] = user[field]; usertosend[field] = user[field];
});
// usertosend._id = user._id.toHexString();
// if (!User.isAdmin(req.user)) {
// usertosend.ipaddr = user.ipaddr;
// }
// tools.mylog("user.verified_email:" + user.verified_email);
// tools.mylog("usertosend.userId", usertosend.userId);
return {usertosend, token};
}).then((myris) => {
const access = 'auth';
const browser = req.get('User-Agent');
// Check if already exist Subscribe
return existSubScribe(myris.usertosend._id, access, browser).
then(subscribe => {
return (subscribe !== null);
}).
then(subsExistonDb => {
// console.log('ESEGUITO OK')
return {
usertosend: myris.usertosend,
token: myris.token,
subsExistonDb,
};
}).
catch(err => {
return {
usertosend: myris.usertosend,
token: myris.token,
subsExistonDb: false,
};
});
}).then(myris => {
// console.log('res', myris.token, myris.usertosend);
// SEND TOKEN AND CODE RESULT
return res.header('x-auth', myris.token).send({
usertosend: myris.usertosend,
code: server_constants.RIS_CODE_OK,
subsExistonDb: myris.subsExistonDb,
});
// tools.mylog("TROVATOOO!");
// tools.mylog('FINE LOGIN')
}); });
}
}). // usertosend._id = user._id.toHexString();
catch((e) => { // if (!User.isAdmin(req.user)) {
console.error('ERRORE IN LOGIN: ' + e.message); // usertosend.ipaddr = user.ipaddr;
if (!resalreadysent) // }
res.status(400).
send({code: server_constants.RIS_CODE_LOGIN_ERR_GENERIC}); // tools.mylog("user.verified_email:" + user.verified_email);
}); // tools.mylog("usertosend.userId", usertosend.userId);
return { usertosend, token };
}).then((myris) => {
const access = 'auth';
const browser = req.get('User-Agent');
// Check if already exist Subscribe
return existSubScribe(myris.usertosend._id, access, browser).
then(subscribe => {
return (subscribe !== null);
}).
then(subsExistonDb => {
// console.log('ESEGUITO OK')
return {
usertosend: myris.usertosend,
token: myris.token,
subsExistonDb,
};
}).
catch(err => {
return {
usertosend: myris.usertosend,
token: myris.token,
subsExistonDb: false,
};
});
}).then(myris => {
// console.log('res', myris.token, myris.usertosend);
// SEND TOKEN AND CODE RESULT
return res.header('x-auth', myris.token).send({
usertosend: myris.usertosend,
code: server_constants.RIS_CODE_OK,
subsExistonDb: myris.subsExistonDb,
});
// tools.mylog("TROVATOOO!");
// tools.mylog('FINE LOGIN')
});
}
}).
catch((e) => {
console.error('ERRORE IN LOGIN: ' + e.message);
if (!resalreadysent)
res.status(400).
send({ code: server_constants.RIS_CODE_LOGIN_ERR_GENERIC });
});
}); });
router.delete('/me/token', authenticate, (req, res) => { router.delete('/me/token', authenticate, (req, res) => {
@@ -683,9 +716,14 @@ router.post('/friends/cmd', authenticate, async (req, res) => {
if (!User.isAdmin(req.user.perm) || !User.isManager(req.user.perm)) { if (!User.isAdmin(req.user.perm) || !User.isManager(req.user.perm)) {
// If without permissions, exit // If without permissions, exit
if (usernameOrig !== usernameLogged) { if ((usernameOrig !== usernameLogged) && (
(usernameDest !== usernameLogged) &&
((cmd === shared_consts.FRIENDSCMD.SETFRIEND) ||
(cmd === shared_consts.FRIENDSCMD.SETHANDSHAKE))
)) {
return res.status(404). return res.status(404).
send({code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: ''}); send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' });
} }
} }
@@ -693,13 +731,13 @@ router.post('/friends/cmd', authenticate, async (req, res) => {
usernameDest = await User.getRealUsernameByUsername(idapp, usernameDest); usernameDest = await User.getRealUsernameByUsername(idapp, usernameDest);
return User.setFriendsCmd(req, idapp, usernameOrig, usernameDest, cmd, value). return User.setFriendsCmd(req, idapp, usernameOrig, usernameDest, cmd, value).
then((ris) => { then((ris) => {
res.send(ris); res.send(ris);
}). }).
catch((e) => { catch((e) => {
tools.mylog('ERRORE IN Friends/cmd: ' + e.message); tools.mylog('ERRORE IN Friends/cmd: ' + e.message);
res.status(400).send(); res.status(400).send();
}); });
}); });
@@ -721,13 +759,13 @@ router.post('/groups/cmd', authenticate, (req, res) => {
}*/ }*/
return User.setGroupsCmd(idapp, usernameOrig, groupnameDest, cmd, value, usernameLogged). return User.setGroupsCmd(idapp, usernameOrig, groupnameDest, cmd, value, usernameLogged).
then((ris) => { then((ris) => {
res.send(ris); res.send(ris);
}). }).
catch((e) => { catch((e) => {
tools.mylog('ERRORE IN groups/cmd: ' + e.message); tools.mylog('ERRORE IN groups/cmd: ' + e.message);
res.status(400).send(); res.status(400).send();
}); });
}); });
@@ -741,6 +779,7 @@ router.post('/circuits/cmd', authenticate, async (req, res) => {
const value = req.body.value; const value = req.body.value;
const extrarec = req.body.extrarec; const extrarec = req.body.extrarec;
/*if (!User.isAdmin(req.user.perm) || !User.isManager(req.user.perm)) { /*if (!User.isAdmin(req.user.perm) || !User.isManager(req.user.perm)) {
// If without permissions, exit // If without permissions, exit
if (usernameOrig !== usernameLogged) { if (usernameOrig !== usernameLogged) {
@@ -750,29 +789,31 @@ router.post('/circuits/cmd', authenticate, async (req, res) => {
}*/ }*/
return await User.setCircuitCmd(idapp, usernameOrig, circuitname, cmd, value, usernameLogged, extrarec). return await User.setCircuitCmd(idapp, usernameOrig, circuitname, cmd, value, usernameLogged, extrarec).
then(async (ris) => { then(async (ris) => {
// Check if ìs a Notif to read // Check if ìs a Notif to read
if (extrarec && extrarec.hasOwnProperty('idnotif')) { if (extrarec && extrarec.hasOwnProperty('idnotif')) {
const idnotif = extrarec['idnotif'] ? extrarec['idnotif'] : ''; const idnotif = extrarec['idnotif'] ? extrarec['idnotif'] : '';
await SendNotif.setNotifAsRead(idapp, usernameOrig, idnotif); await SendNotif.setNotifAsRead(idapp, usernameOrig, idnotif);
} }
return res.send(ris); return res.send(ris);
}). }).
catch((e) => { catch((e) => {
tools.mylog('ERRORE IN circuits/cmd: ' + e.message); tools.mylog('ERRORE IN circuits/cmd: ' + e.message);
res.status(400).send(); res.status(400).send();
}); });
}); });
async function eseguiDbOp(idapp, mydata, locale) { async function eseguiDbOp(idapp, mydata, locale, req, res) {
let ris = await User.DbOp(idapp, mydata); let ris = await User.DbOp(idapp, mydata);
const populate = require('../populate/populate'); const populate = require('../populate/populate');
const globalTables = require('../tools/globalTables');
let mystr = ''; let mystr = '';
try { try {
@@ -1015,7 +1056,7 @@ async function eseguiDbOp(idapp, mydata, locale) {
} else if (mydata.dbop === 'creaUtentiTest') { } else if (mydata.dbop === 'creaUtentiTest') {
let num = 0; let num = 0;
lastrec = await User.find({idapp}).sort({_id: -1}).limit(1); lastrec = await User.find({ idapp }).sort({ _id: -1 }).limit(1);
let last = 1; let last = 1;
if (lastrec) { if (lastrec) {
last = lastrec[0].index; last = lastrec[0].index;
@@ -1045,7 +1086,7 @@ async function eseguiDbOp(idapp, mydata, locale) {
num++; num++;
} }
ris = {num}; ris = { num };
/*} else if (mydata.dbop === 'visuPlacca') { /*} else if (mydata.dbop === 'visuPlacca') {
mystr = '✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨\n' + mystr = '✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨\n' +
@@ -1081,6 +1122,17 @@ async function eseguiDbOp(idapp, mydata, locale) {
ris = populate.rewriteTable('contribtypes'); ris = populate.rewriteTable('contribtypes');
} else if (mydata.dbop === 'ReplaceUsername') {
if (User.isAdmin(req.user.perm)) {
ris = globalTables.replaceUsername(req.body.idapp, mydata.search_username, mydata.replace_username);
}
} else if (mydata.dbop === 'ReplaceCircuitName') {
if (User.isAdmin(req.user.perm)) {
ris = globalTables.ReplaceCircuitName(req.body.idapp, mydata.search_username, mydata.replace_username);
}
} else if (mydata.dbop === 'copyFrom1To14') { } else if (mydata.dbop === 'copyFrom1To14') {
const idapporig = 1; const idapporig = 1;
const idappdest = 14; const idappdest = 14;
@@ -1106,11 +1158,11 @@ async function eseguiDbOp(idapp, mydata, locale) {
tools.mylogshow('copyfromapptoapp: ', table, mytable); tools.mylogshow('copyfromapptoapp: ', table, mytable);
await mytable.DuplicateAllRecords(idapporig, idappdest). await mytable.DuplicateAllRecords(idapporig, idappdest).
then((numrec) => { then((numrec) => {
// tools.mylogshow(' REC TO MODIFY: ', rec); // tools.mylogshow(' REC TO MODIFY: ', rec);
if (numrec) if (numrec)
numrectot += numrec; numrectot += numrec;
}); });
} }
ris = true; ris = true;
@@ -1121,10 +1173,10 @@ async function eseguiDbOp(idapp, mydata, locale) {
} else if (mydata.dbop === 'emptyTabCatServiziBeni') { } else if (mydata.dbop === 'emptyTabCatServiziBeni') {
const {Sector} = require('../models/sector'); const { Sector } = require('../models/sector');
const {SectorGood} = require('../models/sectorgood'); const { SectorGood } = require('../models/sectorgood');
const {Skill} = require('../models/skill'); const { Skill } = require('../models/skill');
const {Good} = require('../models/good'); const { Good } = require('../models/good');
await Sector.deleteMany({}); await Sector.deleteMany({});
await SectorGood.deleteMany({}); await SectorGood.deleteMany({});
@@ -1135,16 +1187,16 @@ async function eseguiDbOp(idapp, mydata, locale) {
// Svuota e Ricrea // Svuota e Ricrea
const {Sector} = require('../models/sector'); const { Sector } = require('../models/sector');
const {SectorGood} = require('../models/sectorgood'); const { SectorGood } = require('../models/sectorgood');
const {Skill} = require('../models/skill'); const { Skill } = require('../models/skill');
const {Good} = require('../models/good'); const { Good } = require('../models/good');
const {SubSkill} = require('../models/subskill'); const { SubSkill } = require('../models/subskill');
const {Contribtype} = require('../models/contribtype'); const { Contribtype } = require('../models/contribtype');
const {AdType} = require('../models/adtype'); const { AdType } = require('../models/adtype');
const {AdTypeGood} = require('../models/adtypegood'); const { AdTypeGood } = require('../models/adtypegood');
const {StatusSkill} = require('../models/statusSkill'); const { StatusSkill } = require('../models/statusSkill');
const {CatGrp} = require('../models/catgrp'); const { CatGrp } = require('../models/catgrp');
await Sector.deleteMany({}); await Sector.deleteMany({});
await SectorGood.deleteMany({}); await SectorGood.deleteMany({});
@@ -1163,8 +1215,8 @@ async function eseguiDbOp(idapp, mydata, locale) {
// Svuota e Ricrea // Svuota e Ricrea
const {City} = require('../models/city'); const { City } = require('../models/city');
const {Province} = require('../models/province'); const { Province } = require('../models/province');
await City.deleteMany({}); await City.deleteMany({});
await Province.deleteMany({}); await Province.deleteMany({});
@@ -1188,12 +1240,48 @@ async function eseguiDbOp(idapp, mydata, locale) {
} else if (mydata.dbop === 'emptyCityProvinces') { } else if (mydata.dbop === 'emptyCityProvinces') {
const {City} = require('../models/city'); const { City } = require('../models/city');
const {Province} = require('../models/province'); const { Province } = require('../models/province');
await City.remove({}); await City.remove({});
await Province.remove({}); await Province.remove({});
} else if (mydata.dbop === 'createAllCircuits') {
const { Province } = require('../models/province');
const arrProv = await Province.find({});
for (const recprov of arrProv) {
await Circuit.createCircuitIfNotExist(req, idapp, recprov.prov);
}
} else if (mydata.dbop === 'ImpostaMinMaxPersonali') {
await Account.SetMinMaxPersonali(idapp, mydata.valmin, mydata.valmax);
} else if (mydata.dbop === 'ImpostaMinMaxComunitari') {
await Account.SetMinMaxComunitari(idapp, mydata.valmin, mydata.valmax);
} else if (mydata.dbop === 'ImpostaMinMaxCollettivi') {
await Account.SetMinMaxCollettivi(idapp, mydata.valmin, mydata.valmax);
} else if (mydata.dbop === 'ImpostaDefMinMaxPersonali') {
await Circuit.SetDefMinMaxPersonali(idapp, mydata.valmin, mydata.valmax);
} else if (mydata.dbop === 'ImpostaDefMinMaxCollettivi') {
await Circuit.SetDefMinMaxCollettivi(idapp, mydata.valmin, mydata.valmax);
} else if (mydata.dbop === 'ReplaceAllCircuits') {
await Circuit.replaceAllCircuits(idapp);
} else if (mydata.dbop === 'setstrProvByIdCityCircuits') {
await Circuit.setstrProvByIdCityCircuits(idapp);
/*} else if (mydata.dbop === 'visuNave') { /*} else if (mydata.dbop === 'visuNave') {
mystr = await Nave.getNavePos(idapp, parseInt(mydata.riga), parseInt(mydata.col)); mystr = await Nave.getNavePos(idapp, parseInt(mydata.riga), parseInt(mydata.col));
@@ -1228,7 +1316,49 @@ async function eseguiDbOp(idapp, mydata, locale) {
} catch (e) { } catch (e) {
console.log(e.message); console.log(e.message);
} }
} };
async function eseguiDbOpUser(idapp, mydata, locale, req, res) {
let ris = await User.DbOp(idapp, mydata);
const populate = require('../populate/populate');
const globalTables = require('../tools/globalTables');
let mystr = '';
try {
if (mydata.dbop === 'CreateAccountCircuits') {
const allcirc = await Circuit.find({ idapp });
for (const mycirc of allcirc) {
// Il Conto Comunitario prende il nome del circuito !
await Account.createAccount(idapp, '', mycirc.name, '', mycirc.path);
}
} else if (mydata.dbop === 'saveStepTut') {
await User.findOneAndUpdate({ _id: mydata._id },
{ $set: { 'profile.stepTutorial': mydata.value } });
} else if (mydata.dbop === 'noNameSurname') {
await User.findOneAndUpdate({ _id: mydata._id },
{ $set: { 'profile.noNameSurname': mydata.value } });
} else if (mydata.dbop === 'noCircuit') {
await User.findOneAndUpdate({ _id: mydata._id },
{ $set: { 'profile.noCircuit': mydata.value } });
} else if (mydata.dbop === 'noFoto') {
await User.findOneAndUpdate({ _id: mydata._id },
{ $set: { 'profile.noFoto': mydata.value } });
}
} catch (e) {
}
};
router.post('/dbop', authenticate, async (req, res) => { router.post('/dbop', authenticate, async (req, res) => {
@@ -1236,13 +1366,50 @@ router.post('/dbop', authenticate, async (req, res) => {
idapp = req.body.idapp; idapp = req.body.idapp;
locale = req.body.locale; locale = req.body.locale;
try { if (!User.isAdmin(req.user.perm)) {
const ris = await eseguiDbOp(idapp, mydata, locale); // If without permissions, exit
return res.status(404).
send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' });
}
res.send(ris); try {
let ris = await eseguiDbOp(idapp, mydata, locale, req, res);
if (!ris) {
ris = {};
}
ris = await User.updateMyData(ris, idapp, req.user.username);
res.send({ code: server_constants.RIS_CODE_OK, data: ris.data });
} catch (e) { } catch (e) {
res.status(400).send({code: server_constants.RIS_CODE_ERR, msg: e}); res.status(400).send({ code: server_constants.RIS_CODE_ERR, msg: e });
console.log(e.message);
}
});
router.post('/dbopuser', authenticate, async (req, res) => {
const mydata = req.body.mydata;
idapp = req.body.idapp;
locale = req.body.locale;
try {
let ris = await eseguiDbOpUser(idapp, mydata, locale, req, res);
if (!ris) {
ris = {};
}
ris = await User.updateMyData(ris, idapp, req.user.username);
res.send({ code: server_constants.RIS_CODE_OK, ris });
} catch (e) {
res.status(400).send({ code: server_constants.RIS_CODE_ERR, msg: e });
console.log(e.message); console.log(e.message);
} }
@@ -1256,13 +1423,13 @@ router.post('/mgt', authenticate, async (req, res) => {
locale = req.body.locale; locale = req.body.locale;
try { try {
const {nummsgsent, numrec, textsent, text} = await telegrambot.sendMsgFromSiteToBotTelegram(idapp, req.user, mydata); const { nummsgsent, numrec, textsent, text } = await telegrambot.sendMsgFromSiteToBotTelegram(idapp, req.user, mydata);
return res.send({numrec, nummsgsent, textsent, text}); return res.send({ numrec, nummsgsent, textsent, text });
} catch (e) { } catch (e) {
res.status(400).send(); res.status(400).send();
res.send({code: server_constants.RIS_CODE_ERR, msg: e}); res.send({ code: server_constants.RIS_CODE_ERR, msg: e });
console.log(e.message); console.log(e.message);
} }

View File

@@ -159,14 +159,6 @@ module.exports = {
transport_preview.sendMail(mailOptions).then(console.log).catch(console.error); transport_preview.sendMail(mailOptions).then(console.log).catch(console.error);
} }
}, },
// getHostByIdApp: function (idapp) {
// if (idapp === 1) {
// let siteport = (process.env.PORT_APP1 !== "0") ? (':' + process.env.PORT_APP1) : "";
// return process.env.URLBASE_APP1 + siteport;
// } else {
// return ""
// }
// },
getlinkReg: function(idapp, idreg) { getlinkReg: function(idapp, idreg) {
const strlinkreg = tools.getHostByIdApp(idapp) + process.env.LINKVERIF_REG + `/?idapp=${idapp}&idlink=${idreg}`; const strlinkreg = tools.getHostByIdApp(idapp) + process.env.LINKVERIF_REG + `/?idapp=${idapp}&idlink=${idreg}`;
@@ -279,6 +271,7 @@ module.exports = {
}, },
sendEmail_RequestNewPassword: async function(lang, user, emailto, idapp, tokenforgot, tokenforgot_code) { sendEmail_RequestNewPassword: async function(lang, user, emailto, idapp, tokenforgot, tokenforgot_code) {
console.log('sendEmail_RequestNewPassword');
let mylocalsconf = { let mylocalsconf = {
idapp, idapp,

View File

@@ -1,7 +1,10 @@
require('./config/config'); require('./config/config');
require('./config/config');
// console.log(" lodash"); // console.log(" lodash");
console.log(process.versions);
const _ = require('lodash'); const _ = require('lodash');
// console.log(" cors"); // console.log(" cors");
const cors = require('cors'); const cors = require('cors');
@@ -9,6 +12,8 @@ const cors = require('cors');
// console.log(" 2) fs"); // console.log(" 2) fs");
const fs = require('fs'); const fs = require('fs');
const NUOVO_METODO_TEST = true;
const server_constants = require('./tools/server_constants'); const server_constants = require('./tools/server_constants');
//const throttle = require('express-throttle-bandwidth'); //const throttle = require('express-throttle-bandwidth');
@@ -23,49 +28,33 @@ const bodyParser = require('body-parser');
const path = require('path'); const path = require('path');
const cron = require('node-cron'); const cron = require('node-cron');
console.log('Starting mongoose...');
require('./db/mongoose'); require('./db/mongoose');
const {Settings} = require('./models/settings'); // console.log('Starting pem...');
// const pem = require('pem')
const { Settings } = require('./models/settings');
// test // test
const i18n = require('i18n'); const i18n = require('i18n');
let credentials = null;
// OBTAIN // OBTAIN
// https://www.psclistens.com/insight/blog/enabling-a-nodejs-ssl-webserver-using-let-s-encrypt-pem-certificates/ // https://www.psclistens.com/insight/blog/enabling-a-nodejs-ssl-webserver-using-let-s-encrypt-pem-certificates/
if ((process.env.NODE_ENV === 'production') ||
(process.env.NODE_ENV === 'test')) {
var privateKey = fs.readFileSync(process.env.PATH_CERT_KEY, 'utf8');
var certificate = fs.readFileSync(process.env.PATH_SERVER_CRT, 'utf8');
var credentials = {
key: privateKey,
cert: certificate,
ca: [
fs.readFileSync(process.env.PATH_SSL_ROOT_PEM, 'utf8'),
fs.readFileSync(process.env.PATH_SSL_CHAIN_PEM, 'utf8'),
],
};
var https = require('https');
} else {
if (process.env.HTTPS_LOCALHOST === "true") {
var privateKey = fs.readFileSync(process.env.PATH_CERT_KEY, 'utf8');
var certificate = fs.readFileSync(process.env.PATH_SERVER_CRT, 'utf8');
var credentials = {
key: privateKey,
cert: certificate,
ciphers: 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384',
honorCipherOrder: true,
secureProtocol: 'TLSv1_2_method',
};
var https = require('https');
} else { if ((process.env.NODE_ENV === 'production')) {
var http = require('http'); console.log('*** AMBIENTE DI PRODUZIONE !!!!')
} } else if (process.env.NODE_ENV === 'test') {
console.log('*** ### AMBIENTE DI TEST ')
} }
console.log('DB: ' + process.env.DATABASE); console.log('DB: ' + process.env.DATABASE);
// console.log("PORT: " + port); // console.log("PORT: " + port);
// console.log("MONGODB_URI: " + process.env.MONGODB_URI); // console.log("MONGODB_URI: " + process.env.MONGODB_URI);
@@ -82,17 +71,17 @@ var mongoose = require('mongoose').set('debug', false);
mongoose.set('debug', false); mongoose.set('debug', false);
const {CfgServer} = require('./models/cfgserver'); const { CfgServer } = require('./models/cfgserver');
const {ObjectID} = require('mongodb'); const { ObjectID } = require('mongodb');
const populate = require('./populate/populate'); const populate = require('./populate/populate');
const {Circuit} = require('./models/circuit'); const { Circuit } = require('./models/circuit');
const printf = require('util').format; const printf = require('util').format;
myLoad().then(ris => { myLoad().then(ris => {
const {User} = require('./models/user'); const { User } = require('./models/user');
require('./models/todo'); require('./models/todo');
require('./models/project'); require('./models/project');
@@ -125,6 +114,7 @@ myLoad().then(ris => {
const users_router = require('./router/users_router'); const users_router = require('./router/users_router');
const mygroups_router = require('./router/mygroups_router'); const mygroups_router = require('./router/mygroups_router');
const circuits_router = require('./router/circuits_router'); const circuits_router = require('./router/circuits_router');
const accounts_router = require('./router/accounts_router');
const iscrittiConacreis_router = require('./router/iscrittiConacreis_router'); const iscrittiConacreis_router = require('./router/iscrittiConacreis_router');
const iscrittiArcadei_router = require('./router/iscrittiArcadei_router'); const iscrittiArcadei_router = require('./router/iscrittiArcadei_router');
const site_router = require('./router/site_router'); const site_router = require('./router/site_router');
@@ -136,18 +126,18 @@ myLoad().then(ris => {
const mygoods_router = require('./router/mygoods_router'); const mygoods_router = require('./router/mygoods_router');
const mygen_router = require('./router/mygen_router'); const mygen_router = require('./router/mygen_router');
const {MyEvent} = require('./models/myevent'); const { MyEvent } = require('./models/myevent');
app.use(express.static('views')); app.use(express.static('views'));
// app.use(express.static(path.join(__dirname, 'client'))); // app.use(express.static(path.join(__dirname, 'client')));
app.use(bodyParser.json()); app.use(bodyParser.json());
// app.set('view engine', 'pug'); // app.set('view engine', 'pug');
// Set static folder // Set static folder
// app.use(express.static(path.join(__dirname, 'public'))); // app.use(express.static(path.join(__dirname, 'public')));
i18n.configure({ i18n.configure({
locales: ['it', 'enUs', 'es', 'fr', 'pt', 'si'], locales: ['it', 'enUs', 'es', 'fr', 'pt', 'si'],
@@ -166,10 +156,13 @@ myLoad().then(ris => {
app.use(bodyParser.json()); app.use(bodyParser.json());
// app.use(express.cookieParser()); // app.use(express.cookieParser());
app.use(i18n.init); app.use(i18n.init);
// Use Routes console.log('Use Routes \...');
// Use Routes
app.use('/', index_router); app.use('/', index_router);
app.use('/subscribe', subscribe_router); app.use('/subscribe', subscribe_router);
app.use('/sendmsg', sendmsg_router); app.use('/sendmsg', sendmsg_router);
@@ -186,6 +179,7 @@ myLoad().then(ris => {
app.use('/users', users_router); app.use('/users', users_router);
app.use('/mygroup', mygroups_router); app.use('/mygroup', mygroups_router);
app.use('/circuit', circuits_router); app.use('/circuit', circuits_router);
app.use('/account', accounts_router);
app.use('/iscritti_conacreis', iscrittiConacreis_router); app.use('/iscritti_conacreis', iscrittiConacreis_router);
app.use('/iscritti_arcadei', iscrittiArcadei_router); app.use('/iscritti_arcadei', iscrittiArcadei_router);
app.use('/report', report_router); app.use('/report', report_router);
@@ -198,24 +192,24 @@ myLoad().then(ris => {
app.use('/mygoods', mygoods_router); app.use('/mygoods', mygoods_router);
app.use('/mygen', mygen_router); app.use('/mygen', mygen_router);
// catch 404 and forward to error handler // catch 404 and forward to error handler
// app.use(function (req, res, next) { // app.use(function (req, res, next) {
// var err = new Error('Not Found'); // var err = new Error('Not Found');
// err.status = 404; // err.status = 404;
// next(err); // next(err);
// }); // });
// app.set('views', path.join(__dirname, 'views')); // app.set('views', path.join(__dirname, 'views'));
// app.set('view engine', 'pug'); // app.set('view engine', 'pug');
// development error handler // development error handler
// will print stacktrace // will print stacktrace
if (app.get('env') === 'development') { if (app.get('env') === 'development') {
app.use(function(err, req, res, next) { app.use(function (err, req, res, next) {
console.log('Server Error: ', err.message); console.log('Server Error: ', err.message);
// console.trace(); // console.trace();
res.status(err.status || 500).send({error: err.message}); res.status(err.status || 500).send({ error: err.message });
// res.render('error', { // res.render('error', {
// message: err.message, // message: err.message,
// error: err // error: err
@@ -224,28 +218,86 @@ myLoad().then(ris => {
} }
// require('./telegram/telegrambot'); // require('./telegram/telegrambot');
// *** DB CONNECTIONS *** // *** DB CONNECTIONS ***
// mysql_func.mySqlConn_Shen.connect((err) => { // mysql_func.mySqlConn_Shen.connect((err) => {
// if (!err) // if (!err)
// console.log('DB connection to Shen Database succeded.'); // console.log('DB connection to Shen Database succeded.');
// else // else
// console.log('DB connection to Shen Database FAILED \n Error: ' + JSON.stringify(err, undefined, 2)); // console.log('DB connection to Shen Database FAILED \n Error: ' + JSON.stringify(err, undefined, 2));
// }); // });
if (process.env.NODE_ENV === 'production') { if (process.env.NODE_ENV === 'production') {
console.log('*** PRODUCTION! '); console.log('*** PRODUCTION! ');
} }
if ((process.env.NODE_ENV === 'production') || if ((process.env.NODE_ENV === 'production') ||
(process.env.NODE_ENV === 'test') || process.env.HTTPS_LOCALHOST === "true") { (process.env.NODE_ENV === 'test')) {
var httpsServer = https.createServer(credentials, app);
console.log('httpsServer: port ', port); const keyStream = path.resolve(`./${process.env.PATH_CERT_KEY}`);
httpsServer.listen(port); const certificateStream = path.resolve(`./${process.env.PATH_SERVER_CRT}`);
const privateKey = fs.readFileSync(keyStream, "utf8");
const certificate = fs.readFileSync(certificateStream, "utf8");
if (NUOVO_METODO_TEST) {
credentials = {
key: privateKey,
cert: certificate,
};
} else {
credentials = {
key: privateKey,
cert: certificate,
ca: [
fs.readFileSync(process.env.PATH_SSL_ROOT_PEM, 'utf8'),
fs.readFileSync(process.env.PATH_SSL_CHAIN_PEM, 'utf8'),
],
};
}
var https = require('https');
} else {
if (process.env.HTTPS_LOCALHOST === "true") {
var privateKey = fs.readFileSync(process.env.PATH_CERT_KEY, 'utf8');
var certificate = fs.readFileSync(process.env.PATH_SERVER_CRT, 'utf8');
credentials = {
key: privateKey,
cert: certificate,
ciphers: 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384',
honorCipherOrder: true,
secureProtocol: 'TLSv1_2_method',
};
var https = require('https');
} else {
var http = require('http');
}
}
if ((process.env.NODE_ENV === 'production') ||
(process.env.NODE_ENV === 'test') || process.env.HTTPS_LOCALHOST === "true") {
if (false) {
/*pem.createCertificate({ days: 1, selfSigned: true }, (err, keys) => {
if (err) {
throw err
}
const httpsServer = https.createServer({ key: keys.clientKey, cert: keys.certificate }, (req, res) => {
res.end('o hai!')
}).listen(port)
}) */
} else {
const httpsServer = https.createServer(credentials, app);
console.log('httpsServer: port ', port);
httpsServer.listen(port);
}
} else { } else {
console.log('httpServer: port ', port); console.log('httpServer: port ', port);
var httpServer = http.createServer(app); const httpServer = http.createServer(app);
httpServer.listen(port); httpServer.listen(port);
} }
@@ -304,17 +356,17 @@ async function mystart() {
faitest(); faitest();
// ----------------- MAILCHIMP ----- // ----------------- MAILCHIMP -----
const querystring = require('querystring'); const querystring = require('querystring');
const mailchimpClientId = 'xxxxxxxxxxxxxxxx'; const mailchimpClientId = 'xxxxxxxxxxxxxxxx';
app.get('/mailchimp/auth/authorize', function(req, res) { app.get('/mailchimp/auth/authorize', function (req, res) {
res.redirect('https://login.mailchimp.com/oauth2/authorize?' + res.redirect('https://login.mailchimp.com/oauth2/authorize?' +
querystring.stringify({ querystring.stringify({
'response_type': 'code', 'response_type': 'code',
'client_id': mailchimpClientId, 'client_id': mailchimpClientId,
'redirect_uri': 'http://127.0.0.1:3000/mailchimp/auth/callback', 'redirect_uri': 'http://127.0.0.1:3000/mailchimp/auth/callback',
})); }));
}); });
} }
@@ -350,7 +402,7 @@ async function mycron_30min() {
let enablecrontab = false; let enablecrontab = false;
enablecrontab = await Settings.getValDbSettings(app.idapp, enablecrontab = await Settings.getValDbSettings(app.idapp,
tools.ENABLE_CRONTAB, false); tools.ENABLE_CRONTAB, false);
if (enablecrontab) { if (enablecrontab) {
// ... // ...
@@ -359,22 +411,22 @@ async function mycron_30min() {
} }
function testmsgwebpush() { function testmsgwebpush() {
const {User} = require('./models/user'); const { User } = require('./models/user');
// console.log('nomeapp 1: ' , tools.getNomeAppByIdApp(1)); // console.log('nomeapp 1: ' , tools.getNomeAppByIdApp(1));
// console.log('nomeapp 2: ' , tools.getNomeAppByIdApp(2)); // console.log('nomeapp 2: ' , tools.getNomeAppByIdApp(2));
User.find({username: 'paoloar77', idapp: '1'}).then(async (arrusers) => { User.find({ username: 'paoloar77', idapp: '1' }).then(async (arrusers) => {
if (arrusers !== null) { if (arrusers !== null) {
for (const user of arrusers) { for (const user of arrusers) {
await tools.sendNotificationToUser(user._id, 'Server', await tools.sendNotificationToUser(user._id, 'Server',
'Il Server è Ripartito', '/', '', 'server', []).then(ris => { 'Il Server è Ripartito', '/', '', 'server', []).then(ris => {
if (ris) { if (ris) {
} else { } else {
// already sent the error on calling sendNotificationToUser // already sent the error on calling sendNotificationToUser
} }
}); });
} }
} }
}); });
@@ -402,16 +454,16 @@ cron.schedule('*/60 * * * *', async () => {
async function resetProcessingJob() { async function resetProcessingJob() {
const {Newstosent} = require('./models/newstosent'); const { Newstosent } = require('./models/newstosent');
arrrec = await Newstosent.find({}); arrrec = await Newstosent.find({});
for (const rec of arrrec) { for (const rec of arrrec) {
rec.processing_job = false; rec.processing_job = false;
await Newstosent.findOneAndUpdate({_id: rec.id}, {$set: rec}, {new: false}). await Newstosent.findOneAndUpdate({ _id: rec.id }, { $set: rec }, { new: false }).
then((item) => { then((item) => {
}); });
} }
} }
@@ -425,13 +477,13 @@ async function inizia() {
if (process.env.NODE_ENV === 'development') { if (process.env.NODE_ENV === 'development') {
await telegrambot.sendMsgTelegram(tools.FREEPLANET, await telegrambot.sendMsgTelegram(tools.FREEPLANET,
telegrambot.ADMIN_USER_SERVER, telegrambot.ADMIN_USER_SERVER,
`Ciao ${telegrambot.ADMIN_USER_NAME_SERVER}!`); `Ciao ${telegrambot.ADMIN_USER_NAME_SERVER}!`);
await telegrambot.sendMsgTelegramByIdTelegram(tools.FREEPLANET, await telegrambot.sendMsgTelegramByIdTelegram(tools.FREEPLANET,
telegrambot.ADMIN_IDTELEGRAM_SERVER, telegrambot.ADMIN_IDTELEGRAM_SERVER,
`Ciao ${telegrambot.ADMIN_USER_NAME_SERVER}\n` + `Ciao ${telegrambot.ADMIN_USER_NAME_SERVER}\n` +
`🔅 Il Server ${process.env.DATABASE} è appena ripartito!`); `🔅 Il Server ${process.env.DATABASE} è appena ripartito!`);
} else { } else {
@@ -445,7 +497,7 @@ async function inizia() {
*/ */
console.log(process.versions);
} catch (e) { } catch (e) {
@@ -468,7 +520,7 @@ async function inizia() {
// } // }
async function estraiImmagini(table) { async function estraiImmagini(table) {
const {User} = require('./models/user'); const { User } = require('./models/user');
let idapp = '13'; let idapp = '13';
@@ -483,7 +535,7 @@ async function estraiImmagini(table) {
console.log('INIZIO - estraiImmagini', table); console.log('INIZIO - estraiImmagini', table);
arrlist = await mytable.find({idapp}).lean(); arrlist = await mytable.find({ idapp }).lean();
let file = ''; let file = '';
let filetocheck = ''; let filetocheck = '';
@@ -498,7 +550,7 @@ async function estraiImmagini(table) {
} }
for (const rec of arrlist) { for (const rec of arrlist) {
const myuser = await User.findOne({idapp, _id: rec.userId}).lean(); const myuser = await User.findOne({ idapp, _id: rec.userId }).lean();
if (myuser) { if (myuser) {
const myphotos = rec.photos; const myphotos = rec.photos;
@@ -527,7 +579,7 @@ async function estraiImmagini(table) {
if (photo.imagefile) { if (photo.imagefile) {
file = dir + 'profile/' + myuser.username + '/' + table + '/' + file = dir + 'profile/' + myuser.username + '/' + table + '/' +
photo.imagefile; photo.imagefile;
filefrom = dir + 'profile/undefined/' + table + '/' + photo.imagefile; filefrom = dir + 'profile/undefined/' + table + '/' + photo.imagefile;
filefrom2 = dir + 'profile/' + myuser.username + '/' + photo.imagefile; filefrom2 = dir + 'profile/' + myuser.username + '/' + photo.imagefile;
@@ -587,7 +639,7 @@ async function faitest() {
} }
if (testfind) { if (testfind) {
const {City} = require('./models/city'); const { City } = require('./models/city');
let miacity = 'roma'; let miacity = 'roma';
const ris = await City.findByCity(miacity); const ris = await City.findByCity(miacity);
@@ -595,7 +647,7 @@ async function faitest() {
console.log('ris', ris); console.log('ris', ris);
} }
const {User} = require('./models/user'); const { User } = require('./models/user');
if (false) { if (false) {
let myuser = await User.findOne({ let myuser = await User.findOne({
@@ -617,13 +669,13 @@ async function faitest() {
}); });
await sendemail.sendEmail_Registration('it', 'paolo@arcodiluce.it', user, await sendemail.sendEmail_Registration('it', 'paolo@arcodiluce.it', user,
'12', ''); '12', '');
} }
if (false) { if (false) {
const {User} = require('./models/user'); const { User } = require('./models/user');
const idapp = tools.FREEPLANET; const idapp = tools.FREEPLANET;
const idreg = 0; const idreg = 0;
@@ -653,12 +705,12 @@ async function faitest() {
}; };
await telegrambot.notifyToTelegram(telegrambot.phase.REGISTRATION, await telegrambot.notifyToTelegram(telegrambot.phase.REGISTRATION,
mylocalsconf); mylocalsconf);
} catch (e) { } catch (e) {
console.log('error ' + e); console.log('error ' + e);
} }
} }
} }
module.exports = {app}; module.exports = { app };

File diff suppressed because it is too large Load Diff

View File

@@ -16,7 +16,7 @@ const CryptoJS = require('crypto-js');
const Url = require('url-parse'); const Url = require('url-parse');
const { ObjectID } = require('mongodb'); const { ObjectID, ObjectId } = require('mongodb');
const shared_consts = require('./shared_nodejs'); const shared_consts = require('./shared_nodejs');
@@ -32,9 +32,11 @@ const webpush = require('web-push');
const i18n = require('i18n'); const i18n = require('i18n');
const FILELOG = 'filelog.txt'; const FILELOG = 'filelog.txt';
const FILEEVENTS = 'logevents.txt'; const FILEEVENTS = 'logevents.txt';
const FILEMANAGERS = 'logmanagers.txt'; const FILEMANAGERS = 'logmanagers.txt';
const FILETRANSACTION = 'logtrans.txt';
const FILEERRLOGIN = 'errlogin.txt'; const FILEERRLOGIN = 'errlogin.txt';
const FILESOSTITUZIONI = 'log_sostituzioni.txt'; const FILESOSTITUZIONI = 'log_sostituzioni.txt';
const FILEIP_TO_BAN = 'log_iptoban.txt'; const FILEIP_TO_BAN = 'log_iptoban.txt';
@@ -125,6 +127,7 @@ const textlang = {
'MSG_SEND_FROM': 'Msg Inviato da', 'MSG_SEND_FROM': 'Msg Inviato da',
'ZOOM_CONFERMATO': 'Sei stato confermato ad aver visto la Video Conferenza di Benvenuto!', 'ZOOM_CONFERMATO': 'Sei stato confermato ad aver visto la Video Conferenza di Benvenuto!',
'RICHIESTA_AMICIZIA': '🌈 Richiesta d\'Amicizia da parte di %s', 'RICHIESTA_AMICIZIA': '🌈 Richiesta d\'Amicizia da parte di %s',
'RICHIESTA_HANDSHAKE': '🌈 %s ha comunicato che ti conosce personalmente e ha fiducia in te.',
'ACCETTATO_SUL_GRUPPO': '✅ Sei stato accettato da %s a far parte del Gruppo %s', 'ACCETTATO_SUL_GRUPPO': '✅ Sei stato accettato da %s a far parte del Gruppo %s',
'CREATO_NUOVO_GRUPPO': '✅ Hai appena creato un nuovo Gruppo chiamato %s', 'CREATO_NUOVO_GRUPPO': '✅ Hai appena creato un nuovo Gruppo chiamato %s',
'ACCETTATO_NOTIFICA_ADMINS': '✅ l\'utente %s è stato accettato a far parte del Gruppo %s (da parte di %s)', 'ACCETTATO_NOTIFICA_ADMINS': '✅ l\'utente %s è stato accettato a far parte del Gruppo %s (da parte di %s)',
@@ -423,6 +426,8 @@ module.exports = {
SEP: '|', SEP: '|',
USER_ADMIN_CIRCUITS: 'paoloar77',
TYPE_PROJECT: 1, TYPE_PROJECT: 1,
TYPE_TODO: 2, TYPE_TODO: 2,
@@ -836,8 +841,10 @@ module.exports = {
}).catch(async (err) => { }).catch(async (err) => {
console.error('err Push', err.body); console.error('err Push', err.body);
// Cancella dal DB la notifica Push, visto che da errore! (sarà scaduto) if (err.body) {
const ris = await Subscription.deleteOne({ _id: subscription._id }); // Cancella dal DB la notifica Push, visto che da errore! (sarà scaduto)
const ris = await Subscription.deleteOne({ _id: subscription._id });
}
reject({ reject({
status: false, status: false,
@@ -864,13 +871,14 @@ module.exports = {
}, },
getReqByPar(idapp, usernameOrig) { getReqByPar(idapp, usernameOrig, groupOrig) {
return { return {
body: { body: {
idapp: idapp, idapp: idapp,
}, },
user: { user: {
username: usernameOrig, username: usernameOrig,
groupOrig,
}, },
}; };
}, },
@@ -910,6 +918,23 @@ module.exports = {
telegrambot.askConfirmationUserFriend(idapp, shared_consts.CallFunz.RICHIESTA_AMICIZIA, userrecDest, username, usernameOrig); telegrambot.askConfirmationUserFriend(idapp, shared_consts.CallFunz.RICHIESTA_AMICIZIA, userrecDest, username, usernameOrig);
} }
} else if (cmd === shared_consts.FRIENDSCMD.SETHANDSHAKE) {
descr = printf(this.get__('RICHIESTA_HANDSHAKE', lang), usernameOrig);
openUrl = '/my/' + usernameOrig;
tag = 'reqhandshake';
const userrecDest = await User.getUserShortDataByUsername(idapp, usernameOrig);
const foundIfAlreadyHandShake = await User.isMyHandShake(idapp, username, usernameOrig);
if (userrecDest) {
sendmynotif = false; // non lo rimandare 2 volte !
if (!foundIfAlreadyHandShake) {
// SEND TELEGRAM NOTIFICATION
telegrambot.askConfirmationUserFriend(idapp, shared_consts.CallFunz.RICHIESTA_HANDSHAKE, userrecDest, username, usernameOrig);
}
}
} }
} }
@@ -927,6 +952,15 @@ module.exports = {
}, },
sendMsgTelegramToAdmin: async function (idapp, msg) {
const telegrambot = require('../telegram/telegrambot');
const idtelegram = telegrambot.ADMIN_IDTELEGRAM_SERVER;
await telegrambot.sendMsgTelegramByIdTelegram(idapp, idtelegram, msg);
},
sendNotifAndMsgTelegram: async function (idapp, userId, objmsg, telegram, msgextrateleg) { sendNotifAndMsgTelegram: async function (idapp, userId, objmsg, telegram, msgextrateleg) {
if (userId) { if (userId) {
@@ -1014,84 +1048,183 @@ module.exports = {
}, },
sendNotifCircuitByUsername: async function ( sendNotifCircuitByUsername: async function (
cmd, idapp, usernameOrig, usernameDest, username_action, cmd, idapp, usernameOrig, groupOrig, usernameDest, groupDest, username_action,
circuitname, path, myreccircuit, isAdmin, username_worked, extrarec) { circuitname, path, myreccircuit, isAdmin, username_worked, extrarec) {
const { SendNotif } = require('../models/sendnotif'); const { SendNotif } = require('../models/sendnotif');
const { User } = require('../models/user'); const { User } = require('../models/user');
const telegrambot = require('../telegram/telegrambot'); const telegrambot = require('../telegram/telegrambot');
const { MyGroup } = require('../models/mygroup');
const { Circuit } = require('../models/circuit');
const req = this.getReqByPar(idapp, usernameOrig); const req = this.getReqByPar(idapp, usernameOrig, groupOrig);
let arrris = [];
const user = await User.findOne({ idapp, username: usernameDest }, const user = await User.findOne({ idapp, username: usernameDest },
{ _id: 1, lang: 1 }); { _id: 1, lang: 1 });
let lang = 'it';
if (user) {
lang = user.lang;
}
let ris = null;
try { try {
if (user) { let paramsObj = {
usernameDest,
circuitnameDest: circuitname,
path,
username_action: username_action,
singleadmin_username: usernameDest,
extrarec,
options: 0,
lang,
isAdmin,
username_worked,
};
let lang = user.lang; let sendnotif = true;
let paramsObj = { let typedir = shared_consts.TypeNotifs.TYPEDIR_CIRCUITS;
usernameDest, let typeid = 0;
circuitnameDest: circuitname, let onlysave = false;
path, let numuserincircuit = await User.countUsersInCircuit(idapp, circuitname);
username_action: username_action,
singleadmin_username: usernameDest,
extrarec,
options: 0,
lang,
isAdmin,
username_worked,
};
let sendnotif = true; if (cmd) {
let typedir = shared_consts.TypeNotifs.TYPEDIR_CIRCUITS; if (cmd === shared_consts.CIRCUITCMD.SET) {
let typeid = 0; if (myreccircuit && myreccircuit.createdBy === usernameDest && numuserincircuit <= 1) {
let onlysave = false; typeid = shared_consts.TypeNotifs.ID_CIRCUIT_NEW_REC;
let numuserincircuit = await User.countUsersInCircuit(idapp, circuitname); } else {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_ACCEPTED;
}
} else if (cmd === shared_consts.CIRCUITCMD.REFUSE_REQ) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_REFUSED;
} else if (cmd === shared_consts.CIRCUITCMD.REMOVE_FROM_MYLIST) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_REMOVED;
} else if (cmd === shared_consts.CIRCUITCMD.REQ) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_REQUEST_TO_ENTER;
// paramsObj.options = MessageOptions.Notify_OnlyToNotifinApp + MessageOptions.Notify_ByBotTelegram;
const myuserdata = await User.getUserShortDataByUsername(idapp, username_action);
telegrambot.askConfirmationUser(idapp, shared_consts.CallFunz.RICHIESTA_CIRCUIT, myuserdata, usernameDest, circuitname,
myreccircuit._id, '', extrarec.groupname);
onlysave = false;
} else if (cmd === shared_consts.CIRCUITCMD.ADDADMIN) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_ADDED_ADMIN;
} else if (cmd === shared_consts.CIRCUITCMD.REMOVEADMIN) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_REMOVED_ADMIN;
} else if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_REQ) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_SENDCOINSREQ;
} else if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_REQ_SENT) {
// Crea l'ID di Transazione
paramsObj.idTransaction = new ObjectId();
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_SENDCOINSREQ_SENT;
} else if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_ACCEPT) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_COINS_ACCEPTED;
} else if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_ACCEPT_SENT) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_COINS_ACCEPTED_SENT;
} else if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_REFUSE) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_COINS_REFUSED;
} else if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_REFUSE_SENT) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_COINS_REFUSED_SENT;
}
}
if (sendnotif && typeid > 0) {
const groupDestoContoCom = groupDest ? groupDest : (extrarec && extrarec.contoComDest ? extrarec.contoComDest : '');
// Check if is group:
if (groupDestoContoCom && (
(cmd !== shared_consts.CIRCUITCMD.SENDCOINS_ACCEPT_SENT) &&
(cmd !== shared_consts.CIRCUITCMD.SENDCOINS_REFUSE_SENT)
)) {
let arrusers = await MyGroup.getListAdminsByGroupName(idapp, groupDestoContoCom);
if (arrusers.length <= 0)
arrusers = await Circuit.getListAdminsByCircuitPath(idapp, groupDestoContoCom);
let notiftoUpdate = '';
let findrecnotif = await SendNotif.findOne({ _id: paramsObj.extrarec.notifId }).lean();
notiftoUpdate = findrecnotif ? findrecnotif.extrarec.notifIdToUpdate : '';
if (findrecnotif) {
let arrrec = [];
if (notiftoUpdate)
arrrec = await SendNotif.find({ 'extrarec.notifIdToUpdate': notiftoUpdate });
for (let rec of arrrec) {
paramsObj.usernameDest = rec.dest;
paramsObj.sender = rec.sender;
if ((cmd === shared_consts.CIRCUITCMD.SENDCOINS_ACCEPT) || (cmd === shared_consts.CIRCUITCMD.SENDCOINS_REFUSE)) {
try {
paramsObj.extrarec.notifId = rec._id;
} catch (e) {
}
}
ris = await SendNotif.createNewNotifToSingleUser(req, null, paramsObj, onlysave, typedir, typeid);
if (!ris) {
console.error('Errore createNewNotifToSingleUser! ', paramsObj.usernameDest, "dest ->", groupDestoContoCom)
} else {
arrris.push(ris._id);
}
if (cmd) {
if (cmd === shared_consts.CIRCUITCMD.SET) {
if (myreccircuit && myreccircuit.createdBy === usernameDest && numuserincircuit <= 1) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_NEW_REC;
} else {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_ACCEPTED;
} }
} else if (cmd === shared_consts.CIRCUITCMD.REFUSE_REQ) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_REFUSED; } else {
} else if (cmd === shared_consts.CIRCUITCMD.REMOVE_FROM_MYLIST) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_REMOVED; for (let i = 0; i < arrusers.length; i++) {
} else if (cmd === shared_consts.CIRCUITCMD.REQ) { paramsObj.usernameDest = arrusers[i].username;
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_REQUEST_TO_ENTER;
// paramsObj.options = MessageOptions.Notify_OnlyToNotifinApp + MessageOptions.Notify_ByBotTelegram; ris = await SendNotif.createNewNotifToSingleUser(req, null, paramsObj, onlysave, typedir, typeid);
const myuserdata = await User.getUserShortDataByUsername(idapp, username_action); if (!ris) {
telegrambot.askConfirmationUser(idapp, shared_consts.CallFunz.RICHIESTA_CIRCUIT, myuserdata, usernameDest, circuitname, console.error('Errore createNewNotifToSingleUser! ', paramsObj.usernameDest, "dest ->", groupDestoContoCom)
myreccircuit._id); } else {
onlysave = false; arrris.push(ris._id);
} else if (cmd === shared_consts.CIRCUITCMD.ADDADMIN) { }
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_ADDED_ADMIN; }
} else if (cmd === shared_consts.CIRCUITCMD.REMOVEADMIN) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_REMOVED_ADMIN;
} else if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_REQ) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_SENDCOINSREQ;
} else if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_REQ_SENT) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_SENDCOINSREQ_SENT;
} else if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_ACCEPT) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_COINS_ACCEPTED;
} else if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_ACCEPT_SENT) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_COINS_ACCEPTED_SENT;
} else if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_REFUSE) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_COINS_REFUSED;
} else if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_REFUSE_SENT) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_COINS_REFUSED_SENT;
} }
} } else {
if (sendnotif && typeid > 0) {
// CREATE NOTIFICATION IN TABLE SENDNOTIF // CREATE NOTIFICATION IN TABLE SENDNOTIF
return await SendNotif.createNewNotifToSingleUser(req, null, paramsObj, onlysave, typedir, typeid); ris = await SendNotif.createNewNotifToSingleUser(req, null, paramsObj, onlysave, typedir, typeid);
if ((cmd === shared_consts.CIRCUITCMD.SENDCOINS_ACCEPT) ||
(cmd === shared_consts.CIRCUITCMD.SENDCOINS_REFUSE)) {
if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_ACCEPT) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_COINS_ACCEPTED_SENT;
} else if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_REFUSE) {
typeid = shared_consts.TypeNotifs.ID_CIRCUIT_COINS_REFUSED_SENT;
}
let notiftoUpdate = '';
let findrecnotif = await SendNotif.findOne({ _id: paramsObj.extrarec.notifId }).lean();
notiftoUpdate = findrecnotif ? findrecnotif.extrarec.notifIdToUpdate : '';
arrnotiftoUpdate = findrecnotif ? findrecnotif.extrarec.arrnotifIdToUpdate : '';
if (findrecnotif && notiftoUpdate && arrnotiftoUpdate) {
for (let myid of arrnotiftoUpdate) {
let rec = await SendNotif.findOne({ _id: myid }).lean();
if (rec && rec.status === 0) {
paramsObj.usernameDest = rec.dest;
paramsObj.extrarec.idStatusToSent = rec._id;
ris = await SendNotif.createNewNotifToSingleUser(req, null, paramsObj, onlysave, typedir, typeid);
if (!ris) {
console.error('Errore createNewNotifToSingleUser! ', paramsObj.usernameDest, "dest ->", groupDestoContoCom)
}
}
}
}
}
} }
} }
return { recnotif: ris, arrris };
} catch (e) { } catch (e) {
console.log(e.message); console.log(e.message);
} }
@@ -1138,6 +1271,7 @@ module.exports = {
sendNotificationByCircuit: async function (idapp, usernameOrig, circuitname, cmd, value, telegram, username_action, extrarec) { sendNotificationByCircuit: async function (idapp, usernameOrig, circuitname, cmd, value, telegram, username_action, extrarec) {
const { Circuit } = require('../models/circuit'); const { Circuit } = require('../models/circuit');
const { SendNotif } = require('../models/sendnotif');
const circuit = await Circuit.findOne({ idapp, name: circuitname }, { _id: 1, admins: 1, createdBy: 1, path: 1 }).lean(); const circuit = await Circuit.findOne({ idapp, name: circuitname }, { _id: 1, admins: 1, createdBy: 1, path: 1 }).lean();
if (!circuit) if (!circuit)
@@ -1154,41 +1288,70 @@ module.exports = {
if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_REQ || cmd === shared_consts.CIRCUITCMD.SENDCOINS_ACCEPT || cmd === if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_REQ || cmd === shared_consts.CIRCUITCMD.SENDCOINS_ACCEPT || cmd ===
shared_consts.CIRCUITCMD.SENDCOINS_REFUSE) { shared_consts.CIRCUITCMD.SENDCOINS_REFUSE) {
groupOrig = extrarec.grouporig
let arrris = [];
let recnotif = null; let recnotif = null;
if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_REQ) { if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_REQ) {
recnotif = await this.sendNotifCircuitByUsername(shared_consts.CIRCUITCMD.SENDCOINS_REQ_SENT, idapp, extrarec.dest, usernameOrig, // msg al Mittente (o mittenti del 'groupOrig') "Stai inviando X RIS"
let res = await this.sendNotifCircuitByUsername(shared_consts.CIRCUITCMD.SENDCOINS_REQ_SENT, idapp, extrarec.dest, extrarec.groupdest, usernameOrig, groupOrig,
username_action, circuitname, circuit.path, null, username_action, circuitname, circuit.path, null,
false, '', extrarec); false, '', extrarec);
if (res) {
recnotif = res.recnotif;
arrris = res.arrris;
}
} else if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_ACCEPT) { } else if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_ACCEPT) {
await this.sendNotifCircuitByUsername(shared_consts.CIRCUITCMD.SENDCOINS_ACCEPT_SENT, idapp, extrarec.dest, usernameOrig, // msg ai MITTENTI: "X RIS sono stati accettati da Destinatario"
await this.sendNotifCircuitByUsername(shared_consts.CIRCUITCMD.SENDCOINS_ACCEPT_SENT, idapp, extrarec.dest, extrarec.groupdest, usernameOrig, groupOrig,
username_action, circuitname, circuit.path, null, username_action, circuitname, circuit.path, null,
false, '', extrarec); false, '', extrarec);
} else if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_REFUSE) { } else if (cmd === shared_consts.CIRCUITCMD.SENDCOINS_REFUSE) {
await this.sendNotifCircuitByUsername(shared_consts.CIRCUITCMD.SENDCOINS_REFUSE_SENT, idapp, extrarec.dest, usernameOrig, await this.sendNotifCircuitByUsername(shared_consts.CIRCUITCMD.SENDCOINS_REFUSE_SENT, idapp, extrarec.dest, extrarec.groupdest, usernameOrig, groupOrig,
username_action, circuitname, circuit.path, null, username_action, circuitname, circuit.path, null,
false, '', extrarec); false, '', extrarec);
} }
if (recnotif) if (recnotif)
extrarec.notifIdToUpdate = recnotif._id; extrarec.notifIdToUpdate = recnotif._id;
ris = await this.sendNotifCircuitByUsername(cmd, idapp, usernameOrig, extrarec.dest, username_action, circuitname, circuit.path, if (arrris)
null, extrarec.arrnotifIdToUpdate = arrris;
false, '', extrarec);
let usernametoOrigUse = usernameOrig
if (extrarec.groupname) {
usernametoOrigUse = ''
}
ris = await this.sendNotifCircuitByUsername(cmd, idapp, usernametoOrigUse, groupOrig, extrarec.dest, extrarec.groupdest, username_action, circuitname, circuit.path,
null, false, '', extrarec);
if (arrris && ris && ris.recnotif) {
for (const rec of arrris) {
let obj = {
'extrarec.notifIdToUpdate': ris.recnotif._id
};
await SendNotif.findOneAndUpdate({ _id: rec._id }, { $set: obj }, { new: false });
}
}
extrarec.notifIdToUpdate = ''; extrarec.notifIdToUpdate = '';
if (ris) if (ris.recnotif)
inviato = true; inviato = true;
// ++Todo: Inviare anche agli Admin ?! // ++Todo: Inviare anche agli Admin ?!
} else { } else {
const groupOrig = '' //++Todo: extrarec.groupOrig
for (const singleadmin of circuit.admins) { for (const singleadmin of circuit.admins) {
try { try {
if (singleadmin.username) { if (singleadmin.username) {
if (usernameOrig === singleadmin.username) if (usernameOrig === singleadmin.username)
giainviato = true; giainviato = true;
await this.sendNotifCircuitByUsername(cmd, idapp, usernameOrig, singleadmin.username, username_action, circuitname, await this.sendNotifCircuitByUsername(cmd, idapp, usernameOrig, groupOrig, singleadmin.username, '', username_action, circuitname,
circuit.path, circuit, true, '', extrarec); circuit.path, circuit, true, '', extrarec);
inviato = true; inviato = true;
} }
@@ -1199,15 +1362,15 @@ module.exports = {
if (!giainviato && cmd !== shared_consts.CIRCUITCMD.REQ) { if (!giainviato && cmd !== shared_consts.CIRCUITCMD.REQ) {
// SEND TO THE USER DEST THE NOTIFICATION // SEND TO THE USER DEST THE NOTIFICATION
ris = await this.sendNotifCircuitByUsername(cmd, idapp, usernameOrig, usernameOrig, username_action, circuitname, circuit.path, ris = await this.sendNotifCircuitByUsername(cmd, idapp, usernameOrig, groupOrig, usernameOrig, '', username_action, circuitname, circuit.path,
null, null,
false, '', extrarec); false, '', extrarec);
if (ris) if (ris.recnotif)
inviato = true; inviato = true;
} }
} }
return { ris, inviato }; return { ris: ris.recnotif, inviato };
} catch (e) { } catch (e) {
console.error('sendNotificationByCircuit: ', e); console.error('sendNotificationByCircuit: ', e);
@@ -1297,7 +1460,7 @@ module.exports = {
this.mylog('checkUserOk', userpassed, userauth); this.mylog('checkUserOk', userpassed, userauth);
if (String(userpassed) !== String(userauth)) { if (String(userpassed) !== String(userauth)) {
// I'm trying to write something not mine! // I'm trying to write something not mine!
this.mylog('userId = ', userpassed, 'req.user._id', userauth); this.mylog('I\'m trying to write something not mine!: userId = ', userpassed, 'req.user._id', userauth);
if (!res) { if (!res) {
return { return {
exit: true, exit: true,
@@ -1322,6 +1485,12 @@ module.exports = {
return ''; return '';
}, },
convertSpaces_ToUScore(mystr) {
if (mystr)
return mystr.replace(/\s+/g, '_');
return '';
},
convertHTMLtoText(myhtml) { convertHTMLtoText(myhtml) {
let msg = myhtml; let msg = myhtml;
if (msg) { if (msg) {
@@ -1374,7 +1543,7 @@ module.exports = {
let myapp = this.getHostByIdApp(idapp); let myapp = this.getHostByIdApp(idapp);
if (myapp) { if (myapp) {
myapp += '/signup/' + rec.aportador_solidario + '/' + msg.from.username + '/' + msg.from.id + '/' + rec.regexpire; myapp += '/registrati/' + rec.aportador_solidario + '/' + msg.from.username + '/' + msg.from.id + '/' + rec.regexpire;
} }
return myapp; return myapp;
@@ -1580,7 +1749,38 @@ module.exports = {
{ {
$and: $and:
[ [
{ $eq: ['$'+params.lk_FF, '$$'+params.lk_FF] }, { $eq: ['$' + params.lk_FF, '$$' + params.lk_FF] },
{ $eq: ['$idapp', '$$idapp'] },
],
},
},
},
],
as: params.lk_as,
},
},
{ $project: proj },
];
return myquery;
},
getGroupnameLookupPipeLine(params, proj) {
let myquery = [
{
$lookup: {
from: params.lk_tab,
let: { groupname: '$' + params.lk_LF, idapp: params.idapp },
pipeline: [
{
$match:
{
$expr:
{
$and:
[
{ $eq: ['$' + params.lk_FF, '$$' + params.lk_FF] },
{ $eq: ['$idapp', '$$idapp'] }, { $eq: ['$idapp', '$$idapp'] },
], ],
}, },
@@ -1792,6 +1992,8 @@ module.exports = {
}); });
if (params.filterand.includes(shared_consts.FILTER_USER_TELEGRAM_BLOCKED)) if (params.filterand.includes(shared_consts.FILTER_USER_TELEGRAM_BLOCKED))
filtriadded.push({ 'profile.teleg_id_old': { $gt: 1 } }); filtriadded.push({ 'profile.teleg_id_old': { $gt: 1 } });
if (params.filterand.includes(shared_consts.FILTER_USER_PROVINCE))
filtriadded.push({ 'profile.resid_province': { $exists: true } });
if (params.filterand.includes(shared_consts.FILTER_ATTIVI)) if (params.filterand.includes(shared_consts.FILTER_ATTIVI))
filtriadded.push({ filtriadded.push({
$or: [ $or: [
@@ -1907,7 +2109,7 @@ module.exports = {
if (params.filterextra) { if (params.filterextra) {
if (params.filterextra.length > 0) if (params.filterextra.length > 0)
query = [...query, ...params.filterextra] query = [...query, ...params.filterextra]
} }
if (filtriadded) { if (filtriadded) {
@@ -1950,6 +2152,8 @@ module.exports = {
}, 0, { }, 0, {
'user.idapp': 1, 'user.idapp': 1,
'user.username': 1, 'user.username': 1,
'user.name': 1,
'user.surname': 1,
'user.profile.img': 1, 'user.profile.img': 1,
'user.profile.qualifica': 1, 'user.profile.qualifica': 1,
}); });
@@ -2020,12 +2224,104 @@ module.exports = {
}, },
}, },
); );
} else if (params.querytype === shared_consts.QUERYTYPE_GROUP_CIRCUIT) {
const myq = this.addQueryIdMatch(params);
if (myq)
query.push(myq);
query.push({ $project: { req_groups: 1 } });
const qa1 = this.getLookup(
{
lk_tab: 'mygroups',
lk_LF: 'req_groups.groupname',
lk_FF: 'groupname',
lk_as: 'group',
}, 0, {
'group.idapp': 1,
'group.groupname': 1,
'group.photos': 1,
});
if (qa1) query = [...query, ...qa1];
query.push({ $unwind: '$group' });
query.push({
$match: {
$and: [
{ 'group.idapp': params.idapp },
],
},
});
query.push({
$replaceRoot: {
newRoot: '$group',
},
},
);
} else if (params.querytype === shared_consts.QUERYTYPE_REFUSED_GROUP_CIRCUIT) {
const myq = this.addQueryIdMatch(params);
if (myq)
query.push(myq);
query.push({ $project: { refused_groups: 1 } });
query.push({ $unwind: '$refused_groups' });
const qa1 = this.getGroupnameLookupPipeLine(
{
lk_tab: 'mygroups',
lk_LF: 'refused_groups.groupname',
lk_FF: 'groupname',
lk_as: 'group',
idapp,
}, {
'group.idapp': 1,
'group.groupname': 1,
'group.descr': 1,
'group.photos': 1,
});
if (qa1) query = [...query, ...qa1];
query.push({ $unwind: '$group' });
/*
query.push({
$match: {
$and: [
{'user.idapp': params.idapp},
],
},
});
*/
query.push({
$replaceRoot: {
newRoot: '$group',
},
},
);
} else if (params.querytype === shared_consts.QUERYTYPE_LIST_MOVEMENTS) { } else if (params.querytype === shared_consts.QUERYTYPE_LIST_MOVEMENTS) {
const { Movement } = require('../models/movement'); const { Movement } = require('../models/movement');
const myquery = await Movement.getQueryMovsByCircuitId(params.idapp, params.username, params.myid); const myquery = await Movement.getQueryMovsByCircuitId(params.idapp, params.username, '', '', params.myid);
query.push(...myquery);
} else if (params.querytype === shared_consts.QUERYTYPE_LIST_MOVEMENTS_GROUPNAME) {
const { Movement } = require('../models/movement');
const myquery = await Movement.getQueryMovsByCircuitId(params.idapp, '', params.groupname, '', params.myid);
query.push(...myquery);
} else if (params.querytype === shared_consts.QUERYTYPE_LIST_MOVEMENTS_CONTOCOM) {
const { Movement } = require('../models/movement');
const myquery = await Movement.getQueryMovsByCircuitId(params.idapp, '', '', params.contocom, params.myid);
query.push(...myquery); query.push(...myquery);
@@ -2800,6 +3096,9 @@ module.exports = {
writeManagersLog(mystr) { writeManagersLog(mystr) {
this.writelogfile(mystr, FILEMANAGERS); this.writelogfile(mystr, FILEMANAGERS);
}, },
writeTransactionLog(mystr) {
this.writelogfile(mystr, FILETRANSACTION);
},
writeErrorLog(mystr) { writeErrorLog(mystr) {
this.writelogfile(mystr, FILEERRLOGIN); this.writelogfile(mystr, FILEERRLOGIN);
}, },
@@ -3327,7 +3626,7 @@ module.exports = {
const linkuserprof = this.getHostByIdApp(idapp) + '/my/' + const linkuserprof = this.getHostByIdApp(idapp) + '/my/' +
myuser.username; myuser.username;
msg = `<br>Username: <b>${name}</b><br>Profilo su APP: ${linkuserprof}<br>Email: ${myuser.email}`; msg = `<br>👉🏻 <a href="${linkuserprof}">${name}</a> (email: ${myuser.email})`;
let u_tg = myuser.profile && myuser.profile.hasOwnProperty('username_telegram') ? myuser.profile.username_telegram : usernametelegram; let u_tg = myuser.profile && myuser.profile.hasOwnProperty('username_telegram') ? myuser.profile.username_telegram : usernametelegram;
let name_tg = myuser.profile && myuser.profile.hasOwnProperty('firstname_telegram') let name_tg = myuser.profile && myuser.profile.hasOwnProperty('firstname_telegram')
@@ -3337,8 +3636,12 @@ module.exports = {
? myuser.profile.lastname_telegram ? myuser.profile.lastname_telegram
: surname_telegram; : surname_telegram;
let namesurnametg = '';
if (name_tg || surname_tg)
namesurnametg = ` [${name_tg} ${surname_tg}]`;;
if (u_tg) { if (u_tg) {
msg += `<br>Profilo su Telegram [${name_tg} ${surname_tg}]:<br>https://t.me/${u_tg}`; msg += `<br><br>https://t.me/${u_tg}`;
} }
} catch (e) { } catch (e) {
console.error('getUserInfoMsg', e); console.error('getUserInfoMsg', e);
@@ -3347,6 +3650,28 @@ module.exports = {
return msg; return msg;
}, },
getUserShortInfoMsg: function (idapp, myuser, usernametelegram = '', name_telegram = '',
surname_telegram = '') {
let msg = '';
try {
const name = myuser.username +
(myuser.name ? ` (${myuser.name} ${myuser.surname})` : '');
const linkuserprof = this.getHostByIdApp(idapp) + '/my/' +
myuser.username;
let u_tg = myuser.profile && myuser.profile.hasOwnProperty('username_telegram') ? myuser.profile.username_telegram : usernametelegram;
msg = `<br>Vedi Profilo sulla APP di <a href="${linkuserprof}">${name}</a>`;
msg += `<br>Telegram: @${u_tg}`;
} catch (e) {
console.error('getUserInfoMsg', e);
}
return msg;
},
getlinkRelativeRequestNewPassword: function (idapp, email, tokenforgot) { getlinkRelativeRequestNewPassword: function (idapp, email, tokenforgot) {
const strlinkreg = process.env.LINK_UPDATE_PASSWORD + const strlinkreg = process.env.LINK_UPDATE_PASSWORD +
`?idapp=${idapp}&email=${email}&tokenforgot=${tokenforgot}`; `?idapp=${idapp}&email=${email}&tokenforgot=${tokenforgot}`;

View File

@@ -8,52 +8,52 @@ require('../config/config');
require('../models/subscribers'); require('../models/subscribers');
const {ObjectID} = require('mongodb'); const { ObjectID } = require('mongodb');
const {User} = require('../models/user'); const { User } = require('../models/user');
const {MyGroup} = require('../models/mygroup'); const { MyGroup } = require('../models/mygroup');
const {Booking} = require('../models/booking'); const { Booking } = require('../models/booking');
const {Operator} = require('../models/operator'); const { Operator } = require('../models/operator');
const {Where} = require('../models/where'); const { Where } = require('../models/where');
const {MyEvent} = require('../models/myevent'); const { MyEvent } = require('../models/myevent');
const {Contribtype} = require('../models/contribtype'); const { Contribtype } = require('../models/contribtype');
const {PaymentType} = require('../models/paymenttype'); const { PaymentType } = require('../models/paymenttype');
const {Discipline} = require('../models/discipline'); const { Discipline } = require('../models/discipline');
const {Skill} = require('../models/skill'); const { Skill } = require('../models/skill');
const {Good} = require('../models/good'); const { Good } = require('../models/good');
const {SubSkill} = require('../models/subskill'); const { SubSkill } = require('../models/subskill');
const {MySkill} = require('../models/myskill'); const { MySkill } = require('../models/myskill');
const {MyGood} = require('../models/mygood'); const { MyGood } = require('../models/mygood');
const {MyBacheca} = require('../models/mybacheca'); const { MyBacheca } = require('../models/mybacheca');
const {MyHosp} = require('../models/myhosp'); const { MyHosp } = require('../models/myhosp');
const {StatusSkill} = require('../models/statusSkill'); const { StatusSkill } = require('../models/statusSkill');
const {City} = require('../models/city'); const { City } = require('../models/city');
const {Province} = require('../models/province'); const { Province } = require('../models/province');
const {Sector} = require('../models/sector'); const { Sector } = require('../models/sector');
const {SectorGood} = require('../models/sectorgood'); const { SectorGood } = require('../models/sectorgood');
const {CatGrp} = require('../models/catgrp'); const { CatGrp } = require('../models/catgrp');
const {Level} = require('../models/level'); const { Level } = require('../models/level');
const {AdType} = require('../models/adtype'); const { AdType } = require('../models/adtype');
const {AdTypeGood} = require('../models/adtypegood'); const { AdTypeGood } = require('../models/adtypegood');
const {Circuit} = require('../models/circuit'); const { Circuit } = require('../models/circuit');
const {Account} = require('../models/account'); const { Account } = require('../models/account');
const {Movement} = require('../models/movement'); const { Movement } = require('../models/movement');
const Pickup = require('../models/pickup'); const Pickup = require('../models/pickup');
const {Newstosent} = require('../models/newstosent'); const { Newstosent } = require('../models/newstosent');
const {MyPage} = require('../models/mypage'); const { MyPage } = require('../models/mypage');
const {MyElem} = require('../models/myelem'); const { MyElem } = require('../models/myelem');
const {MyBot} = require('../models/bot'); const { MyBot } = require('../models/bot');
const {CfgServer} = require('../models/cfgserver'); const { CfgServer } = require('../models/cfgserver');
const {CalZoom} = require('../models/calzoom'); const { CalZoom } = require('../models/calzoom');
const {Gallery} = require('../models/gallery'); const { Gallery } = require('../models/gallery');
const {TemplEmail} = require('../models/templemail'); const { TemplEmail } = require('../models/templemail');
const {OpzEmail} = require('../models/opzemail'); const { OpzEmail } = require('../models/opzemail');
const {MailingList} = require('../models/mailinglist'); const { MailingList } = require('../models/mailinglist');
const {Settings} = require('../models/settings'); const { Settings } = require('../models/settings');
const {SendMsg} = require('../models/sendmsg'); const { SendMsg } = require('../models/sendmsg');
const {Permission} = require('../models/permission'); const { Permission } = require('../models/permission');
const {MsgTemplate} = require('../models/msg_template'); const { MsgTemplate } = require('../models/msg_template');
const {Graduatoria} = require('../models/graduatoria'); const { Graduatoria } = require('../models/graduatoria');
const Product = require('../models/product'); const Product = require('../models/product');
const Producer = require('../models/producer'); const Producer = require('../models/producer');
const Cart = require('../models/cart'); const Cart = require('../models/cart');
@@ -65,7 +65,7 @@ const Site = require('../models/site');
const IscrittiConacreis = require('../models/iscrittiConacreis'); const IscrittiConacreis = require('../models/iscrittiConacreis');
const IscrittiArcadei = require('../models/iscrittiArcadei'); const IscrittiArcadei = require('../models/iscrittiArcadei');
const Group = require('../models/group'); const Group = require('../models/group');
const {Todo} = require('../models/todo'); const { Todo } = require('../models/todo');
const Hours = require('../models/hours'); const Hours = require('../models/hours');
const Order = require('../models/order'); const Order = require('../models/order');
const Cash = require('../models/cash'); const Cash = require('../models/cash');
@@ -88,7 +88,7 @@ module.exports = {
mytable = MyGroup; mytable = MyGroup;
else if (tablename === 'tessitura') else if (tablename === 'tessitura')
mytable = Tessitura; mytable = Tessitura;
// else if (tablename === 'extralist') // else if (tablename === 'extralist')
// mytable = ExtraList; // mytable = ExtraList;
else if (tablename === 'bookings') else if (tablename === 'bookings')
mytable = Booking; mytable = Booking;
@@ -168,7 +168,7 @@ module.exports = {
mytable = MsgTemplate; mytable = MsgTemplate;
else if (tablename === 'navepersistente') else if (tablename === 'navepersistente')
mytable = NavePersistente; mytable = NavePersistente;
// else if (tablename === 'listaingressos') // else if (tablename === 'listaingressos')
// mytable = ListaIngresso; // mytable = ListaIngresso;
else if (tablename === 'graduatorias') else if (tablename === 'graduatorias')
mytable = Graduatoria; mytable = Graduatoria;
@@ -282,7 +282,7 @@ module.exports = {
} }
}, },
SendMsgToParam: async function(idapp, params) { SendMsgToParam: async function (idapp, params) {
try { try {
console.log('SendMsgToParam', params.typesend); console.log('SendMsgToParam', params.typesend);
@@ -294,7 +294,7 @@ module.exports = {
if (params.typesend === 0) if (params.typesend === 0)
params.typesend = shared_consts.TypeSend.PUSH_NOTIFICATION; params.typesend = shared_consts.TypeSend.PUSH_NOTIFICATION;
let query = {idapp}; let query = { idapp };
let addquery = {}; let addquery = {};
let invia = true; let invia = true;
@@ -302,39 +302,39 @@ module.exports = {
if (params.typemsg === shared_consts.TypeMsg.SEND_TO_ALL) { if (params.typemsg === shared_consts.TypeMsg.SEND_TO_ALL) {
addquery = {}; addquery = {};
} else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_SOCI) { } else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_SOCI) {
addquery = {'profile.socio': true}; addquery = { 'profile.socio': true };
} else if (params.typemsg === } else if (params.typemsg ===
shared_consts.TypeMsg.SEND_TO_SOCIO_RESIDENTE) { shared_consts.TypeMsg.SEND_TO_SOCIO_RESIDENTE) {
addquery = {'profile.socioresidente': true}; addquery = { 'profile.socioresidente': true };
} else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_CONSIGLIO) { } else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_CONSIGLIO) {
addquery = {'profile.consiglio': true}; addquery = { 'profile.consiglio': true };
} else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_NON_SOCI) { } else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_NON_SOCI) {
addquery = {'profile.socio': false}; addquery = { 'profile.socio': false };
} else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_PAOLO) { } else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_PAOLO) {
addquery = {username: 'paoloar77'}; addquery = { username: 'paoloar77' };
} else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_USER) { } else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_USER) {
addquery = {username: params.usernameDest}; addquery = { username: params.usernameDest };
} else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_MYSELF) { } else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_MYSELF) {
addquery = {username: params.usernameDest}; addquery = { username: params.usernameDest };
} else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_TELEG_NO_USERNAME_TELEG) { } else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_TELEG_NO_USERNAME_TELEG) {
addquery = { addquery = {
'profile.teleg_id': {$gt: 1}, 'profile.teleg_id': { $gt: 1 },
$or: [ $or: [
{'profile.username_telegram': {$exists: false}}, { 'profile.username_telegram': { $exists: false } },
{'profile.username_telegram': {$exists: true, $eq: ''}}], { 'profile.username_telegram': { $exists: true, $eq: '' } }],
}; };
} else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_TELEG_NO_VERIF_BY_APORTADOR) { } else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_TELEG_NO_VERIF_BY_APORTADOR) {
addquery = { addquery = {
'profile.teleg_id': {$gt: 1}, 'profile.teleg_id': { $gt: 1 },
'profile.username_telegram': {$exists: true}, 'profile.username_telegram': { $exists: true },
$expr: {$gt: [{$strLenCP: '$profile.username_telegram'}, 3]}, $expr: { $gt: [{ $strLenCP: '$profile.username_telegram' }, 3] },
'verified_by_aportador': {$exists: false}, 'verified_by_aportador': { $exists: false },
}; };
} else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_GROUP) { } else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_GROUP) {
if (params.groupnameDest) { if (params.groupnameDest) {
addquery = { addquery = {
'profile.mygroups': { 'profile.mygroups': {
$elemMatch: {groupname: {$eq: params.groupnameDest}}, $elemMatch: { groupname: { $eq: params.groupnameDest } },
}, },
}; };
} else { } else {
@@ -344,7 +344,7 @@ module.exports = {
if (params.circuitnameDest) { if (params.circuitnameDest) {
addquery = { addquery = {
'profile.mycircuits': { 'profile.mycircuits': {
$elemMatch: {circuitname: {$eq: params.circuitnameDest}}, $elemMatch: { circuitname: { $eq: params.circuitnameDest } },
}, },
}; };
} else { } else {
@@ -358,14 +358,14 @@ module.exports = {
if (invia) { if (invia) {
const allquery = {...query, ...addquery}; const allquery = { ...query, ...addquery };
const arrusers = await User.find( const arrusers = await User.find(
allquery, allquery,
{ {
username: 1, username: 1,
'profile.teleg_id': 1, 'profile.teleg_id': 1,
}, },
).lean(); ).lean();
@@ -378,15 +378,15 @@ module.exports = {
if (params.sendreally) { if (params.sendreally) {
if (tools.isBitActive(params.typesend, shared_consts.TypeSend.PUSH_NOTIFICATION)) { if (tools.isBitActive(params.typesend, shared_consts.TypeSend.PUSH_NOTIFICATION)) {
const myparam = {...params}; const myparam = { ...params };
risult = await tools.sendNotificationToUser(user._id, mytitle, mycontent, myparam.openUrl, myparam.openUrl2, myparam.tag, risult = await tools.sendNotificationToUser(user._id, mytitle, mycontent, myparam.openUrl, myparam.openUrl2, myparam.tag,
myparam.actions, myparam.id). myparam.actions, myparam.id).
then(ris => { then(ris => {
}). }).
catch(e => { catch(e => {
console.error(e.message); console.error(e.message);
}); });
} }
if (tools.isBitActive(params.typesend, shared_consts.TypeSend.TELEGRAM)) { if (tools.isBitActive(params.typesend, shared_consts.TypeSend.TELEGRAM)) {
@@ -429,7 +429,7 @@ module.exports = {
}, },
SendMsgToAll: async function(idapp, params) { SendMsgToAll: async function (idapp, params) {
params.typemsg = shared_consts.TypeMsg.SEND_TO_ALL; params.typemsg = shared_consts.TypeMsg.SEND_TO_ALL;
params.sendreally = true; params.sendreally = true;
@@ -438,4 +438,167 @@ module.exports = {
return await this.SendMsgToParam(idapp, params); return await this.SendMsgToParam(idapp, params);
}, },
replaceUsername: async function (idapp, search_username, replace_username) {
if (!search_username || !replace_username) {
return false;
}
try {
let ris = null;
console.log('replaceUsername = ', search_username, replace_username);
ris = await User.findOneAndUpdate({ idapp, username: search_username }, { $set: { username: replace_username } });
console.log('username result = ', ris);
tools.move(server_constants.DIR_UPLOAD + 'profile/' + search_username, server_constants.DIR_UPLOAD + 'profile/' + replace_username, function callback() {
console.log(' ... moved dir', server_constants.DIR_UPLOAD + 'profile/' + search_username, server_constants.DIR_UPLOAD + 'profile/' + replace_username);
});
ris = await User.findOneAndUpdate({ idapp, 'profile.username_telegram': search_username }, { $set: { 'profile.username_telegram': replace_username } });
console.log('profile.username_telegram result = ', ris);
ris = await User.updateMany({ idapp, aportador_iniziale: search_username },
{
$set:
{ aportador_iniziale: replace_username }
});
console.log('aportador_iniziale result = ', ris);
ris = await User.updateMany({ idapp, username_who_report: search_username },
{
$set:
{ username_who_report: replace_username }
});
console.log('username_who_report result = ', ris);
ris = await User.updateMany({ idapp, aportador_solidario: search_username },
{
$set:
{ aportador_solidario: replace_username }
});
console.log('aportador_solidario result = ', ris);
ris = await User.updateMany({ idapp, 'profile.friends.username': search_username },
{
$set:
{ 'profile.friends.$.username': replace_username }
});
console.log('friends.username result = ', ris);
ris = await User.updateMany({ idapp, 'profile.req_friends.username': search_username },
{
$set:
{ 'profile.req_friends.$.username': replace_username }
});
console.log('req_friends.username result = ', ris);
ris = await User.updateMany({ idapp, 'profile.handshake.username': search_username },
{
$set:
{ 'profile.handshake.$.username': replace_username }
});
console.log('handshake.username result = ', ris);
ris = await Circuit.updateMany({ idapp, 'admins.username': search_username },
{ $set: { 'admins.$.username': replace_username } });
console.log('Circuit.admins.username result = ', ris);
ris = await Circuit.updateMany({ idapp, 'req_users.username': search_username },
{ $set: { 'req_users.$.username': replace_username } });
console.log('Circuit.req_users.username result = ', ris);
ris = await Circuit.updateMany({ idapp, 'refused_users.username': search_username },
{ $set: { 'refused_users.$.username': replace_username } });
console.log('Circuit.refused_users.username result = ', ris);
ris = await Account.updateMany({ idapp, 'username': search_username },
{ $set: { 'username': replace_username } });
console.log('Account.username result = ', ris);
ris = await MyGroup.updateMany({ idapp, 'admins.username': search_username },
{ $set: { 'admins.$.username': replace_username } });
console.log('MyGroup.refused_users.username result = ', ris);
ris = await MyGroup.updateMany({ idapp, 'req_users.username': search_username },
{ $set: { 'req_users.$.username': replace_username } });
console.log('MyGroup.req_users.username result = ', ris);
// MyGroup.refused_users.username
ris = await MyGroup.updateMany({ idapp, 'refused_users.username': search_username },
{ $set: { 'refused_users.$.username': replace_username } });
console.log('MyGroup.refused_users.username result = ', ris);
} catch (e) {
console.error(e);
}
},
ReplaceCircuitName: async function (idapp, search_circuitname, replace_circuitname) {
const { SendNotif } = require('../models/sendnotif');
if (!search_circuitname || !replace_circuitname) {
return false;
}
try {
let ris = null;
console.log('ReplaceCircuitName = ', search_circuitname, replace_circuitname);
ris = await Circuit.findOneAndUpdate({ idapp, name: search_circuitname }, { $set: { name: replace_circuitname } });
console.log('Circuit result = ', ris);
if (ris) {
ris = await User.updateMany({ idapp, 'profile.mycircuits.circuitname': search_circuitname },
{
$set:
{ 'profile.mycircuits.$.circuitname': replace_circuitname }
});
ris = await MyGroup.updateMany({ idapp, 'mycircuits.circuitname': search_circuitname },
{
$set:
{ 'mycircuits.$.circuitname': replace_circuitname }
});
ris = await User.updateMany({ idapp, 'profile.last_circuitpath': search_circuitname },
{
$set:
{ 'profile.last_circuitpath': replace_circuitname }
});
ris = await SendNotif.updateMany({ idapp, 'extrarec.circuitname': search_circuitname },
{
$set:
{ 'extrarec.circuitname': replace_circuitname }
});
ris = await SendNotif.updateMany({ idapp, 'extrarec.name': search_circuitname },
{
$set:
{ 'extrarec.name': replace_circuitname }
});
ris = await SendNotif.updateMany({ idapp, 'extrafield': search_circuitname },
{
$set:
{ 'extrafield': replace_circuitname }
});
console.log(' ... done ' + replace_circuitname);
return true;
}
} catch (e) {
console.error(e);
return false;
}
},
}; };

View File

@@ -11,6 +11,10 @@ module.exports = {
QUERYTYPE_REFUSED_USER_CIRCUIT: 12, QUERYTYPE_REFUSED_USER_CIRCUIT: 12,
QUERYTYPE_LIST_MOVEMENTS: 15, QUERYTYPE_LIST_MOVEMENTS: 15,
QUERYTYPE_LIST_ALLMOVEMENTS: 16, QUERYTYPE_LIST_ALLMOVEMENTS: 16,
QUERYTYPE_LIST_MOVEMENTS_GROUPNAME: 17,
QUERYTYPE_LIST_MOVEMENTS_CONTOCOM: 18,
QUERYTYPE_GROUP_CIRCUIT: 20,
QUERYTYPE_REFUSED_GROUP_CIRCUIT: 22,
// --------------------- // ---------------------
FILTER_EXTRALIST_NOT_REGISTERED: 1, FILTER_EXTRALIST_NOT_REGISTERED: 1,
@@ -37,6 +41,7 @@ module.exports = {
FILTER_USER_NO_VERIFIED_APORTADOR: 2097152, FILTER_USER_NO_VERIFIED_APORTADOR: 2097152,
FILTER_USER_SI_TELEGRAM_ID: 4194304, FILTER_USER_SI_TELEGRAM_ID: 4194304,
FILTER_USER_WITHOUT_USERNAME_TELEGRAM: 8388608, FILTER_USER_WITHOUT_USERNAME_TELEGRAM: 8388608,
FILTER_USER_PROVINCE: 16777216,
OPTIONS_SEARCH_ONLY_FULL_WORDS: 1, OPTIONS_SEARCH_ONLY_FULL_WORDS: 1,
OPTIONS_SEARCH_USER_ONLY_FULL_WORDS: 2, OPTIONS_SEARCH_USER_ONLY_FULL_WORDS: 2,
@@ -46,9 +51,11 @@ module.exports = {
SETTRUST: 121, SETTRUST: 121,
REQFRIEND: 125, REQFRIEND: 125,
SETFRIEND: 132, SETFRIEND: 132,
SETHANDSHAKE: 133,
REMOVE_FROM_MYFRIENDS: 144, REMOVE_FROM_MYFRIENDS: 144,
REFUSE_REQ_FRIEND: 145, REFUSE_REQ_FRIEND: 145,
CANCEL_REQ_FRIEND: 146, CANCEL_REQ_FRIEND: 146,
REMOVE_FROM_MYHANDSHAKE: 147,
BLOCK_USER: 155, BLOCK_USER: 155,
UNBLOCK_USER: 156, UNBLOCK_USER: 156,
REPORT_USER: 158, REPORT_USER: 158,
@@ -70,6 +77,7 @@ module.exports = {
}, },
CIRCUITCMD: { CIRCUITCMD: {
CREATE: 1001,
REQ: 2000, REQ: 2000,
SET: 2001, SET: 2001,
REMOVE_FROM_MYLIST: 2144, REMOVE_FROM_MYLIST: 2144,
@@ -130,6 +138,7 @@ module.exports = {
TABLES_USER_INCLUDE_MY: ['mygroups', 'circuits'], TABLES_USER_INCLUDE_MY: ['mygroups', 'circuits'],
TABLES_GETCOMPLETEREC: ['myskills', 'mybachecas', 'myhosps', 'mygoods'], TABLES_GETCOMPLETEREC: ['myskills', 'mybachecas', 'myhosps', 'mygoods'],
TABLES_INSERT_ALMOST_ONE_TO_ENABLE_CIRCUIT: ['myskills', 'myhosps', 'mygoods'],
//++Todo: per abilitare gli utenti ad inserire un Circuito aggiungere 'circuits' alla lista TABLES_PERM_NEWREC //++Todo: per abilitare gli utenti ad inserire un Circuito aggiungere 'circuits' alla lista TABLES_PERM_NEWREC
TABLES_PERM_NEWREC: ['skills', 'goods', 'subskills', 'mygroups', 'myhosps'], TABLES_PERM_NEWREC: ['skills', 'goods', 'subskills', 'mygroups', 'myhosps'],
TABLES_REC_ID: ['skills', 'goods', 'subskills'], TABLES_REC_ID: ['skills', 'goods', 'subskills'],
@@ -137,6 +146,8 @@ module.exports = {
TABLES_VISU_STAT_IN_HOME: ['myskills', 'mybachecas', 'myhosps', 'mygoods', 'mygroups', 'circuits'], TABLES_VISU_STAT_IN_HOME: ['myskills', 'mybachecas', 'myhosps', 'mygoods', 'mygroups', 'circuits'],
TABLES_ADV_NOTIFICATION: ['myskills', 'myhosps', 'mygoods'], TABLES_ADV_NOTIFICATION: ['myskills', 'myhosps', 'mygoods'],
TABLES_ORDER_DATE_UPDATED: ['myskills', 'myhosps', 'mygoods'],
TABLES_ORDER_DESCR: ['mygroups'],
TABLES_EVENTS_NOTIFICATION: ['mybachecas'], TABLES_EVENTS_NOTIFICATION: ['mybachecas'],
TABLES_GROUPS_NOTIFICATION: ['mygroups'], TABLES_GROUPS_NOTIFICATION: ['mygroups'],
TABLES_CIRCUITS_NOTIFICATION: ['circuits'], TABLES_CIRCUITS_NOTIFICATION: ['circuits'],
@@ -283,6 +294,7 @@ module.exports = {
REGISTRATION: 6, REGISTRATION: 6,
RICHIESTA_GRUPPO: 10, RICHIESTA_GRUPPO: 10,
RICHIESTA_AMICIZIA: 15, RICHIESTA_AMICIZIA: 15,
RICHIESTA_HANDSHAKE: 16,
RICHIESTA_CIRCUIT: 20, RICHIESTA_CIRCUIT: 20,
}, },
@@ -338,6 +350,8 @@ module.exports = {
STATUS_FRIENDS_ACCEPTED: 1, STATUS_FRIENDS_ACCEPTED: 1,
STATUS_FRIENDS_REFUSED: 2, STATUS_FRIENDS_REFUSED: 2,
STATUS_FRIENDS_REPORTED: 3, STATUS_FRIENDS_REPORTED: 3,
STATUS_HANDSHAKE_ACCEPTED: 10,
STATUS_HANDSHAKE_REFUSED: 11,
}, },
GroupsNotifs: { GroupsNotifs: {
@@ -350,6 +364,7 @@ module.exports = {
}, },
CircuitsNotif: { CircuitsNotif: {
STATUS_NONE: 0,
STATUS_NEW: 51, STATUS_NEW: 51,
STATUS_ACCEPTED: 53, STATUS_ACCEPTED: 53,
STATUS_REFUSED: 54, STATUS_REFUSED: 54,
@@ -417,6 +432,9 @@ module.exports = {
TYPEDIR_MSGS: 7, TYPEDIR_MSGS: 7,
ID_MSGS_NEW_REC: 1, ID_MSGS_NEW_REC: 1,
TYPEDIR_HANDSHAKE: 10,
ID_HANDSHAKE_ACCEPTED: 2,
TYPEDIR_TEST: 444, TYPEDIR_TEST: 444,
ID_TEST_NEW_REC: 1, ID_TEST_NEW_REC: 1,
}, },
@@ -473,24 +491,24 @@ module.exports = {
DEFAULT_NOTIFS_USER: [ DEFAULT_NOTIFS_USER: [
{ {
"dir": 1, 'dir': 1,
"value": 24 'value': 24
}, },
{ {
"dir": 2, 'dir': 2,
"value": 1 'value': 1
}, },
{ {
"dir": 3, 'dir': 3,
"value": 1 'value': 1
}, },
{ {
"dir": 4, 'dir': 4,
"value": 1 'value': 1
}, },
{ {
"dir": 5, 'dir': 5,
"value": 1 'value': 1
} }
], ],
@@ -501,4 +519,11 @@ module.exports = {
FASE3_MONETA_ABILITATA: 3, FASE3_MONETA_ABILITATA: 3,
}, },
CIRCUIT_PARAMS: {
SCOPERTO_MIN_GRP: 200,
SCOPERTO_MAX_GRP: 400,
SCOPERTO_MIN_CONTO_COMUNITARIO: 500,
SCOPERTO_MAX_CONTO_COMUNITARIO: 1000,
},
}; };

9
test.http Normal file
View File

@@ -0,0 +1,9 @@
### Init:
get http://localhost:3000/
### Create a new
get https://splendidus.it:3000/
### Create a new
get https://mail.freeplanet.app:3000/

11860
yarn.lock Normal file

File diff suppressed because it is too large Load Diff