diff --git a/emails/ecommerce/makeorder/it/html.pug b/emails/ecommerce/makeorder/it/html.pug
new file mode 100755
index 0000000..692d9ba
--- /dev/null
+++ b/emails/ecommerce/makeorder/it/html.pug
@@ -0,0 +1,120 @@
+doctype html
+html
+ head
+ title Ordine Effettuato
+
+ //- 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 Ti confermiamo che hai appena inviato un'ordine di prenotazione dei seguenti prodotti:
+
+ tr
+ td(class="whitespace", height="10")
+ p
+
+ - var totalPrice = orders.totalPrice
+ - 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.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
+
+ 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;
+ }
+
+ .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/makeorder/it/subject.pug b/emails/ecommerce/makeorder/it/subject.pug
new file mode 100755
index 0000000..47ad7e2
--- /dev/null
+++ b/emails/ecommerce/makeorder/it/subject.pug
@@ -0,0 +1 @@
+=`Ordine n. ${ordernumber} effettuato`
diff --git a/emails/newsletter/it/html.pug b/emails/newsletter/it/html.pug
index c2fbd31..92472d1 100755
--- a/emails/newsletter/it/html.pug
+++ b/emails/newsletter/it/html.pug
@@ -19,7 +19,7 @@
doctype html
html
head
- title One | Email template!
+ title Calendario Eventi
//- import css/scss stylesheets
//- these file names will be replace by gulp with proper css file paths
diff --git a/sass/basic.scss b/sass/basic.scss
index 68b48a2..fce0a35 100755
--- a/sass/basic.scss
+++ b/sass/basic.scss
@@ -208,6 +208,10 @@ p {
padding: 0px 0px 5px 0;
}
+.sectionTotal {
+ text-align: right;
+}
+
.sectionContentSubTitle {
font-size: 12px;
color: #0000ff;
diff --git a/src/server/models/mypage.js b/src/server/models/mypage.js
index 9043d81..084eb9b 100755
--- a/src/server/models/mypage.js
+++ b/src/server/models/mypage.js
@@ -47,6 +47,12 @@ const MyPageSchema = new Schema({
onlyif_logged: {
type: Boolean,
},
+ only_residenti: {
+ type: Boolean,
+ },
+ color: {
+ type: String,
+ },
imgback: {
type: String,
},
diff --git a/src/server/models/orderscart.js b/src/server/models/orderscart.js
index ee71fd1..d7c067f 100755
--- a/src/server/models/orderscart.js
+++ b/src/server/models/orderscart.js
@@ -55,7 +55,7 @@ module.exports.executeQueryTable = function (idapp, params) {
};
module.exports.getFieldsForSearch = function () {
- return [{field: 'note', type: tools.FieldType.string}]
+ return [{ field: 'note', type: tools.FieldType.string }]
};
@@ -78,9 +78,14 @@ module.exports.getNewNumOrder = async function (uid, idapp) {
};
-module.exports.getOrdersCartByUserId = async function (uid, idapp) {
+module.exports.getOrdersCartByUserId = async function (uid, idapp, numorder) {
let query = { userId: uid, idapp, status: { $gte: shared_consts.OrderStatus.CHECKOUT_SENT } }
- const myorderscart = await OrdersCart.find(query);
+ let myorderscart = null;
+ if (numorder > 0) {
+ query = { userId: uid, idapp, numorder, status: { $gte: shared_consts.OrderStatus.CHECKOUT_SENT } }
+ }
+
+ myorderscart = await OrdersCart.find(query);
for (let ind = 0; ind < myorderscart.length; ind++) {
for (const idkey in myorderscart[ind].items) {
diff --git a/src/server/models/project.js b/src/server/models/project.js
index f122c24..13748fd 100755
--- a/src/server/models/project.js
+++ b/src/server/models/project.js
@@ -51,6 +51,9 @@ var ProjectSchema = new mongoose.Schema({
viceRespUsername: {
type: String,
},
+ vice2RespUsername: {
+ type: String,
+ },
statusproj: {
type: Number,
default: 0
diff --git a/src/server/models/todo.js b/src/server/models/todo.js
index 414c24e..a8255b1 100755
--- a/src/server/models/todo.js
+++ b/src/server/models/todo.js
@@ -31,6 +31,9 @@ var TodoSchema = new mongoose.Schema({
descr: {
type: String,
},
+ note: {
+ type: String,
+ },
priority: {
type: Number,
},
diff --git a/src/server/router/cart_router.js b/src/server/router/cart_router.js
index 21512dc..02a0f97 100755
--- a/src/server/router/cart_router.js
+++ b/src/server/router/cart_router.js
@@ -3,6 +3,7 @@ const shared_consts = require('../tools/shared_nodejs');
const express = require('express');
const router = express.Router();
+const sendemail = require('../sendemail');
const tools = require('../tools/general');
var server_constants = require('../tools/server_constants');
@@ -174,13 +175,15 @@ router.post('/:userId/cartstatus', authenticate, async function (req, res, next)
let idapp = req.body.idapp;
let userId = req.params.userId;
let cart_id = req.body.cart_id;
+ const user = req.user;
let status = req.body.status;
const mycart = await Cart.getCartByUserId(userId, idapp);
+ const numorder = await OrdersCart.getNewNumOrder(userId, idapp);
try {
if (!!mycart) {
- if (status === shared_consts.OrderStatus.CHECKOUT_CONFIRMED) {
+ if (status === shared_consts.OrderStatus.CHECKOUT_SENT) {
// Porta tutto il Cart nell'Ordine
const newOrderCart = new OrdersCart({
idapp,
@@ -190,25 +193,35 @@ router.post('/:userId/cartstatus', authenticate, async function (req, res, next)
userId,
status,
note: mycart.note,
- numorder: await OrdersCart.getNewNumOrder(userId, idapp),
+ numorder,
created_at: new Date(),
modify_at: new Date(),
})
- const myorderlist = OrdersCart.updateOrdersCartById(-1, newOrderCart, function (err, ris) {
+ return OrdersCart.updateOrdersCartById(-1, newOrderCart, function (err, ris) {
//if (err) return next(err)
if (err)
return res.send({ code: server_constants.RIS_CODE_ERR, status: 0 });
else {
const myris = ris;
// Cancella il Cart appena salvato in OrdersCart
+
Cart.deleteCartByCartId(mycart.id)
.then((ris) => {
- const orders = OrdersCart.getOrdersCartByUserId(userId, idapp)
+
+ const orders = OrdersCart.getOrdersCartByUserId(userId, idapp, numorder)
.then((orders) => {
- return res.send({ code: server_constants.RIS_CODE_OK, status: myris.status, orders });
+ if (!!orders) {
+ sendemail.sendEmail_OrderProduct(user.lang, idapp, orders[0], user)
+ .then((ris) => {
+ return res.send({
+ code: server_constants.RIS_CODE_OK,
+ status: myris.status,
+ orders: orders[0]
+ });
+ });
+ }
});
})
-
}
})
@@ -227,6 +240,8 @@ router.post('/:userId/cartstatus', authenticate, async function (req, res, next)
}) */
}
+
+ return res.send({ code: server_constants.RIS_CODE_ERR, status: 0 });
}
} 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 2f78477..268077d 100755
--- a/src/server/router/index_router.js
+++ b/src/server/router/index_router.js
@@ -1157,7 +1157,7 @@ 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);
+ orderscart = OrdersCart.getOrdersCartByUserId(req.user.id, idapp, 0);
}
diff --git a/src/server/router/orders_router.js b/src/server/router/orders_router.js
index 3002941..d0a9f8b 100755
--- a/src/server/router/orders_router.js
+++ b/src/server/router/orders_router.js
@@ -30,7 +30,7 @@ const OrdersCart = require('../models/orderscart');
router.get('/:userId', authenticate, function (req, res, next) {
let userId = req.body.userId
let idapp = req.body.idapp
- OrdersCart.getOrdersCartByUserId(userId, idapp, function (err, cart) {
+ OrdersCart.getOrdersCartByUserId(userId, idapp, 0, function (err, cart) {
if (err) return next(err)
if (cart)
diff --git a/src/server/sendemail.js b/src/server/sendemail.js
index ed7ba15..9eba5d5 100755
--- a/src/server/sendemail.js
+++ b/src/server/sendemail.js
@@ -15,6 +15,8 @@ const { Discipline } = require('./models/discipline');
const previewEmail = require('preview-email');
const nodemailer = require("nodemailer");
+const OrdersCart = require('./models/orderscart');
+
const { MyEvent } = require('./models/myevent');
const { MailingList } = require('./models/mailinglist');
const { Newstosent } = require('./models/newstosent');
@@ -552,7 +554,36 @@ module.exports = {
return smtpTransport;
},
- sendEmail_Newsletter_Events: async function (lang, idapp, id_newstosent) {
+ sendEmail_OrderProduct: async function (lang, idapp, orders, user) {
+
+ const msginizio = 'INIZIO - sendEmail_OrderProduct: ' + 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/makeorder/' + lang, mylocalsconf.emailto, mylocalsconf, mylocalsconf.dataemail.email_reply);
+
+ },
+
+ 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/tools/general.js b/src/server/tools/general.js
index 2d21f24..2f95749 100755
--- a/src/server/tools/general.js
+++ b/src/server/tools/general.js
@@ -617,7 +617,7 @@ module.exports = {
},
allfieldTodo: function () {
- return ['userId', 'pos', 'category', 'descr', 'priority', 'statustodo', 'assignedToUsers', 'created_at', 'groupId', 'modify_at',
+ return ['userId', 'pos', 'category', 'descr', 'note', 'priority', 'statustodo', 'assignedToUsers', 'created_at', 'groupId', 'modify_at',
'completed_at', 'expiring_at', 'enableExpiring', 'progress', 'modified', 'phase', 'assigned_to_userId', 'assignedToUsers', 'hoursplanned', 'hoursworked', 'start_date', 'themecolor', 'themebgcolor']
},