diff --git a/emails/admin/cancelbooking/it/html.pug b/emails/admin/cancelbooking/it/html.pug
index a309117..3eb33a3 100755
--- a/emails/admin/cancelbooking/it/html.pug
+++ b/emails/admin/cancelbooking/it/html.pug
@@ -3,6 +3,7 @@ p Ti avvisiamo che #{name} #{surname} ha appena cancellato la prenotazione per l
span #{participants}
span #{participantsLunch}
span #{participantsDinner}
+span #{participantsDinnerShared}
p Cordiali Saluti
p Supporto #{nomeapp}
diff --git a/emails/admin/iscrizione_conacreis/it/html.pug b/emails/admin/iscrizione_conacreis/it/html.pug
new file mode 100755
index 0000000..90bb294
--- /dev/null
+++ b/emails/admin/iscrizione_conacreis/it/html.pug
@@ -0,0 +1,53 @@
+p #{name} #{surname} si è appena Iscritto al Conacreis su #{nomeapp}
+p Con i seguenti dati di accesso:
+span Nome:
+ strong #{iscritto.name}
+span Cognome:
+ strong #{iscritto.surname}
+span Email:
+ strong #{iscritto.email}
+span Codice Fiscale:
+ strong #{iscritto.fiscalcode}
+span Indirizzo di Residenza:
+ strong #{iscritto.residency_address}
+span Città di Residenza:
+ strong #{iscritto.residency_city}
+span Provincia:
+ strong #{iscritto.residency_province}
+span CAP:
+ strong #{iscritto.residency_zipcode}
+span Nazione:
+ strong #{iscritto.residency_country}
+span Data di Nascita:
+ strong #{iscritto.dateofbirth}
+span Cellulare:
+ strong #{iscritto.cell_phone}
+span Abilita le Newsletter? :
+ strong #{iscritto.newsletter_on}
+p
Saluti
+
+style(type="text/css").
+ html, body {
+ padding: 0;
+ margin: 0;
+ }
+ p {
+ font-size: 1rem;
+ }
+
+ .divbtn {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .btn-lg {
+ padding: 5px;
+ margin: 5px;
+ font-size: 26px;
+ cursor: pointer;
+ color: white;
+ background: #027be3 !important;
+ border-radius: 28px;
+
+ }
diff --git a/emails/admin/iscrizione_conacreis/it/subject.pug b/emails/admin/iscrizione_conacreis/it/subject.pug
new file mode 100755
index 0000000..bd3f4a6
--- /dev/null
+++ b/emails/admin/iscrizione_conacreis/it/subject.pug
@@ -0,0 +1 @@
+=`Nuova Iscrizione Conacreis di ${name} ${surname} (${emailto}) su ${nomeapp}`
diff --git a/emails/admin/makebooking/it/html.pug b/emails/admin/makebooking/it/html.pug
index 9a48ed9..adea240 100755
--- a/emails/admin/makebooking/it/html.pug
+++ b/emails/admin/makebooking/it/html.pug
@@ -3,6 +3,7 @@ p Ti confermiamo che #{name} #{surname} ha appena inviato una richiesta di preno
p #{participants}
p #{participantsLunch}
p #{participantsDinner}
+p #{participantsDinnerShared}
p Messaggio: #{msgbooking}
p Cordiali Saluti
diff --git a/emails/admin/modifybooking/it/html.pug b/emails/admin/modifybooking/it/html.pug
index 1e10301..bd0f15e 100755
--- a/emails/admin/modifybooking/it/html.pug
+++ b/emails/admin/modifybooking/it/html.pug
@@ -3,6 +3,7 @@ p Ti confermiamo che #{name} #{surname} ha appena Modificato la sua prenotazione
p #{participants}
p #{participantsLunch}
p #{participantsDinner}
+p #{participantsDinnerShared}
p Messaggio: #{msgbooking}
p Cordiali Saluti
diff --git a/emails/booking/cancelbooking/it/html.pug b/emails/booking/cancelbooking/it/html.pug
index e55c2f9..c49eebb 100755
--- a/emails/booking/cancelbooking/it/html.pug
+++ b/emails/booking/cancelbooking/it/html.pug
@@ -3,6 +3,7 @@ p Ti confermiamo che la prenotazione per l'evento "#{event}" è stata cancellata
p #{participants}
p #{participantsLunch}
p #{participantsDinner}
+p #{participantsDinnerShared}
p Cordiali Saluti
p Supporto #{nomeapp}
@@ -12,7 +13,9 @@ style(type="text/css").
padding: 0;
margin: 0;
}
-
+ p {
+ font-size: 1rem;
+ }
.divbtn {
display: flex;
align-items: center;
diff --git a/emails/booking/makebooking/it/html.pug b/emails/booking/makebooking/it/html.pug
index 5804ccc..8c020e8 100755
--- a/emails/booking/makebooking/it/html.pug
+++ b/emails/booking/makebooking/it/html.pug
@@ -3,6 +3,7 @@ p Ti confermiamo che hai appena inviato una richiesta di prenotazione per l'even
p #{participants}
p #{participantsLunch}
p #{participantsDinner}
+p #{participantsDinnerShared}
p Messaggio: #{msgbooking}
p #{msgreply_after_booking}
@@ -14,6 +15,9 @@ style(type="text/css").
padding: 0;
margin: 0;
}
+ p {
+ font-size: 1rem;
+ }
.divbtn {
display: flex;
diff --git a/emails/booking/modifybooking/it/html.pug b/emails/booking/modifybooking/it/html.pug
index c22b95c..a630e58 100755
--- a/emails/booking/modifybooking/it/html.pug
+++ b/emails/booking/modifybooking/it/html.pug
@@ -3,6 +3,7 @@ p Ti confermiamo che hai modificato la prenotazione per l'evento #{event}
p #{participants}
p #{participantsLunch}
p #{participantsDinner}
+p #{participantsDinnerShared}
p Messaggio: #{msgbooking}
p Cordiali Saluti
@@ -14,6 +15,10 @@ style(type="text/css").
margin: 0;
}
+ p {
+ font-size: 1rem;
+ }
+
.divbtn {
display: flex;
align-items: center;
diff --git a/emails/ecommerce/makeorder/it/html.pug b/emails/ecommerce/makeorder/it/html.pug
index 692d9ba..718db79 100755
--- a/emails/ecommerce/makeorder/it/html.pug
+++ b/emails/ecommerce/makeorder/it/html.pug
@@ -36,6 +36,7 @@ html
p
- var totalPrice = orders.totalPrice
+ - var note = orders.note
- var index = 0
each product in orders.items
@@ -68,33 +69,35 @@ html
td(class="sectionContent", valign="top")
p Quantità: #{qty}
+ p Note Aggiuntive: #{note}
+
p.sectionContentTitle.boldhigh.sectionTotal Totale Ordine: #{totalPrice} €
-
-
- p Ti arriverà una email quando i prodotti saranno disponibili per poterli venire a ritirare.
- p Il pagamento potrai farlo direttamente in sede.
- p Grazie Mille
- p
-
- table.footer(cellpadding="0", cellspacing="0", width="100%", summary="", border="0", align="center")
tr
td(class="whitespace", height="10")
- p
- tr
- td.firma
- p!= dataemail.firma
- tr
- td.disclaimer
- p!= dataemail.disclaimer_out
+ p Ti arriverà una email quando i prodotti saranno disponibili per poterli venire a ritirare.
+ p Il pagamento potrai farlo direttamente in sede.
+ p Grazie Mille
- tr
- td.bottom
- p!= dataemail.disc_bottom_out
+ table.footer(cellpadding="0", cellspacing="0", width="100%", summary="", border="0", align="center")
+ tr
+ td(class="whitespace", height="10")
+ p
+ tr
+ td.firma
+ p!= dataemail.firma
- tr
- td(class="whitespace", height="10")
- p
+ tr
+ td.disclaimer
+ p!= dataemail.disclaimer_out
+
+ tr
+ td.bottom
+ p!= dataemail.disc_bottom_out
+
+ tr
+ td(class="whitespace", height="10")
+ p
style(type="text/css").
html, body {
@@ -102,6 +105,10 @@ style(type="text/css").
margin: 0;
}
+ p {
+ font-size: 1rem;
+ }
+
.divbtn {
display: flex;
align-items: center;
diff --git a/emails/ecommerce/order_canceled/it/html.pug b/emails/ecommerce/order_canceled/it/html.pug
new file mode 100755
index 0000000..82bc743
--- /dev/null
+++ b/emails/ecommerce/order_canceled/it/html.pug
@@ -0,0 +1,81 @@
+doctype html
+html
+ head
+ title Ordine Cancellato
+
+ //- import css/scss stylesheets
+ //- these file names will be replace by gulp with proper css file paths
+ link(rel="stylesheet", href="../sass/basic.scss")
+ link(rel="stylesheet", href="../sass/one/styles.scss")
+
+ //- embdedded css allowed, but not sass
+ style.
+ .red {
+ background-color: #E84C50;
+ }
+
+ .full-width {
+ width: 100%;
+ }
+
+ body(yahoofix, style="background: #ffffff")
+ - var baseimg = baseurl + '/statics/'
+ span(id='body_style', style='display:block')
+ table(cellpadding="10", cellspacing="0", width="600", align="center")
+ tr
+ td(class="whitespace", height="10")
+ p
+ tr
+ td(class="emailContainer", valign="top")
+
+ p Ciao #{name},
+ p L'ordine è stato Cancellato.
+ p Se è stato un errore, procedi a ripetere l'Ordine, ripartendo dalla lista prodotti.
+ p Grazie Mille
+
+ table.footer(cellpadding="0", cellspacing="0", width="100%", summary="", border="0", align="center")
+ tr
+ td(class="whitespace", height="10")
+ p
+ tr
+ td.firma
+ p!= dataemail.firma
+
+ tr
+ td.disclaimer
+ p!= dataemail.disclaimer_out
+
+ tr
+ td.bottom
+ p!= dataemail.disc_bottom_out
+
+ tr
+ td(class="whitespace", height="10")
+ p
+
+style(type="text/css").
+ html, body {
+ padding: 0;
+ margin: 0;
+ }
+
+ p {
+ font-size: 1rem;
+ }
+
+ .divbtn {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .btn-lg {
+ padding: 5px;
+ margin: 5px;
+ font-size: 26px;
+ cursor: pointer;
+ color: white;
+ background: #027be3 !important;
+ border-radius: 28px;
+
+ }
diff --git a/emails/ecommerce/order_canceled/it/subject.pug b/emails/ecommerce/order_canceled/it/subject.pug
new file mode 100755
index 0000000..7a555f0
--- /dev/null
+++ b/emails/ecommerce/order_canceled/it/subject.pug
@@ -0,0 +1 @@
+=`Ordine n. ${ordernumber} Cancellato`
diff --git a/emails/ecommerce/order_completed/it/html.pug b/emails/ecommerce/order_completed/it/html.pug
new file mode 100755
index 0000000..81500cf
--- /dev/null
+++ b/emails/ecommerce/order_completed/it/html.pug
@@ -0,0 +1,80 @@
+doctype html
+html
+ head
+ title Ordine Completato
+
+ //- import css/scss stylesheets
+ //- these file names will be replace by gulp with proper css file paths
+ link(rel="stylesheet", href="../sass/basic.scss")
+ link(rel="stylesheet", href="../sass/one/styles.scss")
+
+ //- embdedded css allowed, but not sass
+ style.
+ .red {
+ background-color: #E84C50;
+ }
+
+ .full-width {
+ width: 100%;
+ }
+
+ body(yahoofix, style="background: #ffffff")
+ - var baseimg = baseurl + '/statics/'
+ span(id='body_style', style='display:block')
+ table(cellpadding="10", cellspacing="0", width="600", align="center")
+ tr
+ td(class="whitespace", height="10")
+ p
+ tr
+ td(class="emailContainer", valign="top")
+
+ p Ciao #{name},
+ p L'ordine n. #{ordernumber} è stato Completato correttamente !
+ p Grazie Mille per aver contribuito a far crescere la Comunità
+
+ table.footer(cellpadding="0", cellspacing="0", width="100%", summary="", border="0", align="center")
+ tr
+ td(class="whitespace", height="10")
+ p
+ tr
+ td.firma
+ p!= dataemail.firma
+
+ tr
+ td.disclaimer
+ p!= dataemail.disclaimer_out
+
+ tr
+ td.bottom
+ p!= dataemail.disc_bottom_out
+
+ tr
+ td(class="whitespace", height="10")
+ p
+
+style(type="text/css").
+ html, body {
+ padding: 0;
+ margin: 0;
+ }
+
+ p {
+ font-size: 1rem;
+ }
+
+ .divbtn {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .btn-lg {
+ padding: 5px;
+ margin: 5px;
+ font-size: 26px;
+ cursor: pointer;
+ color: white;
+ background: #027be3 !important;
+ border-radius: 28px;
+
+ }
diff --git a/emails/ecommerce/order_completed/it/subject.pug b/emails/ecommerce/order_completed/it/subject.pug
new file mode 100755
index 0000000..8cb2fc2
--- /dev/null
+++ b/emails/ecommerce/order_completed/it/subject.pug
@@ -0,0 +1 @@
+=`Ordine n. ${ordernumber} Completato`
diff --git a/emails/ecommerce/order_confirmed/it/html.pug b/emails/ecommerce/order_confirmed/it/html.pug
new file mode 100755
index 0000000..cd7fde1
--- /dev/null
+++ b/emails/ecommerce/order_confirmed/it/html.pug
@@ -0,0 +1,127 @@
+doctype html
+html
+ head
+ title Ordine Confermato
+
+ //- import css/scss stylesheets
+ //- these file names will be replace by gulp with proper css file paths
+ link(rel="stylesheet", href="../sass/basic.scss")
+ link(rel="stylesheet", href="../sass/one/styles.scss")
+
+ //- embdedded css allowed, but not sass
+ style.
+ .red {
+ background-color: #E84C50;
+ }
+
+ .full-width {
+ width: 100%;
+ }
+
+ body(yahoofix, style="background: #ffffff")
+ - var baseimg = baseurl + '/statics/'
+ span(id='body_style', style='display:block')
+ table(cellpadding="10", cellspacing="0", width="600", align="center")
+ tr
+ td(class="whitespace", height="10")
+ p
+ tr
+ td(class="emailContainer", valign="top")
+
+ p Ciao #{name},
+ p L'ordine dei seguenti prodotti è stato Confermato:
+
+ tr
+ td(class="whitespace", height="10")
+ p
+
+ - var totalPrice = orders.totalPrice
+ - var note = orders.note
+ - var index = 0
+
+ each product in orders.items
+ - var descr = product._doc.order.product.name
+ - var img = product._doc.order.product.img
+ - var price = product._doc.order.price
+ - var qty = product._doc.order.quantity
+ - index = index + 1
+
+ table(cellpadding="0", cellspacing="0", width="100%", summary="", border="0", align="center")
+ tr
+ td(class="column", valign="center" width="40")
+ p.boldhigh #{index}.
+
+ td(class="column sectionArticleImage", valign="top" width="150")
+ table(cellpadding="0", cellspacing="0", summary="", border="0")
+ tr
+ td
+ img(src=baseimg + img, alt="", width="150" height="150")
+ td(class="column", valign="top")
+
+ table(cellpadding="0", cellspacing="0", summary="", border="0")
+ tr
+ td(class="sectionContentTitle boldhigh", valign="top")
+ p #{descr}
+ tr
+ td(class="sectionContent", valign="top")
+ p Prezzo: #{price} €
+ tr
+ td(class="sectionContent", valign="top")
+ p Quantità: #{qty}
+
+ p Note Aggiuntive: #{note}
+
+ p.sectionContentTitle.boldhigh.sectionTotal Totale Ordine: #{totalPrice} €
+ tr
+ td(class="whitespace", height="10")
+
+ p Puoi pertanto venire a ritirarli direttamente in sede.
+ p Grazie Mille
+
+ table.footer(cellpadding="0", cellspacing="0", width="100%", summary="", border="0", align="center")
+ tr
+ td(class="whitespace", height="10")
+ p
+ tr
+ td.firma
+ p!= dataemail.firma
+
+ tr
+ td.disclaimer
+ p!= dataemail.disclaimer_out
+
+ tr
+ td.bottom
+ p!= dataemail.disc_bottom_out
+
+ tr
+ td(class="whitespace", height="10")
+ p
+
+style(type="text/css").
+ html, body {
+ padding: 0;
+ margin: 0;
+ }
+
+ p {
+ font-size: 1rem;
+ }
+
+
+ .divbtn {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .btn-lg {
+ padding: 5px;
+ margin: 5px;
+ font-size: 26px;
+ cursor: pointer;
+ color: white;
+ background: #027be3 !important;
+ border-radius: 28px;
+
+ }
diff --git a/emails/ecommerce/order_confirmed/it/subject.pug b/emails/ecommerce/order_confirmed/it/subject.pug
new file mode 100755
index 0000000..8ef2c11
--- /dev/null
+++ b/emails/ecommerce/order_confirmed/it/subject.pug
@@ -0,0 +1 @@
+=`Ordine n. ${ordernumber} Confermato`
diff --git a/emails/iscrizione_conacreis/it/html.pug b/emails/iscrizione_conacreis/it/html.pug
new file mode 100755
index 0000000..a9280a6
--- /dev/null
+++ b/emails/iscrizione_conacreis/it/html.pug
@@ -0,0 +1,30 @@
+p Ciao #{name},
Grazie per aver inviato la tua richiesta d'iscrizione come Socio alla Comunità Nuovo Mondo Rimini !
+p Una volta effettuato il pagamento della quota associativa, completeremo l'iscrizione e t'invieremo la tessera Conacreis direttamente sulla tua casella email (#{iscritto.email}).
+p Cordiali Saluti
Comunità Nuovo Mondo Rimini
+
+style(type="text/css").
+ html, body {
+ padding: 0;
+ margin: 0;
+ }
+
+ p {
+ font-size: 1rem;
+ }
+
+ .divbtn {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .btn-lg {
+ padding: 5px;
+ margin: 5px;
+ font-size: 26px;
+ cursor: pointer;
+ color: white;
+ background: #027be3 !important;
+ border-radius: 28px;
+
+ }
diff --git a/emails/iscrizione_conacreis/it/subject.pug b/emails/iscrizione_conacreis/it/subject.pug
new file mode 100755
index 0000000..69f01c2
--- /dev/null
+++ b/emails/iscrizione_conacreis/it/subject.pug
@@ -0,0 +1 @@
+=`Richiesta Iscrizione Socio alla Comunità Nuovo Mondo (${name} ${surname})`
diff --git a/sass/basic.scss b/sass/basic.scss
index fce0a35..42e7a42 100755
--- a/sass/basic.scss
+++ b/sass/basic.scss
@@ -209,7 +209,7 @@ p {
}
.sectionTotal {
- text-align: right;
+ text-align: center;
}
.sectionContentSubTitle {
diff --git a/src/server/config/config.js b/src/server/config/config.js
index 9bd6c21..0653501 100755
--- a/src/server/config/config.js
+++ b/src/server/config/config.js
@@ -1,7 +1,10 @@
+const tools = require('../tools/general');
+
// still in app.js
const node_env = process.env.NODE_ENV || 'production';
var file = `.env.${node_env}`;
+
// GLOBALI (Uguali per TUTTI)
process.env.LINKVERIF_REG = '/vreg';
process.env.LINK_REQUEST_NEWPASSWORD = '/requestnewpwd';
@@ -17,6 +20,8 @@ process.env.DATABASE = process.env.DATABASE || 'FreePlanet';
process.env.MONGODB_URI = process.env.DOMAIN + process.env.DATABASE;
+
+/*
if (process.env.NODE_ENV === 'production') {
// ---------------- AMBIENTE DI PRODUZIONE !!!!!!!!!! --------------------
MYAPPS = [
@@ -100,22 +105,6 @@ if (process.env.NODE_ENV === 'production') {
pathreg_add:'',
abilitanave: false,
},
- /*{
- idapp: '7',
- name: 'Ayni',
- adminemail: 'ayni.gifteconomy@gmail.com',
- manageremail: '',
- replyTo: '',
- host: 'https://ayni.gifteconomy.app',
- portapp: '0',
- dir: '/var/www/ayni.gifteconomy.app',
- email_from: 'ayni.gifteconomy@gmail.com',
- email_pwd: 'b72b121f6fb69f7c58a269f5b5110e179430cd6fa940a168c2c10b255aa75fd1ebql9yXWoH1LwANdHD7Yvw==',
- telegram_key:'1037577457:AAGQbdIuYoB838v61ewJ0Hearx9UPpTBhMI',
- telegram_bot_name: 'notevoleaynibot',
- pathreg_add:'_ayni',
- abilitanave: true,
- },*/
{
idapp: '8',
name: 'CentrOlistico Rimini',
@@ -263,21 +252,6 @@ if (process.env.NODE_ENV === 'production') {
pathreg_add:'',
abilitanave: false,
},
- /*{
- idapp: '7',
- name: 'Ayni (Server Test)',
- adminemail: 'pao.loarena77@gmail.com',
- manageremail: '',
- host: 'https://test.gifteconomy.app',
- portapp: '0',
- dir: '/var/www/test.gifteconomy.app',
- email_from: 'info.pianetalibero@gmail.com',
- email_pwd: '2df135e2b6c02b2c68ec6bf6b103751fcb4dfc48c57d0acb302482358ee8141fmaDuooPabDvlThiBI2XMyA==',
- telegram_key:'1011893908:AAEThZB3fVPw8P5gTCFgTEsDmY21DdbV1Cw',
- telegram_bot_name: 'testnotevoleaynibot',
- pathreg_add:'_ayni',
- abilitanave: true,
- },*/
{
idapp: '8',
name: 'CentrOlistico Rimini',
@@ -437,21 +411,6 @@ if (process.env.NODE_ENV === 'production') {
pathreg_add:'',
abilitanave: false,
},
- /*{
- idapp: '7',
- name: 'Ayni',
- adminemail: 'paolo.arena77@gmail.com',
- manageremail: '',
- host: 'http://localhost',
- portapp: '8085',
- dir: '',
- email_from: 'info.pianetalibero@gmail.com',
- email_pwd: '66ffeb915e71fada64ad5c26947dd087c262be3b343734a0447c6dee534b888aZcfbjXEuMBWKxvbh60cniw==',
- telegram_bot_name: 'paotestlocalebot',
- telegram_key:'353996190:AAEcEbfrm_zTK6mBKf8ye9j-PXt958SDxew',
- pathreg_add:'_ayni',
- abilitanave: true,
- },*/
{
idapp: '8',
name: 'CentrOlistico Rimini',
@@ -517,3 +476,6 @@ if (process.env.NODE_ENV === 'production') {
];
}
+
+ */
+
diff --git a/src/server/models/booking.js b/src/server/models/booking.js
index b152359..08df300 100755
--- a/src/server/models/booking.js
+++ b/src/server/models/booking.js
@@ -32,6 +32,9 @@ const bookingSchema = new Schema({
numpeopleDinner: {
type: Number,
},
+ numpeopleDinnerShared: {
+ type: Number,
+ },
infoevent: {
type: String,
},
diff --git a/src/server/models/iscrittiConacreis.js b/src/server/models/iscrittiConacreis.js
new file mode 100755
index 0000000..96d44c8
--- /dev/null
+++ b/src/server/models/iscrittiConacreis.js
@@ -0,0 +1,160 @@
+const mongoose = require('mongoose');
+const Schema = mongoose.Schema;
+
+const tools = require('../tools/general');
+
+mongoose.Promise = global.Promise;
+mongoose.level = "F";
+
+
+// Resolving error Unknown modifier: $pushAll
+mongoose.plugin(schema => {
+ schema.options.usePushEach = true
+});
+
+const IscrittiConacreisSchema = new Schema({
+ idapp: {
+ type: String,
+ },
+ userId: {
+ type: String,
+ },
+ name: {
+ type: String,
+ trim: true,
+ },
+ surname: {
+ type: String,
+ trim: true,
+ },
+ email: {
+ type: String,
+ trim: true,
+ },
+ fiscalcode: {
+ type: String,
+ trim: true,
+ },
+ residency_address: {
+ type: String,
+ },
+ residency_city: {
+ type: String,
+ trim: true,
+ },
+ residency_province: {
+ type: String,
+ trim: true,
+ },
+ residency_country: {
+ type: String,
+ trim: true,
+ },
+ residency_zipcode: {
+ type: String,
+ trim: true,
+ },
+ dateofbirth: {
+ type: Date,
+ },
+ cell_phone: {
+ type: String,
+ },
+ newsletter_on: {
+ type: Boolean,
+ },
+ accetta_carta_costituzionale_on: {
+ type: Boolean,
+ },
+ terms: {
+ type: Boolean,
+ },
+ iscrizione_compilata: {
+ type: Boolean,
+ },
+ dateofreg: {
+ type: Date,
+ },
+ codiceConacreis: {
+ type: String,
+ },
+ annoTesseramento: {
+ type: Number
+ },
+ motivazioni: {
+ type: String,
+ },
+ competenze_professionalita: {
+ type: String,
+ },
+ cosa_potrei_offrire: {
+ type: String,
+ },
+ cosa_vorrei_ricevere: {
+ type: String,
+ },
+ altre_comunicazioni: {
+ type: String,
+ },
+ come_ci_hai_conosciuto: {
+ type: String,
+ },
+ note: {
+ type: String,
+ },
+
+});
+
+var IscrittiConacreis = module.exports = mongoose.model('IscrittiConacreis', IscrittiConacreisSchema);
+
+module.exports.getFieldsForSearch = function () {
+ return [{ field: 'name', type: tools.FieldType.string },
+ { field: 'surname', type: tools.FieldType.string },
+ { field: 'email', type: tools.FieldType.string }]
+};
+
+module.exports.executeQueryTable = function (idapp, params) {
+ params.fieldsearch = this.getFieldsForSearch();
+ return tools.executeQueryTable(this, idapp, params);
+};
+
+module.exports.getLastRec = async function (idapp) {
+ const lastrec = await IscrittiConacreis.find({ idapp }).sort({ dateofreg: -1 }).limit(1);
+ if (!!lastrec) {
+ return lastrec[0];
+ } else {
+ return null;
+ }
+};
+
+module.exports.getNameSurnameByEmail = async function (idapp, email) {
+ return await IscrittiConacreis.findOne({
+ idapp, email,
+ }, { name: 1, surname: 1 })
+ .then((rec) => {
+ return (!!rec) ? `${rec.name} ${rec.surname}` : '';
+ }).catch((e) => {
+ console.error('getNameSurnameByUsername', e);
+ });
+};
+
+
+module.exports.findByEmail = function (idapp, email) {
+
+ return IscrittiConacreis.findOne({
+ 'idapp': idapp,
+ 'email': email,
+ $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }],
+ });
+};
+
+
+module.exports.findAllIdApp = async function (idapp) {
+
+
+ const myfind = { idapp };
+
+ return await IscrittiConacreis.find(myfind, (err, arrrec) => {
+ return arrrec
+ });
+};
diff --git a/src/server/models/listaingresso.js b/src/server/models/listaingresso.js
index 3f9884c..4dde3b9 100755
--- a/src/server/models/listaingresso.js
+++ b/src/server/models/listaingresso.js
@@ -1205,40 +1205,6 @@ ListaIngressoSchema.statics.getnumInvitati = async function (idapp, username) {
};
-ListaIngressoSchema.statics.Esegui_CronTab = async function (idapp, mydata) {
- const ListaIngresso = this;
-
- // console.log('Lancia CronTab: [IDAPP=' + idapp + ']');
-
- let num = 0;
-
- try {
- /*
- if (!await Graduatoria.isUpdating()) {
- await Graduatoria.setGradUpdating(idapp, true);
-
- ris = await Nave.delNaviProvvisorie(idapp);
-
- mystr = await ListaIngresso.GeneraGraduatoria(idapp, true);
- await Graduatoria.setWorking(idapp, false);
-
- num = await Nave.generaNave(idapp, mydata, false);
- }*/
-
- } catch (e) {
- console.error('ERRORE CronTab: [IDAPP=' + idapp + ']', e.message);
-
- } finally {
- // await Graduatoria.setGradUpdating(idapp, false);
- // await Graduatoria.setWorking(idapp, false);
-
- console.log('FINE CronTab: [IDAPP=' + idapp + ']');
- }
-
-
- return num;
-};
-
ListaIngressoSchema.statics.getnumInvitatiAttivi = function (idapp, username) {
const ListaIngresso = this;
diff --git a/src/server/models/myevent.js b/src/server/models/myevent.js
index ab6e4cc..899917b 100755
--- a/src/server/models/myevent.js
+++ b/src/server/models/myevent.js
@@ -94,6 +94,9 @@ const MyEventSchema = new Schema({
dinnerAvailable: {
type: Boolean,
},
+ dinnerSharedAvailable: {
+ type: Boolean,
+ },
lunchType: {
type: Number,
},
diff --git a/src/server/models/mypage.js b/src/server/models/mypage.js
index 084eb9b..0df7646 100755
--- a/src/server/models/mypage.js
+++ b/src/server/models/mypage.js
@@ -56,9 +56,45 @@ const MyPageSchema = new Schema({
imgback: {
type: String,
},
+ img1: {
+ type: String,
+ },
content: {
type: String,
},
+ video1: {
+ type: String,
+ },
+ ratio1: {
+ type: String,
+ },
+ img2: {
+ type: String,
+ },
+ content2: {
+ type: String,
+ },
+ video2: {
+ type: String,
+ },
+ ratio2: {
+ type: String,
+ },
+ img3: {
+ type: String,
+ },
+ content3: {
+ type: String,
+ },
+ video3: {
+ type: String,
+ },
+ ratio3: {
+ type: String,
+ },
+ content4: {
+ type: String,
+ },
active: {
type: Boolean,
},
@@ -101,6 +137,28 @@ MyPageSchema.statics.findAllIdApp = async function (idapp) {
});
};
+MyPageSchema.statics.findOnlyStruttRec = async function (idapp) {
+ const MyPage = this;
+
+ const myfind = { idapp };
+
+ return MyPage.find(myfind, {
+ title: 1,
+ icon: 1,
+ order: 1,
+ keywords: 1,
+ description: 1,
+ path: 1,
+ active: 1,
+ onlyif_logged: 1,
+ only_residenti: 1,
+ inmenu: 1,
+ submenu: 1
+ }, (err, arrrec) => {
+ return arrrec
+ });
+};
+
const MyPage = mongoose.model('MyPage', MyPageSchema);
module.exports = { MyPage };
diff --git a/src/server/models/orderscart.js b/src/server/models/orderscart.js
index d7c067f..4420f5d 100755
--- a/src/server/models/orderscart.js
+++ b/src/server/models/orderscart.js
@@ -4,6 +4,7 @@ const Schema = mongoose.Schema;
const shared_consts = require('../tools/shared_nodejs');
const Order = require('../models/order');
+var { User } = require('../models/user');
const tools = require('../tools/general');
@@ -39,6 +40,9 @@ const OrdersCartSchema = new Schema({
created_at: {
type: Date
},
+ completed_at: {
+ type: Date
+ },
});
var OrdersCart = module.exports = mongoose.model('OrdersCart', OrdersCartSchema);
@@ -78,23 +82,44 @@ module.exports.getNewNumOrder = async function (uid, idapp) {
};
-module.exports.getOrdersCartByUserId = async function (uid, idapp, numorder) {
+module.exports.getStatusCartByUserId = async function (uid, idapp, numorder) {
let query = { userId: uid, idapp, status: { $gte: shared_consts.OrderStatus.CHECKOUT_SENT } }
let myorderscart = null;
if (numorder > 0) {
query = { userId: uid, idapp, numorder, status: { $gte: shared_consts.OrderStatus.CHECKOUT_SENT } }
}
+ myorderscart = await OrdersCart.findOne(query);
+
+ if (!!myorderscart)
+ return myorderscart.status;
+ else
+ return shared_consts.OrderStatus.NONE
+
+}
+module.exports.getOrdersCartByUserId = async function (uid, idapp, numorder) {
+
+ let query = { idapp, status: { $gte: shared_consts.OrderStatus.CHECKOUT_SENT } }
+ let myorderscart = null;
+ if (numorder > 0) {
+ query.numorder = numorder;
+ }
+
+ if (uid !== 'ALL') {
+ query.userId = uid;
+ }
+
myorderscart = await OrdersCart.find(query);
for (let ind = 0; ind < myorderscart.length; ind++) {
for (const idkey in myorderscart[ind].items) {
try {
- idorder = myorderscart[ind].items[idkey]._id.toString();
+ let idorder = myorderscart[ind].items[idkey]._id.toString();
const myorder = myorderscart[ind].items[idkey].order;
if (!!myorder) {
idorder = myorderscart[ind].items[idkey].order._id.toString();
}
+ myorderscart[ind]._doc.nameSurname = await User.getNameSurnameById(idapp, myorderscart[ind].userId);
const myord = await Order.getTotalOrderById(idorder);
if (myord.length > 0) {
myorderscart[ind].items[idkey]._doc.order = myord[0];
@@ -134,11 +159,39 @@ module.exports.getOrdersCartByDepartmentId = async function (depId, idapp) {
for (let ind = 0; ind < myorderscart.length; ind++) {
for (const idkey in myorderscart[ind].items) {
try {
- idorder = myorderscart[ind].items[idkey]._id.toString();
+ let idorder = myorderscart[ind].items[idkey]._id.toString();
const myorder = myorderscart[ind].items[idkey].order;
if (!!myorder) {
idorder = myorderscart[ind].items[idkey].order._id.toString();
}
+ myorderscart[ind]._doc.nameSurname = await User.getNameSurnameById(idapp, myorderscart[ind].userId);
+ const myord = await Order.getTotalOrderById(idorder);
+ if (myord.length > 0) {
+ myorderscart[ind].items[idkey]._doc.order = myord[0];
+ }
+ } catch (e) {
+ console.log('err', e);
+ }
+ }
+ }
+
+ return myorderscart
+ // return null;
+}
+
+module.exports.getOrderById = async function (Id, idapp) {
+ let query = { _id: Id, idapp, status: { $gte: shared_consts.OrderStatus.CHECKOUT_SENT } }
+ const myorderscart = await OrdersCart.find(query);
+
+ for (let ind = 0; ind < myorderscart.length; ind++) {
+ for (const idkey in myorderscart[ind].items) {
+ try {
+ let idorder = myorderscart[ind].items[idkey]._id.toString();
+ const myorder = myorderscart[ind].items[idkey].order;
+ if (!!myorder) {
+ idorder = myorderscart[ind].items[idkey].order._id.toString();
+ }
+ myorderscart[ind]._doc.nameSurname = await User.getNameSurnameById(idapp, myorderscart[ind].userId);
const myord = await Order.getTotalOrderById(idorder);
if (myord.length > 0) {
myorderscart[ind].items[idkey]._doc.order = myord[0];
diff --git a/src/server/models/product.js b/src/server/models/product.js
index 1e26354..fcf25f5 100755
--- a/src/server/models/product.js
+++ b/src/server/models/product.js
@@ -16,6 +16,9 @@ const productSchema = new Schema({
idapp: {
type: String,
},
+ active: {
+ type: Boolean,
+ },
idProducer: {
type: String
},
diff --git a/src/server/models/site.js b/src/server/models/site.js
new file mode 100755
index 0000000..d389160
--- /dev/null
+++ b/src/server/models/site.js
@@ -0,0 +1,83 @@
+const mongoose = require('mongoose');
+const Schema = mongoose.Schema;
+
+const tools = require('../tools/general');
+
+mongoose.Promise = global.Promise;
+mongoose.level = "F";
+
+// Resolving error Unknown modifier: $pushAll
+mongoose.plugin(schema => {
+ schema.options.usePushEach = true
+});
+
+const SiteSchema = new Schema({
+ active: {
+ type: Boolean,
+ },
+ idapp: {
+ type: String,
+ },
+ name: {
+ type: String,
+ },
+ adminemail: {
+ type: String,
+ },
+ manageremail: {
+ type: String,
+ },
+ replyTo: {
+ type: String,
+ },
+ host: {
+ type: String,
+ },
+ portapp: {
+ type: String,
+ },
+ dir: {
+ type: String,
+ },
+ email_from: {
+ type: String,
+ },
+ email_pwd: {
+ type: String,
+ },
+ telegram_key: {
+ type: String,
+ },
+ telegram_bot_name: {
+ type: String,
+ },
+ pathreg_add: {
+ type: String,
+ },
+});
+
+var Site = module.exports = mongoose.model('Site', SiteSchema);
+
+module.exports.getFieldsForSearch = function () {
+ return []
+};
+
+module.exports.executeQueryTable = async function (idapp, params) {
+ params.fieldsearch = this.getFieldsForSearch();
+ // return tools.executeQueryTable(this, null, params);
+
+ const myarr = await Site.find({});
+
+ return ({ count: myarr.length, rows: myarr })
+
+
+};
+
+module.exports.findAllIdApp = async function (idapp) {
+
+ const myfind = { active: true };
+
+ return await Site.find(myfind, (err, arrrec) => {
+ return arrrec
+ });
+};
diff --git a/src/server/models/user.js b/src/server/models/user.js
index afd6230..7181adf 100755
--- a/src/server/models/user.js
+++ b/src/server/models/user.js
@@ -19,8 +19,6 @@ const { ObjectID } = require('mongodb');
const shared_consts = require('../tools/shared_nodejs');
const queryclass = require('../classes/queryclass');
-const telegrambot = require('../telegram/telegrambot');
-
mongoose.Promise = global.Promise;
mongoose.level = "F";
@@ -254,21 +252,30 @@ const UserSchema = new mongoose.Schema({
sex: {
type: Number,
},
- chisei: {
+ motivazioni: {
type: String
},
- iltuoimpegno: {
+ competenze_professionalita: {
type: String
},
- come_aiutare: {
+ cosa_offrire: {
type: String
},
- socio: {
+ cosa_ricevere: {
+ type: String
+ },
+ altre_comunicazioni: {
+ type: Boolean,
+ },
+ come_ci_hai_conosciuto: {
type: Boolean,
},
socioresidente: {
type: Boolean,
},
+ consiglio: {
+ type: Boolean,
+ },
myshares: [{
description: { type: String },
rating: { type: Number },
@@ -373,9 +380,9 @@ UserSchema.statics.isManager = function (perm) {
}
};
-UserSchema.statics.isTraduttrici = function (perm) {
+UserSchema.statics.isEditor = function (perm) {
try {
- return ((perm & shared_consts.Permissions.Traduttrici) === shared_consts.Permissions.Traduttrici);
+ return ((perm & shared_consts.Permissions.Editor) === shared_consts.Permissions.Editor);
} catch (e) {
return false
}
@@ -721,6 +728,27 @@ UserSchema.statics.isUserResidente = async function (idapp, username) {
}
+};
+
+UserSchema.statics.isUserConsiglio = async function (idapp, username) {
+ const User = this;
+
+ if (username === undefined)
+ return false;
+
+ const myquery = {
+ 'idapp': idapp,
+ 'username': username,
+ };
+
+ const myrec = await User.findOne(myquery);
+ if (!!myrec) {
+ return myrec.profile.consiglio;
+ } else {
+ return false;
+ }
+
+
};
UserSchema.statics.isUserVisuProjects = async function (idapp, username) {
@@ -1209,6 +1237,21 @@ UserSchema.statics.getNameSurnameByUsername = async function (idapp, username) {
});
};
+UserSchema.statics.getNameSurnameById = async function (idapp, userId) {
+ const User = this;
+
+ return await User.findOne({
+ idapp,
+ _id: userId,
+ $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }]
+ }, { name: 1, surname: 1 })
+ .then((rec) => {
+ return (!!rec) ? `${rec.name} ${rec.surname}` : '';
+ }).catch((e) => {
+ console.error('getNameSurnameById', e);
+ });
+};
+
UserSchema.statics.getSmallRecByIndOrder = async function (idapp, ind_order) {
try {
@@ -1943,7 +1986,7 @@ UserSchema.statics.getUsersResidenti = async function (idapp) {
'profile.socioresidente': { $exists: true, $eq: true }
};
- return await User.find(myfind, {username: 1, name: 1, surname: 1});
+ return await User.find(myfind, { username: 1, name: 1, surname: 1 });
};
UserSchema.statics.getSaw_and_Accepted = async function (idapp) {
@@ -2057,7 +2100,10 @@ UserSchema.statics.getUsersRegDaily = function (idapp, nrec) {
}
},
{
- $group: { _id: { $dateToString: { format: "%Y-%m-%d", date: "$date_reg", timezone: 'Europe/Rome' } }, count: { $sum: 1 } }
+ $group: {
+ _id: { $dateToString: { format: "%Y-%m-%d", date: "$date_reg", timezone: 'Europe/Rome' } },
+ count: { $sum: 1 }
+ }
},
{
$sort: { _id: 1 }
@@ -2076,7 +2122,10 @@ UserSchema.statics.getUsersRegWeekly = function (idapp, nrec) {
}
},
{
- $group: { _id: { $dateToString: { format: "%Y-%U", date: "$date_reg", timezone: 'Europe/Rome' } }, count: { $sum: 1 } }
+ $group: {
+ _id: { $dateToString: { format: "%Y-%U", date: "$date_reg", timezone: 'Europe/Rome' } },
+ count: { $sum: 1 }
+ }
},
{
$sort: { _id: 1 }
@@ -2097,7 +2146,10 @@ UserSchema.statics.getnumRegNDays = function (idapp, nrec) {
}
},
{
- $group: { _id: { $dateToString: { format: "%Y-%m-%d", date: "$date_reg", timezone: 'Europe/Rome' } }, count: { $sum: 1 } }
+ $group: {
+ _id: { $dateToString: { format: "%Y-%m-%d", date: "$date_reg", timezone: 'Europe/Rome' } },
+ count: { $sum: 1 }
+ }
},
{
$sort: { _id: 1 }
diff --git a/src/server/router/api/actions.js b/src/server/router/api/actions.js
index 7b5dee6..6729080 100755
--- a/src/server/router/api/actions.js
+++ b/src/server/router/api/actions.js
@@ -10,7 +10,6 @@ const { ObjectID } = require('mongodb');
const tools = require('../../tools/general');
-const telegrambot = require('../../telegram/telegrambot');
module.exports = {
doOtherThingsAfterDeleted: async function (tablename, rec, notifBot, req) {
diff --git a/src/server/router/booking_router.js b/src/server/router/booking_router.js
index ac13afe..a9a4dbb 100755
--- a/src/server/router/booking_router.js
+++ b/src/server/router/booking_router.js
@@ -19,9 +19,9 @@ const sendNotif = async (res, idapp, user, recbooking) => {
// Send Email
if (recbooking.booked)
- return await sendemail.sendEmail_Booking(res, user.lang, user.email, user, idapp, recbooking);
+ return sendemail.sendEmail_Booking(res, user.lang, user.email, user, idapp, recbooking);
else
- return await sendemail.sendEmail_CancelBooking(res, user.lang, user.email, user, idapp, recbooking);
+ return sendemail.sendEmail_CancelBooking(res, user.lang, user.email, user, idapp, recbooking);
};
router.post('/', authenticate, (req, res) => {
@@ -51,7 +51,7 @@ router.post('/', authenticate, (req, res) => {
// tools.mylog('booking:', booking);
// tools.mylog('already exist');
sendNotif(res, myrec.idapp, req.user, myrec);
- res.send({ code: server_constants.RIS_CODE_OK, msg: '', id: id_bookedevent });
+ return res.send({ code: server_constants.RIS_CODE_OK, msg: '', id });
});
} else {
// save to database a new record
@@ -63,11 +63,14 @@ router.post('/', authenticate, (req, res) => {
Booking.findById(idobj)
.then((recbooking) => {
sendNotif(res, myrec.idapp, req.user, writeresult);
- res.send({ code: server_constants.RIS_CODE_OK, msg: '', id: writeresult._id });
+ return res.send({ code: server_constants.RIS_CODE_OK, msg: '', id: writeresult._id });
});
});
}
- })
+ }).catch((e) => {
+ console.error('Error', e);
+ res.status(400).send();
+ });
});
router.delete('/:id/:notify/:idapp', authenticate, (req, res) => {
diff --git a/src/server/router/cart_router.js b/src/server/router/cart_router.js
index 02a0f97..46372ec 100755
--- a/src/server/router/cart_router.js
+++ b/src/server/router/cart_router.js
@@ -178,8 +178,10 @@ router.post('/:userId/cartstatus', authenticate, async function (req, res, next)
const user = req.user;
let status = req.body.status;
+
const mycart = await Cart.getCartByUserId(userId, idapp);
const numorder = await OrdersCart.getNewNumOrder(userId, idapp);
+ let statusOrderCart = await OrdersCart.getStatusCartByUserId(userId, idapp, numorder);
try {
if (!!mycart) {
@@ -205,7 +207,7 @@ router.post('/:userId/cartstatus', authenticate, async function (req, res, next)
const myris = ris;
// Cancella il Cart appena salvato in OrdersCart
- Cart.deleteCartByCartId(mycart.id)
+ return Cart.deleteCartByCartId(mycart.id)
.then((ris) => {
const orders = OrdersCart.getOrdersCartByUserId(userId, idapp, numorder)
@@ -216,7 +218,7 @@ router.post('/:userId/cartstatus', authenticate, async function (req, res, next)
return res.send({
code: server_constants.RIS_CODE_OK,
status: myris.status,
- orders: orders[0]
+ orders: orders
});
});
}
@@ -241,7 +243,70 @@ router.post('/:userId/cartstatus', authenticate, async function (req, res, next)
}
- return res.send({ code: server_constants.RIS_CODE_ERR, status: 0 });
+ }
+ return res.send({ code: server_constants.RIS_CODE_OK, status: statusOrderCart });
+ } catch (e) {
+ return res.send({ code: server_constants.RIS_CODE_ERR, status: 0 });
+ }
+
+
+});
+
+//POST cart
+router.post('/:userId/orderstatus', authenticate, async function (req, res, next) {
+ let idapp = req.body.idapp;
+ let userId = req.params.userId;
+ let order_id = req.body.order_id;
+ const user = req.user;
+ let status = req.body.status;
+
+ const orderCart = await OrdersCart.find({ idapp, _id: order_id });
+
+ if ((userId !== String(req.user._id)) && !User.isManager(req.user.perm)) {
+ // I'm trying to write something not mine!
+ return res.status(404).send({ code: server_constants.RIS_CODE_TODO_CREATING_NOTMYUSER });
+ }
+
+ try {
+ if (!!orderCart) {
+
+ let fields_to_update = { status };
+
+ if (status === shared_consts.OrderStatus.RECEIVED) {
+ fields_to_update = {
+ status,
+ completed_at: new Date()
+ }
+ }
+
+ await OrdersCart.findOneAndUpdate({ _id: order_id }, { $set: fields_to_update }
+ , { new: false })
+ .then((ris) => {
+
+ if (ris) {
+
+ let ordertype = '';
+
+ if (status === shared_consts.OrderStatus.ORDER_CONFIRMED) {
+ ordertype = 'order_confirmed';
+ } else if (status === shared_consts.OrderStatus.RECEIVED) {
+ ordertype = 'order_completed';
+ } else if (status === shared_consts.OrderStatus.CANCELED) {
+ ordertype = 'order_canceled';
+ }
+
+ if (ordertype !== '') {
+ sendemail.sendEmail_Order(user.lang, idapp, orderCart[0], user, ordertype)
+ .then((ris) => {
+
+ })
+ }
+ }
+
+ })
+
+ return res.send({ code: server_constants.RIS_CODE_OK, status });
+
}
} catch (e) {
return res.send({ code: server_constants.RIS_CODE_ERR, status: 0 });
diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js
index 268077d..ac9a382 100755
--- a/src/server/router/index_router.js
+++ b/src/server/router/index_router.js
@@ -58,6 +58,8 @@ const OrdersCart = require('../models/orderscart');
const Storehouse = require('../models/storehouse');
const Department = require('../models/department');
const ShareWithUs = require('../models/sharewithus');
+const Site = require('../models/site');
+const IscrittiConacreis = require('../models/iscrittiConacreis');
const Group = require('../models/group');
const { Todo } = require('../models/todo');
const Hours = require('../models/hours');
@@ -210,6 +212,10 @@ function getTableByTableName(tablename) {
mytable = Department;
else if (tablename === 'sharewithus')
mytable = ShareWithUs;
+ else if (tablename === 'sites')
+ mytable = Site;
+ else if (tablename === 'iscritticonacreis')
+ mytable = IscrittiConacreis;
else if (tablename === 'groups')
mytable = Group;
else if (tablename === 'todos')
@@ -340,6 +346,21 @@ router.post('/gettable', authenticate, (req, res) => {
});
+router.post('/getpage', async (req, res) => {
+ const params = req.body;
+ const idapp = req.body.idapp;
+ const mypath = params.path;
+
+ return MyPage.findOne({ idapp, path: mypath })
+ .then((ris) => {
+ return res.send({ mypage: ris });
+ }).catch((e) => {
+ console.log(e.message);
+ res.status(400).send(e);
+ });
+
+});
+
router.patch('/setlang', authenticate, async (req, res) => {
const username = req.body.data.username;
@@ -381,7 +402,7 @@ router.patch('/chval', authenticate, async (req, res) => {
// tools.mylogshow('PATCH CHVAL: ', id, fieldsvalue);
// If I change my record...
- if ((!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm) && !User.isTraduttrici(req.user.perm) && !User.isTutor(req.user.perm)) && (req.user._id.toString() !== id) && !tools.ModificheConsentite(mydata.table, fieldsvalue)) {
+ if ((!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm) && !User.isEditor(req.user.perm) && !User.isTutor(req.user.perm)) && (req.user._id.toString() !== id) && !tools.ModificheConsentite(mydata.table, fieldsvalue)) {
// If without permissions, exit
return res.status(404).send({ code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: '' });
}
@@ -1138,7 +1159,7 @@ router.get('/loadsite/:userId/:idapp/:sall', authenticate_noerror, (req, res) =>
let newstosent = Promise.resolve([]);
let mailinglist = Promise.resolve([]);
- let mypage = MyPage.findAllIdApp(idapp);
+ let mypage = MyPage.findOnlyStruttRec(idapp);
let calzoom = CalZoom.findAllIdApp(idapp);
let gallery = Gallery.findAllIdApp(idapp);
let producers = Producer.findAllIdApp(idapp);
@@ -1157,7 +1178,12 @@ router.get('/loadsite/:userId/:idapp/:sall', authenticate_noerror, (req, res) =>
if (req.user) {
calcstat = User.calculateStat(idapp, req.user.username);
cart = Cart.getCartByUserId(req.user.id, idapp);
- orderscart = OrdersCart.getOrdersCartByUserId(req.user.id, idapp, 0);
+ if (User.isManager(req.user.perm)) {
+ // Prende Tutti gli Ordini !
+ orderscart = OrdersCart.getOrdersCartByUserId("ALL", idapp, 0);
+ } else {
+ orderscart = OrdersCart.getOrdersCartByUserId(req.user.id, idapp, 0);
+ }
}
diff --git a/src/server/router/iscrittiConacreis_router.js b/src/server/router/iscrittiConacreis_router.js
new file mode 100755
index 0000000..f190d2a
--- /dev/null
+++ b/src/server/router/iscrittiConacreis_router.js
@@ -0,0 +1,82 @@
+const express = require('express');
+const router = express.Router();
+
+const IscrittiConacreis = require('../models/iscrittiConacreis');
+const { ObjectID } = require('mongodb');
+
+const sendemail = require('../sendemail');
+
+const { Settings } = require('../models/settings');
+
+const tools = require('../tools/general');
+const shared_consts = require('../tools/shared_nodejs');
+
+const server_constants = require('../tools/server_constants');
+
+const telegrambot = require('../telegram/telegrambot');
+
+const _ = require('lodash');
+
+const { authenticate } = require('../middleware/authenticate');
+
+const mongoose = require('mongoose');
+
+
+// POST /iscritti_conacreis
+router.post('/', async (req, res) => {
+ tools.mylog("POST /iscritti_conacreis");
+ const body = _.pick(req.body, ['idapp', 'userId', 'name', 'surname', 'email', 'fiscalcode', 'residency_address', 'residency_city', 'residency_province', 'residency_country', 'residency_zipcode', 'dateofbirth', 'cell_phone', 'newsletter_on', 'iscrizione_compilata', 'annoTesseramento', 'note', 'accetta_carta_costituzionale_on', 'terms']);
+ body.email = body.email.toLowerCase();
+
+ const iscritti = new IscrittiConacreis(body);
+ iscritti.ipaddr = tools.getiPAddressUser(req);
+ iscritti.lang = req.locale;
+
+ // tools.mylog("LANG PASSATO = " + iscritti.lang, "IDAPP", iscritti.idapp);
+
+ if (!tools.isAlphaNumeric(body.name)) {
+ await tools.snooze(5000);
+ res.status(400).send({ code: server_constants.RIS_CODE_USERNAME_NOT_VALID, msg: '' });
+ return 1;
+ }
+
+ if (tools.blockwords(body.email) || tools.blockwords(body.name) || tools.blockwords(body.surname)) {
+ // tools.writeIPToBan(iscritti.ipaddr + ': [' + iscritti.username + '] ' + iscritti.name + ' ' + iscritti.surname);
+ await tools.snooze(5000);
+ return res.status(404).send();
+ }
+
+ iscritti.dateofreg = new Date();
+
+ // Controlla se anche l'ultimo record era dallo stesso IP:
+ const lastrec = await IscrittiConacreis.getLastRec(body.idapp);
+ if (!!lastrec) {
+ if (process.env.LOCALE !== "1") {
+ if (lastrec.ipaddr === iscritti.ipaddr) {
+ // Se l'ha fatto troppo ravvicinato
+ if (lastrec.date_reg) {
+ let ris = tools.isdiffSecDateLess(lastrec.date_reg, 120);
+ if (ris) {
+ tools.writeIPToBan(iscritti.ipaddr + ': ' + iscritti.name + ' ' + iscritti.surname);
+ await tools.snooze(10000);
+ res.status(400).send({ code: server_constants.RIS_CODE_BANIP, msg: '' });
+ return 1;
+ }
+ }
+ }
+ }
+ }
+
+ return await iscritti.save()
+ .then(async () => {
+ await sendemail.sendEmail_IscrizioneConacreis(iscritti.lang, iscritti.email, iscritti, iscritti.idapp);
+ // }
+ return res.status(200).send();
+ }).catch((e) => {
+ console.error(e.message);
+ res.status(400).send(e);
+ })
+});
+
+
+module.exports = router;
diff --git a/src/server/router/push_router.js b/src/server/router/push_router.js
index 0f3a999..d9be479 100755
--- a/src/server/router/push_router.js
+++ b/src/server/router/push_router.js
@@ -121,6 +121,8 @@ async function SendMsgToParam(idapp, params) {
invia = user.profile.socio;
}else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_SOCIO_RESIDENTE) {
invia = user.profile.socioresidente;
+ }else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_SOCIO_RESIDENTE) {
+ invia = user.profile.consiglio;
}else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_NON_SOCI) {
invia = !user.profile.socio;
}else if (params.typemsg === shared_consts.TypeMsg.SEND_TO_PAOLO) {
diff --git a/src/server/router/users_router.js b/src/server/router/users_router.js
index c14cd47..8bd68ea 100755
--- a/src/server/router/users_router.js
+++ b/src/server/router/users_router.js
@@ -288,6 +288,95 @@ router.post('/', async (req, res) => {
return true;
});
}).catch((e) => {
+ console.error(e.message);
+ res.status(400).send(e);
+ })
+});
+
+// POST /users/iscriviti_conacreis
+router.post('/iscriviti_conacreis', async (req, res) => {
+ tools.mylog("POST /users");
+ const body = _.pick(req.body, ['name', 'surname', 'email', 'fiscalcode', 'residency_address', 'residency_city', 'residency_province', 'residency_country', 'residency_zipcode', 'dateofbirth', 'cell_phone', 'newsletter_on']);
+ body.email = body.email.toLowerCase();
+
+ const user = new User(body);
+ user.ipaddr = tools.getiPAddressUser(req);
+
+ // tools.mylog("LANG PASSATO = " + user.lang, "IDAPP", user.idapp);
+
+ if (!tools.isAlphaNumeric(body.name)) {
+ await tools.snooze(5000);
+ res.status(400).send({ code: server_constants.RIS_CODE_USERNAME_NOT_VALID, msg: '' });
+ return 1;
+ }
+
+ if (tools.blockwords(body.email) || tools.blockwords(body.name) || tools.blockwords(body.surname)) {
+ // tools.writeIPToBan(user.ipaddr + ': [' + user.username + '] ' + user.name + ' ' + user.surname);
+ await tools.snooze(5000);
+ return res.status(404).send();
+ }
+
+
+ user.date_reg = new Date();
+
+ // Controlla se anche l'ultimo record era dallo stesso IP:
+ const lastrec = await User.getLastRec(body.idapp);
+ if (!!lastrec) {
+ if (process.env.LOCALE !== "1") {
+ if (lastrec.ipaddr === user.ipaddr) {
+ // Se l'ha fatto troppo ravvicinato
+ if (lastrec.date_reg) {
+ let ris = tools.isdiffSecDateLess(lastrec.date_reg, 120);
+ if (ris) {
+ tools.writeIPToBan(user.ipaddr + ': ' + user.name + ' ' + user.surname);
+ await tools.snooze(10000);
+ res.status(400).send({ code: server_constants.RIS_CODE_BANIP, msg: '' });
+ return 1;
+ }
+ }
+ }
+ }
+ }
+
+ return await user.save()
+ .then(async () => {
+ return await User.findByUsername(user.idapp, user.username, false)
+ .then((usertrovato) => {
+
+ // tools.mylog("TROVATO USERNAME ? ", user.username, usertrovato);
+ if (usertrovato !== null) {
+ return user.generateAuthToken(req);
+ } else {
+ res.status(400).send();
+ return 0;
+ }
+ })
+ .then(async (token) => {
+ // tools.mylog("passo il TOKEN: ", token);
+
+ if (recextra) {
+ recextra.registered = true;
+ recextra.username = user.username;
+ await recextra.save();
+
+ // await User.fixUsername(user.idapp, user.ind_order, user.username);
+ }
+ return token;
+ })
+ .then(async (token) => {
+
+ // tools.mylog("LINKREG = " + user.linkreg);
+ // Invia un'email all'utente
+ // tools.mylog('process.env.TESTING_ON', process.env.TESTING_ON);
+ console.log('res.locale', res.locale);
+ // if (!tools.testing()) {
+ await sendemail.sendEmail_Registration(user.lang, user.email, user, user.idapp, user.linkreg);
+ // }
+ res.header('x-auth', token).send(user);
+ return true;
+ });
+ }).catch((e) => {
+ console.error(e.message);
res.status(400).send(e);
})
});
diff --git a/src/server/sendemail.js b/src/server/sendemail.js
index 9eba5d5..207e43c 100755
--- a/src/server/sendemail.js
+++ b/src/server/sendemail.js
@@ -189,12 +189,43 @@ module.exports = {
await telegrambot.notifyToTelegram(telegrambot.phase.REGISTRATION, mylocalsconf);
- tools.sendNotifToAdmin('Nuova Registrazione Utente: ' . name + ' ' + surname + ' (' + username + ')');
+ tools.sendNotifToAdmin('Nuova Registrazione Utente: ' + mylocalsconf.name + ' ' + mylocalsconf.surname + ' (' + mylocalsconf.username + ')');
if (tools.isManagAndAdminDifferent(idapp)) {
this.sendEmail_base('admin/registration/' + tools.LANGADMIN, tools.getManagerEmailByIdApp(idapp), mylocalsconf, '');
}
},
+ sendEmail_IscrizioneConacreis: async function (lang, emailto, iscritto, idapp) {
+
+ // console.log('idapp', idapp, tools.getNomeAppByIdApp(idapp));
+
+ let mylocalsconf = {
+ idapp,
+ dataemail: await this.getdataemail(idapp),
+ locale: lang,
+ nomeapp: tools.getNomeAppByIdApp(idapp),
+ strlinksito: tools.getHostByIdApp(idapp),
+ username: iscritto.username,
+ name: iscritto.name,
+ surname: iscritto.surname,
+ emailto: emailto,
+ iscritto,
+ };
+
+ this.sendEmail_base('iscrizione_conacreis/' + lang, emailto, mylocalsconf, tools.getreplyToEmailByIdApp(idapp));
+
+ // Send to the Admin an Email
+ this.sendEmail_base('admin/iscrizione_conacreis/' + tools.LANGADMIN, tools.getAdminEmailByIdApp(idapp), mylocalsconf, '');
+
+ await telegrambot.notifyIscrizioneToTelegram(telegrambot.phase.ISCRIZIONE_CONACREIS, mylocalsconf);
+
+ tools.sendNotifToAdmin('Iscrizione Conacreis : ' + mylocalsconf.name + ' ' + mylocalsconf.surname);
+
+ if (tools.isManagAndAdminDifferent(idapp)) {
+ this.sendEmail_base('admin/iscrizione_conacreis/' + tools.LANGADMIN, tools.getManagerEmailByIdApp(idapp), mylocalsconf, '');
+ }
+ },
+
sendEmail_RequestNewPassword: async function (lang, user, emailto, idapp, tokenforgot) {
let mylocalsconf = {
@@ -218,6 +249,7 @@ module.exports = {
tools.mylog('sendEmail_Booking');
tools.mylog('tools.getNomeAppByIdApp(idapp)', tools.getNomeAppByIdApp(idapp), idapp);
+
let mylocalsconf = {
idapp,
dataemail: await this.getdataemail(idapp),
@@ -229,40 +261,72 @@ module.exports = {
participants: '',
participantsLunch: '',
participantsDinner: '',
+ participantsDinnerShared: '',
msgbooking: tools.convertTexttoHtml(recbooking.msgbooking),
eventtextplain: tools.removeSpecialCharForEmail(recbooking.infoevent),
event: recbooking.infoevent,
};
- return Settings.getValDbSettings(idapp, 'MSG_REPLY_AFTER_BOOKING').then((ris => {
- mylocalsconf.msgreply_after_booking = ris;
+ return Settings.getValDbSettings(idapp, 'MSG_REPLY_AFTER_BOOKING')
+ .then(async (ris) => {
+ mylocalsconf.msgreply_after_booking = ris;
- if (recbooking.numpeople > 0)
- mylocalsconf.participants = recbooking.numpeople.toString() + ' ' + tools.getres__('partecipanti', res);
+ mylocalsconf = await this.preparaConfPerBooking(res, idapp, mylocalsconf, recbooking, 'Prenotazione');
- if (recbooking.numpeopleLunch > 0)
- mylocalsconf.participantsLunch = recbooking.numpeopleLunch.toString() + ' ' + tools.getres__('partecipanti a Pranzo', res);
+ if (recbooking.modified) {
+ texthtml = 'modifybooking';
+ } else {
+ texthtml = 'makebooking';
+ }
- if (recbooking.numpeopleDinner > 0)
- mylocalsconf.participantsDinner = recbooking.numpeopleDinner.toString() + ' ' + tools.getres__('partecipanti a Cena', res);
+ this.sendEmail_base('booking/' + texthtml + '/' + lang, emailto, mylocalsconf, tools.getreplyToEmailByIdApp(idapp));
- let texthtml = '';
- if (recbooking.modified) {
- texthtml = 'modifybooking';
- } else {
- texthtml = 'makebooking';
- }
+ // Send Email also to the Admin
+ this.sendEmail_base('admin/' + texthtml + '/' + tools.LANGADMIN, tools.getAdminEmailByIdApp(idapp), mylocalsconf, '');
- this.sendEmail_base('booking/' + texthtml + '/' + lang, emailto, mylocalsconf, tools.getreplyToEmailByIdApp(idapp));
+ if (tools.isManagAndAdminDifferent(idapp)) {
+ this.sendEmail_base('admin/' + texthtml + '/' + tools.LANGADMIN, tools.getManagerEmailByIdApp(idapp), mylocalsconf, '');
+ }
- // Send Email also to the Admin
- this.sendEmail_base('admin/' + texthtml + '/' + tools.LANGADMIN, tools.getAdminEmailByIdApp(idapp), mylocalsconf, '');
+ });
- if (tools.isManagAndAdminDifferent(idapp)) {
- this.sendEmail_base('admin/' + texthtml + '/' + tools.LANGADMIN, tools.getManagerEmailByIdApp(idapp), mylocalsconf, '');
- }
+ },
- }));
+ preparaConfPerBooking: async function (res, idapp, mylocalsconf, recbooking, title) {
+
+ let texthtml = '';
+ let msgtelegram = title + ' Evento [' + mylocalsconf.name + ' ' + mylocalsconf.surname + '] ' + mylocalsconf.eventtextplain;
+ if (recbooking.modified) {
+ msgtelegram += ' (modificato) '
+ } else {
+ msgtelegram += ' (Nuovo)'
+ }
+
+ msgtelegram += '\n';
+
+ if (recbooking.numpeople > 0) {
+ mylocalsconf.participants = recbooking.numpeople.toString() + ' ' + tools.getres__('partecipanti', res);
+ msgtelegram += mylocalsconf.participants + '\n'
+ }
+
+ if (recbooking.numpeopleLunch > 0) {
+ mylocalsconf.participantsLunch = recbooking.numpeopleLunch.toString() + ' ' + tools.getres__('partecipanti a Pranzo', res);
+ msgtelegram += mylocalsconf.participantsLunch + '\n'
+ }
+
+ if (recbooking.numpeopleDinner > 0) {
+ mylocalsconf.participantsDinner = recbooking.numpeopleDinner.toString() + ' ' + tools.getres__('partecipanti a Cena', res);
+ msgtelegram += mylocalsconf.participantsDinner + '\n'
+ }
+
+ if (recbooking.numpeopleDinnerShared > 0) {
+ mylocalsconf.participantsDinnerShared = recbooking.numpeopleDinnerShared.toString() + ' ' + tools.getres__('partecipanti a Cena Condivisa', res);
+ msgtelegram += mylocalsconf.participantsDinnerShared + '\n'
+ }
+
+ telegrambot.sendMsgTelegramToTheManagers(idapp, msgtelegram);
+
+ return mylocalsconf;
},
@@ -282,17 +346,15 @@ module.exports = {
participants: '',
participantsLunch: '',
participantsDinner: '',
+ participantsDinnerShared: '',
eventtextplain: tools.removeSpecialCharForEmail(recbooking.infoevent),
};
- if (recbooking.numpeople > 1)
- mylocalsconf.participants = recbooking.numpeople.toString() + ' ' + tools.getres__('partecipanti', res);
+ mylocalsconf = await this.preparaConfPerBooking(res, idapp, mylocalsconf, recbooking, 'Cancellazione');
- if (recbooking.numpeopleLunch > 1)
- mylocalsconf.participantsLunch = recbooking.numpeopleLunch.toString() + ' ' + tools.getres__('partecipanti a Pranzo', res);
+ let msgtelegram = 'Cancellazione Evento [' + mylocalsconf.name + ' ' + mylocalsconf.surname + '] ' + mylocalsconf.eventtextplain;
- if (recbooking.numpeopleDinner > 1)
- mylocalsconf.participantsDinner = recbooking.numpeopleDinner.toString() + ' ' + tools.getres__('partecipanti a Cena', res);
+ telegrambot.sendMsgTelegramToTheManagers(idapp, msgtelegram);
this.sendEmail_base('booking/cancelbooking/' + lang, emailto, mylocalsconf, tools.getreplyToEmailByIdApp(idapp));
@@ -524,7 +586,7 @@ module.exports = {
host: mylocalsconf.dataemail.email_service,
port: mylocalsconf.dataemail.email_port,
secureConnection: false,
- tls: {cipher:'SSLv3'},
+ tls: { cipher: 'SSLv3' },
auth: {
user: mylocalsconf.dataemail.from,
pass: mylocalsconf.dataemail.pwd_from
@@ -556,7 +618,7 @@ module.exports = {
sendEmail_OrderProduct: async function (lang, idapp, orders, user) {
- const msginizio = 'INIZIO - sendEmail_OrderProduct: ' + tools.getNomeAppByIdApp(idapp);
+ const msginizio = 'Ordine n: ' + orders.numorder + ' ' + user.name + ' ' + user.surname + ' [' + tools.getNomeAppByIdApp(idapp) + ']';
console.log(msginizio);
await telegrambot.sendMsgTelegramToTheManagers(idapp, msginizio);
@@ -581,9 +643,41 @@ module.exports = {
const esito = this.sendEmail_base('ecommerce/makeorder/' + lang, mylocalsconf.emailto, mylocalsconf, mylocalsconf.dataemail.email_reply);
+ this.sendEmail_base('ecommerce/makeorder/' + lang, tools.getAdminEmailByIdApp(idapp), mylocalsconf, '');
+
+ },
+ sendEmail_Order: async function (lang, idapp, orders, user, ordertype) {
+
+ const msginizio = 'INIZIO - sendEmail_Order ' + ordertype + ': ' + tools.getNomeAppByIdApp(idapp);
+ console.log(msginizio);
+
+ await telegrambot.sendMsgTelegramToTheManagers(idapp, msginizio);
+
+ mylocalsconf = {
+ idapp,
+ locale: lang,
+ nomeapp: tools.getNomeAppByIdApp(idapp),
+ orders,
+ baseurl: tools.getHostByIdApp(idapp),
+ dataemail: await this.getdataemail(idapp),
+ ordernumber: orders.numorder,
+ user
+ };
+
+ mylocalsconf.name = user.name;
+ mylocalsconf.surname = user.surname;
+ mylocalsconf.emailto = user.email;
+ mylocalsconf.hashemail = tools.getHash(user.email);
+
+ mylocalsconf = this.replacefields(mylocalsconf);
+
+ const esito = this.sendEmail_base('ecommerce/' + ordertype + '/' + lang, mylocalsconf.emailto, mylocalsconf, mylocalsconf.dataemail.email_reply);
+
+ this.sendEmail_base('ecommerce/' + ordertype + '/' + lang, tools.getAdminEmailByIdApp(idapp), mylocalsconf, '');
+
},
- sendEmail_Newsletter_Events: async function (lang, idapp, id_newstosent) {
+ sendEmail_Newsletter_Events: async function (lang, idapp, id_newstosent) {
const msginizio = 'INIZIO - sendEmail_Newsletter_Events: ' + tools.getNomeAppByIdApp(idapp);
console.log(msginizio);
diff --git a/src/server/server.js b/src/server/server.js
index 7d6d24f..c658cda 100755
--- a/src/server/server.js
+++ b/src/server/server.js
@@ -14,7 +14,6 @@ const express = require('express');
const bodyParser = require('body-parser');
const path = require('path');
-const sendemail = require('./sendemail');
const cron = require('node-cron');
@@ -31,48 +30,6 @@ if ((process.env.NODE_ENV === 'production') || (process.env.NODE_ENV === 'test')
var http = require('http');
}
-require('./models/todo');
-require('./models/project');
-require('./models/user');
-require('./models/subscribers');
-require('./models/cfgserver');
-require('./models/booking');
-require('./models/sendmsg');
-require('./models/mailinglist');
-require('./models/newstosent');
-require('./models/mypage');
-require('./models/calzoom');
-const mysql_func = require('./mysql/mysql_func');
-
-const { Newstosent } = require('./models/newstosent');
-
-const index_router = require('./router/index_router');
-const push_router = require('./router/push_router');
-const newsletter_router = require('./router/newsletter_router');
-const booking_router = require('./router/booking_router');
-const dashboard_router = require('./router/dashboard_router');
-const myevent_router = require('./router/myevent_router');
-const subscribe_router = require('./router/subscribe_router');
-const sendmsg_router = require('./router/sendmsg_router');
-const email_router = require('./router/email_router');
-const todos_router = require('./router/todos_router');
-const test_router = require('./router/test_router');
-const projects_router = require('./router/projects_router');
-const report_router = require('./router/report_router');
-const users_router = require('./router/users_router');
-const site_router = require('./router/site_router');
-const admin_router = require('./router/admin_router');
-const products_router = require('./router/products_router');
-const cart_router = require('./router/cart_router');
-const orders_router = require('./router/orders_router');
-
-
-const { ListaIngresso } = require('./models/listaingresso');
-
-const { MyEvent } = require('./models/myevent');
-
-const telegrambot = require('./telegram/telegrambot');
-
require('./db/mongoose');
console.log("DB: " + process.env.DATABASE);
@@ -83,16 +40,59 @@ var app = express();
const tools = require('./tools/general');
+require('./models/cfgserver');
var mongoose = require('mongoose');
+
+mongoose.set('debug', process.env.DEBUG);
+
const cfgserver = mongoose.model('cfgserver');
const { ObjectID } = require('mongodb');
-app.use(express.static('views'));
+myLoad().then(ris => {
+
+ const { User } = require('./models/user');
+
+ require('./models/todo');
+ require('./models/project');
+ require('./models/subscribers');
+ require('./models/booking');
+ require('./models/sendmsg');
+ require('./models/mailinglist');
+ require('./models/newstosent');
+ require('./models/mypage');
+ require('./models/calzoom');
+ const mysql_func = require('./mysql/mysql_func');
+
+
+ const index_router = require('./router/index_router');
+ const push_router = require('./router/push_router');
+ const newsletter_router = require('./router/newsletter_router');
+ const booking_router = require('./router/booking_router');
+ const dashboard_router = require('./router/dashboard_router');
+ const myevent_router = require('./router/myevent_router');
+ const subscribe_router = require('./router/subscribe_router');
+ const sendmsg_router = require('./router/sendmsg_router');
+ const email_router = require('./router/email_router');
+ const todos_router = require('./router/todos_router');
+ const test_router = require('./router/test_router');
+ const projects_router = require('./router/projects_router');
+ const report_router = require('./router/report_router');
+ const users_router = require('./router/users_router');
+ const iscrittiConacreis_router = require('./router/iscrittiConacreis_router');
+ const site_router = require('./router/site_router');
+ const admin_router = require('./router/admin_router');
+ const products_router = require('./router/products_router');
+ const cart_router = require('./router/cart_router');
+ const orders_router = require('./router/orders_router');
+
+ const { MyEvent } = require('./models/myevent');
+
+ app.use(express.static('views'));
// app.use(express.static(path.join(__dirname, 'client')));
-app.use(bodyParser.json());
+ app.use(bodyParser.json());
// app.set('view engine', 'pug');
@@ -100,42 +100,43 @@ app.use(bodyParser.json());
// app.use(express.static(path.join(__dirname, 'public')));
-i18n.configure({
- locales: ['it', 'enUs', 'es', 'fr', 'pt', 'si'],
- // cookie: 'cook',
- directory: __dirname + '/locales'
-});
+ i18n.configure({
+ locales: ['it', 'enUs', 'es', 'fr', 'pt', 'si'],
+ // cookie: 'cook',
+ directory: __dirname + '/locales'
+ });
-app.use(cors({
- exposedHeaders: ['x-auth'],
-}));
+ app.use(cors({
+ exposedHeaders: ['x-auth'],
+ }));
-app.use(bodyParser.json());
+ app.use(bodyParser.json());
// app.use(express.cookieParser());
-app.use(i18n.init);
+ app.use(i18n.init);
// Use Routes
-app.use('/', index_router);
-app.use('/subscribe', subscribe_router);
-app.use('/sendmsg', sendmsg_router);
-app.use('/push', push_router);
-app.use('/news', newsletter_router);
-app.use('/booking', booking_router);
-app.use('/dashboard', dashboard_router);
-app.use('/event', myevent_router);
-app.use('/email', email_router);
-app.use('/todos', todos_router);
-app.use('/test', test_router);
-app.use('/projects', projects_router);
-app.use('/users', users_router);
-app.use('/report', report_router);
-app.use('/site', site_router);
-app.use('/admin', admin_router);
-app.use('/products', products_router);
-app.use('/cart', cart_router);
-app.use('/orders', orders_router);
+ app.use('/', index_router);
+ app.use('/subscribe', subscribe_router);
+ app.use('/sendmsg', sendmsg_router);
+ app.use('/push', push_router);
+ app.use('/news', newsletter_router);
+ app.use('/booking', booking_router);
+ app.use('/dashboard', dashboard_router);
+ app.use('/event', myevent_router);
+ app.use('/email', email_router);
+ app.use('/todos', todos_router);
+ app.use('/test', test_router);
+ app.use('/projects', projects_router);
+ app.use('/users', users_router);
+ app.use('/iscritti_conacreis', iscrittiConacreis_router);
+ app.use('/report', report_router);
+ app.use('/site', site_router);
+ app.use('/admin', admin_router);
+ app.use('/products', products_router);
+ app.use('/cart', cart_router);
+ app.use('/orders', orders_router);
// catch 404 and forward to error handler
// app.use(function (req, res, next) {
@@ -149,21 +150,21 @@ app.use('/orders', orders_router);
// development error handler
// will print stacktrace
-if (app.get('env') === 'development') {
+ if (app.get('env') === 'development') {
- app.use(function (err, req, res, next) {
- console.log('Error: ', err.message);
- // console.trace();
- res.status(err.status || 500).send({ error: err.message });
- // res.render('error', {
- // message: err.message,
- // error: err
- // });
- });
+ app.use(function (err, req, res, next) {
+ console.log('Error: ', err.message);
+ // console.trace();
+ res.status(err.status || 500).send({ error: err.message });
+ // res.render('error', {
+ // message: err.message,
+ // error: err
+ // });
+ });
-}
+ }
-require('./telegram/telegrambot');
+// require('./telegram/telegrambot');
// *** DB CONNECTIONS ***
@@ -175,15 +176,20 @@ require('./telegram/telegrambot');
// });
-if ((process.env.NODE_ENV === 'production') || (process.env.NODE_ENV === 'test')) {
- var httpsServer = https.createServer(credentials, app);
- console.log("httpsServer: port ", port);
- httpsServer.listen(port);
-} else {
- console.log("httpServer: port ", port);
- var httpServer = http.createServer(app);
- httpServer.listen(port);
-}
+ if ((process.env.NODE_ENV === 'production') || (process.env.NODE_ENV === 'test')) {
+ var httpsServer = https.createServer(credentials, app);
+ console.log("httpsServer: port ", port);
+ httpsServer.listen(port);
+ } else {
+ console.log("httpServer: port ", port);
+ var httpServer = http.createServer(app);
+ httpServer.listen(port);
+ }
+
+ mystart();
+
+
+});
// app.use(throttle(1024 * 128)); // throttling bandwidth
@@ -193,44 +199,58 @@ if ((process.env.NODE_ENV === 'production') || (process.env.NODE_ENV === 'test')
// next()
// });
-if (process.env.PROD !== 1) {
- testmsgwebpush();
+async function myLoad() {
- // tools.sendNotifToAdmin('Riparti', 'Riparti');
- // sendemail.testemail('2', 'it');
-
- let miapass = '';
-
- if (miapass !== '') {
- let crypt = tools.cryptdata(miapass);
- let decrypt = tools.decryptdata(crypt);
-
- console.log('crypted:', crypt);
- console.log('decrypted:', decrypt);
- }
-
- mycron();
+ return await tools.loadApps();
}
-// ----------------- MAILCHIMP -----
-const querystring = require('querystring');
-const mailchimpClientId = 'xxxxxxxxxxxxxxxx';
+async function mystart() {
-app.get('/mailchimp/auth/authorize', function (req, res) {
- res.redirect('https://login.mailchimp.com/oauth2/authorize?' +
- querystring.stringify({
- 'response_type': 'code',
- 'client_id': mailchimpClientId,
- 'redirect_uri': 'http://127.0.0.1:3000/mailchimp/auth/callback'
- }));
-});
+ if (process.env.PROD !== 1) {
+ testmsgwebpush();
+
+ // tools.sendNotifToAdmin('Riparti', 'Riparti');
+ // sendemail.testemail('2', 'it');
+
+ let miapass = '';
+
+ if (miapass !== '') {
+ let crypt = tools.cryptdata(miapass);
+ let decrypt = tools.decryptdata(crypt);
+
+ console.log('crypted:', crypt);
+ console.log('decrypted:', decrypt);
+ }
+
+ mycron();
+ }
+
+
+ await inizia();
+
+ await resetProcessingJob();
+
+
+// ----------------- MAILCHIMP -----
+ const querystring = require('querystring');
+ const mailchimpClientId = 'xxxxxxxxxxxxxxxx';
+
+ app.get('/mailchimp/auth/authorize', function (req, res) {
+ res.redirect('https://login.mailchimp.com/oauth2/authorize?' +
+ querystring.stringify({
+ 'response_type': 'code',
+ 'client_id': mailchimpClientId,
+ 'redirect_uri': 'http://127.0.0.1:3000/mailchimp/auth/callback'
+ }));
+ });
+
+
+
+}
// -----------------
-startserv();
-
-
function populateDBadmin() {
const cfgserv = [{
_id: new ObjectID(),
@@ -243,24 +263,12 @@ function populateDBadmin() {
let cfg = new cfgserver(cfgserv[0]).save();
}
-function startserv() {
-
- // populateDBadmin();
-
- // Check if is Empty (new Server Data)
- /*
- cfgserver.countDocuments(function (err, count) {
- if (!err && count === 0) {
- populateDBadmin();
- }
- });
- */
-
-}
-
-
function mycron() {
- for (const app of MYAPPS) {
+
+ const sendemail = require('./sendemail');
+
+
+ for (const app of tools.getApps()) {
sendemail.checkifPendingNewsletter(app.idapp);
sendemail.checkifSentNewsletter(app.idapp);
@@ -268,13 +276,13 @@ function mycron() {
}
async function mycron_30min() {
- for (const app of MYAPPS) {
+ for (const app of tools.getApps()) {
let enablecrontab = false;
enablecrontab = await Settings.getValDbSettings(app.idapp, tools.ENABLE_CRONTAB, false);
if (enablecrontab) {
- ListaIngresso.Esegui_CronTab(app.idapp, {});
+ // ...
}
}
}
@@ -323,6 +331,8 @@ cron.schedule('*/60 * * * *', async () => {
async function resetProcessingJob() {
+ const { Newstosent } = require('./models/newstosent');
+
arrrec = await Newstosent.find({});
for (const rec of arrrec) {
@@ -338,25 +348,24 @@ async function resetProcessingJob() {
//});
async function inizia() {
- if (process.env.NODE_ENV === 'production') {
- await telegrambot.sendMsgTelegram(tools.AYNI, telegrambot.ADMIN_USER_SERVER, `Ciao ${telegrambot.ADMIN_USER_NAME_SERVER}!`);
- await telegrambot.sendMsgTelegramByIdTelegram(tools.AYNI, telegrambot.ADMIN_IDTELEGRAM_SERVER, `Il Server ${process.env.DATABASE} è appena ripartito!`);
+
+ const telegrambot = require('./telegram/telegrambot');
+
+ // if (process.env.NODE_ENV === 'production') {
+ await telegrambot.sendMsgTelegram(tools.CNM, telegrambot.ADMIN_USER_SERVER, `Ciao ${telegrambot.ADMIN_USER_NAME_SERVER}!`);
+ await telegrambot.sendMsgTelegramByIdTelegram(tools.CNM, telegrambot.ADMIN_IDTELEGRAM_SERVER, `Il Server ${process.env.DATABASE} è appena ripartito!`);
await telegrambot.sendMsgTelegramByIdTelegram('2', telegrambot.ADMIN_IDTELEGRAM_SERVER, `Il Server ${process.env.DATABASE} è appena ripartito!`);
testo = 'Ciao Paolo!';
- myid = await telegrambot.sendMsgTelegramByIdTelegram(tools.AYNI, telegrambot.ADMIN_IDTELEGRAM_SERVER, testo);
+ myid = await telegrambot.sendMsgTelegramByIdTelegram(tools.CNM, telegrambot.ADMIN_IDTELEGRAM_SERVER, testo);
- }
+ // }
// testo = 'testo modificato';
// myid = await telegrambot.sendMsgTelegramByIdTelegram('7', telegrambot.ADMIN_IDTELEGRAM_SERVER, testo, myid, telegrambot.ADMIN_IDTELEGRAM_SERVER);
}
-inizia();
-
-resetProcessingJob();
-
//
diff --git a/src/server/telegram/telegrambot.js b/src/server/telegram/telegrambot.js
index 1f163a4..ec6c1ff 100755
--- a/src/server/telegram/telegrambot.js
+++ b/src/server/telegram/telegrambot.js
@@ -370,6 +370,7 @@ const txt = {
MSG_ERR_UNKNOWN_VERIFY_CODE: 'Errore durante il salvataggio sul Server. Riprovare piú tardi',
MSG_EXIT_TELEGRAM: 'L\'account è stato ora scollegato da questo Telegram BOT.',
MSG_APORTADOR_USER_REGISTERED: emo.FIRE + ' Si è appena Registrato "%s (n. %s)"\n(Invitato da %s)',
+ MSG_ISCRITTO_CONACREIS: emo.FIRE + ' Si è appena Iscritto al Conacreis "%s"',
MSG_MSG_SENT: emoji.get('envelope') + ' Messaggi Inviati !',
MSG_MSG_TOSENT: emoji.get('envelope') + ' Messaggi da Inviare',
MSG_MSG_INCORSO: emoji.get('envelope') + ' messaggi in corso... Inviati attualmente',
@@ -485,7 +486,8 @@ module.exports = {
ADMIN_USER_NAME_SERVER: 'Paolo',
phase: {
- REGISTRATION: 1
+ REGISTRATION: 1,
+ ISCRIZIONE_CONACREIS: 2
},
getFormDaMostrare: function (idapp, myfunc, myuser) {
@@ -550,7 +552,19 @@ module.exports = {
},
- sendMsgTelegramToTheManagers: async function (idapp, text, onlyintofile, MyForm = null) {
+ notifyIscrizioneToTelegram: async function (phase, mylocalsconf) {
+ let langdest = mylocalsconf.iscritto.lang;
+ let NameFrom = `${mylocalsconf.iscritto.name} ${mylocalsconf.iscritto.surname}`;
+
+ let text = printf(getstr(langdest, 'MSG_ISCRITTO_CONACREIS'), NameFrom);
+
+ let addtext = "";
+
+ await this.sendMsgTelegramToTheManagers(mylocalsconf.idapp, addtext + text);
+ },
+
+
+ sendMsgTelegramToTheManagers: async function (idapp, text, onlyintofile = false, MyForm = null) {
tools.writeManagersLog(text);
@@ -875,6 +889,8 @@ module.exports = {
},
sendMsgTelegram: async function (idapp, username, text, alsotomanagers, username_mitt) {
+ const { User } = require('../models/user');
+
const teleg_id = await User.TelegIdByUsername(idapp, username);
const cl = getclTelegByidapp(idapp);
let ris = null;
@@ -2634,6 +2650,7 @@ function getclTelegByidapp(idapp) {
}
if (!tools.testing()) {
+// if (true) {
console.log('TELEGRAM STARTING.... ');
for (const idapp of appTelegram) {
diff --git a/src/server/tools/general.js b/src/server/tools/general.js
index 2f95749..d1fb788 100755
--- a/src/server/tools/general.js
+++ b/src/server/tools/general.js
@@ -9,6 +9,9 @@ require('../config/config');
require('../models/subscribers');
+
+const Site = require('../models/site');
+
const CryptoJS = require('crypto-js');
const Url = require('url-parse');
@@ -42,15 +45,20 @@ const keySize = 256;
const ivSize = 128;
const iterations = 100;
-if (process.env.GCM_API_KEY !== "")
+
+
+if (!!process.env.GCM_API_KEY && process.env.GCM_API_KEY !== "") {
webpush.setGCMAPIKey(process.env.GCM_API_KEY);
-webpush.setVapidDetails(subject, publicVapidKey, privateVapidKey);
+ webpush.setVapidDetails(subject, publicVapidKey, privateVapidKey);
+}
// console.log('setVapidDetails... config...');
+
+
// To Translate!
-textlang = {
+const textlang = {
it: {
"L'Email è già stata Verificata": "L'Email è già stata Verificata",
"Nuova Registrazione": "Nuova Registrazione",
@@ -58,6 +66,7 @@ textlang = {
"partecipanti": "partecipanti all'Evento",
"partecipanti a Pranzo": "partecipanti a Pranzo",
"partecipanti a Cena": "partecipanti a Cena",
+ "partecipanti a Cena Condivisa": "partecipanti a Cena Condivisa",
'TESTO_ASSISTENZA': "👉 Per entrare nel Sito AYNI\n\n" +
"👉 Hai dimenticato la password?\n\n" +
"👉 Entra nel Canale d'Informazione per Importanti Avvisi!\nCanale AYNI-BIBLIO\n\n" +
@@ -474,6 +483,7 @@ textlang = {
module.exports = {
+ MYAPPS: [],
INITDB_FIRSTIME: true,
ACAPO: '\n',
@@ -637,11 +647,11 @@ module.exports = {
},
allfieldBooking: function () {
- return ['idapp', 'userId', 'id_bookedevent', 'numpeople', 'numpeopleLunch', 'numpeopleDinner', 'msgbooking', 'modified', 'infoevent', 'datebooked', 'booked']
+ return ['idapp', 'userId', 'id_bookedevent', 'numpeople', 'numpeopleLunch', 'numpeopleDinner', 'numpeopleDinnerShared', 'msgbooking', 'modified', 'infoevent', 'datebooked', 'booked']
},
allfieldBookingChange: function () {
- return ['numpeople', 'numpeopleLunch', 'numpeopleDinner', 'msgbooking', 'modified', 'infoevent', 'datebooked', 'booked']
+ return ['numpeople', 'numpeopleLunch', 'numpeopleDinner', 'numpeopleDinnerShared', 'msgbooking', 'modified', 'infoevent', 'datebooked', 'booked']
},
allfieldProjectWithId: function () {
@@ -844,8 +854,8 @@ module.exports = {
sendNotifToAdmin(title, msg, tag = '') {
const { User } = require('../models/user');
- // console.log('nomeapp 1: ' , tools.getNomeAppByIdApp(1));
- // console.log('nomeapp 2: ' , tools.getNomeAppByIdApp(2));
+ // console.log('nomeapp 1: ' , this.getNomeAppByIdApp(1));
+ // console.log('nomeapp 2: ' , this.getNomeAppByIdApp(2));
User.find({ username: 'paoloarcnm' }).then((arrusers) => {
if (arrusers !== null) {
@@ -906,7 +916,7 @@ module.exports = {
getNomeAppByIdApp: function (idapp) {
const myapp =
- MYAPPS.find(item => item.idapp === idapp);
+ this.getApps().find(item => item.idapp === idapp);
if (myapp)
return myapp.name;
else
@@ -916,7 +926,7 @@ module.exports = {
getHostByIdApp: function (idapp) {
const myapp =
- MYAPPS.find(item => item.idapp === idapp);
+ this.getApps().find(item => item.idapp === idapp);
if (myapp) {
let siteport = (myapp.portapp !== "0") ? (':' + myapp.portapp) : "";
@@ -926,14 +936,14 @@ module.exports = {
},
isAbilitaNave: function (idapp) {
- const myapp = MYAPPS.find(item => item.idapp === idapp);
+ const myapp = this.getApps().find(item => item.idapp === idapp);
return myapp.abilitanave;
},
getdirByIdApp: function (idapp) {
const myapp =
- MYAPPS.find(item => item.idapp === idapp);
+ this.getApps().find(item => item.idapp === idapp);
if (myapp) {
return myapp.dir;
} else
@@ -941,7 +951,7 @@ module.exports = {
},
getAdminEmailByIdApp: function (idapp) {
- const myapp = MYAPPS.find((item) => item.idapp === idapp);
+ const myapp = this.getApps().find((item) => item.idapp === idapp);
if (myapp)
return myapp.adminemail;
else
@@ -949,7 +959,7 @@ module.exports = {
},
getreplyToEmailByIdApp: function (idapp) {
- const myapp = MYAPPS.find((item) => item.idapp === idapp);
+ const myapp = this.getApps().find((item) => item.idapp === idapp);
if (myapp)
return myapp.replyTo;
else
@@ -957,7 +967,7 @@ module.exports = {
},
getpathregByIdApp: function (idapp, lang) {
- const myapp = MYAPPS.find((item) => item.idapp === idapp);
+ const myapp = this.getApps().find((item) => item.idapp === idapp);
if (myapp)
return 'registration' + myapp.pathreg_add + '/' + lang;
else
@@ -970,30 +980,31 @@ module.exports = {
},
getManagerEmailByIdApp: function (idapp) {
- const myapp = MYAPPS.find((item) => item.idapp === idapp);
+ const myapp = this.getApps().find((item) => item.idapp === idapp);
if (myapp)
- return myapp.manageremail;
+ return !!myapp.manageremail ? myapp.manageremail : '';
else
return '';
},
getEmailByIdApp: function (idapp) {
- const myapp = MYAPPS.find((item) => item.idapp === idapp);
+ const myapp = this.getApps().find((item) => item.idapp === idapp);
return (myapp) ? myapp.email_from : ''
},
getPwdByIdApp: function (idapp) {
- const myapp = MYAPPS.find((item) => item.idapp === idapp);
+ const myapp = this.getApps().find((item) => item.idapp === idapp);
return (myapp) ? this.decryptdata(myapp.email_pwd) : ''
},
getTelegramBotNameByIdApp: function (idapp) {
- const myapp = MYAPPS.find((item) => item.idapp === idapp);
+ const myapp = this.getApps().find((item) => item.idapp === idapp);
return (myapp) ? myapp.telegram_bot_name : ''
},
getTelegramKeyByIdApp: function (idapp) {
- const myapp = MYAPPS.find((item) => item.idapp === idapp);
+ const myarr = this.getApps();
+ const myapp = myarr.find((item) => item.idapp === idapp);
return (myapp) ? myapp.telegram_key : ''
},
@@ -1953,6 +1964,16 @@ module.exports = {
dateToEpochStr(thedate) {
const time = new Date(thedate).getTime();
return new Date(time - (time % 86400000));
+ },
+
+ async loadApps() {
+ this.MYAPPS = await Site.findAllIdApp(0);
+ },
+ getApps() {
+ if (this.MYAPPS.length <= 0)
+ this.loadApps();
+
+ return this.MYAPPS;
}
};
diff --git a/src/server/tools/server_constants.js b/src/server/tools/server_constants.js
index 0a499b9..3799bf2 100755
--- a/src/server/tools/server_constants.js
+++ b/src/server/tools/server_constants.js
@@ -22,6 +22,7 @@ module.exports = Object.freeze({
RIS_CODE_OK: 1,
RIS_CODE_LOGIN_OK: 1,
+ RIS_ISCRIZIONE_OK: 5,
RIS_CODE_HTTP_INVALID_TOKEN: 403,
RIS_CODE_TOKEN_RESETPASSWORD_NOT_FOUND: -23,
diff --git a/src/server/tools/shared_nodejs.js b/src/server/tools/shared_nodejs.js
index 06f3a74..cc7f394 100755
--- a/src/server/tools/shared_nodejs.js
+++ b/src/server/tools/shared_nodejs.js
@@ -34,7 +34,7 @@ module.exports = {
Manager: 2,
Teacher: 4,
Tutor: 8,
- Traduttrici: 16,
+ Editor: 16,
Zoomeri: 32,
Department: 64,
},
@@ -48,6 +48,7 @@ module.exports = {
SEND_TO_ALL: 1,
SEND_TO_SOCI: 2,
SEND_TO_SOCIO_RESIDENTE: 3,
+ SEND_TO_CONSIGLIO: 5,
SEND_TO_NON_SOCI: 10,
SEND_TO_PAOLO: 20
},
@@ -79,6 +80,14 @@ module.exports = {
CANCELED: 10,
},
+ OrderStatusView: {
+ CHECKOUT_SENT: 2,
+ ORDER_CONFIRMED: 3,
+ PAYED: 4,
+ RECEIVED: 6,
+ CANCELED: 10
+ },
+
fieldsUserToChange() {
return ['_id', 'index', 'username', 'email', 'name', 'surname', 'perm', 'date_reg', 'verified_email', 'ipaddr', 'lasttimeonline', 'profile', 'calcstat', 'news_on', 'aportador_solidario', 'made_gift', 'ind_order', 'old_order', 'numinvitati', 'numinvitatiattivi', 'qualified']