Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into dev
gitea/salix/dev This commit looks good Details

This commit is contained in:
Javi Gallego 2019-11-14 13:40:57 +01:00
commit 8ac6e52045
8 changed files with 33 additions and 191 deletions

View File

@ -1,170 +0,0 @@
/*
Author : Enrique Blasco BLanquer
Date: 29 de octubre de 2019
*/
let request = require('request-promise-native');
let UserError = require('vn-loopback/util/user-error');
module.exports = Self => {
Self.remoteMethod('sendMessage', {
description: 'Send a RocketChat message',
accessType: 'WRITE',
accepts: [{
arg: 'from',
type: 'String',
required: true,
description: 'user who sends the message'
}, {
arg: 'to',
type: 'String',
required: true,
description: 'user (@) or channel (#) to send the message'
}, {
arg: 'message',
type: 'String',
required: true,
description: 'The message'
}],
returns: {
type: 'boolean',
root: true
},
http: {
path: `/sendMessage`,
verb: 'POST'
}
});
Self.sendMessage = async(from, to, message) => {
const rocketUser = await getRocketUser();
const userId = rocketUser.data.userId;
const authToken = rocketUser.data.authToken;
if (to.includes('@')) return await sendUserMessage(to.replace('@', ''), userId, authToken, '@' + from + ' te ha mandado un mensaje: ' + message);
else return await sendChannelMessage(to.replace('#', ''), userId, authToken, '@' + from + ' dice: ' + message);
};
/**
* Returns a rocketchat token
* @return {Object} userId and authToken
*/
async function getRocketUser() {
const url = 'https://chat.verdnatura.es/api/v1/login';
const options = {
method: 'POST',
uri: url,
body: {
user: 'VnBot',
password: 'Ub606cux7op.'
},
headers: {
'content-type': 'application/json'
},
json: true
};
return await request(options)
.then(function(parsedBody) {
return parsedBody;
})
.catch(function(err) {
throw new UserError(err);
});
}
/**
* Send a user message
* @param {String} to user to send the message
* @param {String} userId rocket user id
* @param {String} authToken rocket token
* @param {String} message The message
* @return {Object} rocket info
*/
async function sendUserMessage(to, userId, authToken, message) {
const url = 'https://chat.verdnatura.es/api/v1/chat.postMessage';
const options = {
method: 'POST',
uri: url,
body: {
'channel': '@' + to,
'text': message
},
headers: {
'X-Auth-Token': authToken,
'X-User-Id': userId,
'content-type': 'application/json'
},
json: true
};
return await request(options)
.then(function(parsedBody) {
return parsedBody;
})
.catch(function(err) {
throw new UserError(err);
});
}
/**
* Send a channel message
* @param {String} to channel to send the message
* @param {String} userId rocket user id
* @param {String} authToken rocket token
* @param {String} message The message
* @return {Object} rocket info
*/
async function sendChannelMessage(to, userId, authToken, message) {
const channelInfo = await getChannelId(to, userId, authToken);
const url = 'https://chat.verdnatura.es/api/v1/chat.sendMessage';
const channelId = channelInfo.channel._id;
const options = {
method: 'POST',
uri: url,
body: {
'message': {
'rid': channelId,
'msg': message
}
},
headers: {
'X-Auth-Token': authToken,
'X-User-Id': userId,
'content-type': 'application/json'
},
json: true
};
return await request(options)
.then(function(parsedBody) {
return parsedBody;
})
.catch(function(err) {
throw new UserError(err);
});
}
/**
* Get channel id
* @param {String} to channel to get id
* @param {String} userId rocket user id
* @param {String} authToken rocket token
* @return {Object} rocket info
*/
async function getChannelId(to, userId, authToken) {
const url = 'https://chat.verdnatura.es/api/v1/channels.info?roomName=' + to;
const options = {
method: 'GET',
uri: url,
headers: {
'X-Auth-Token': authToken,
'X-User-Id': userId,
'content-type': 'application/json'
},
json: true
};
return await request(options)
.then(function(parsedBody) {
return parsedBody;
})
.catch(function(err) {
throw new UserError(err);
});
}
};

View File

@ -3,5 +3,4 @@ module.exports = Self => {
require('../methods/worker/mySubordinates')(Self);
require('../methods/worker/isSubordinate')(Self);
require('../methods/worker/getWorkerInfo')(Self);
require('../methods/worker/sendMessage')(Self);
};

View File

@ -27,9 +27,11 @@
<div class="grid-row">
<div class="grid-block white vn-pa-lg">
<h1>{{ $t('title') }}</h1>
<p>{{$t('dearClient')}},</p>
<p v-html="$t('clientData')"></p>
<p>{{$t('dear')}},</p>
<p v-html="$t('description', [ticketId])"></p>
<p v-html="$t('poll')"></p>
<p v-html="$t('help')"></p>
<p v-html="$t('conclusion')"></p>
</div>
</div>
<!-- Footer block -->

View File

@ -1,6 +1,10 @@
subject: Aquí tienes tu albarán
title: "¡Este es tu albarán!"
dearClient: Estimado cliente
clientData: A continuación adjuntamos tu albarán.
dear: Estimado cliente
description: Ya está disponible el albarán correspondiente al pedido {0}. <br/>
Puedes descargarlo haciendo clic en el adjunto de este correo.
poll: Si lo deseas, puedes responder a nuestra encuesta de satisfacción para
ayudarnos a prestar un mejor servicio. ¡Tu opinión es muy importante para nosotros!
help: Cualquier duda que te surja, no dudes en consultarla, <strong>¡estamos para
atenderte!</strong>
atenderte!</strong>
conclusion: ¡Gracias por tu atención!

View File

@ -0,0 +1,9 @@
subject: Voici votre bon de livraison
title: "Voici votre bon de livraison!"
dear: Cher client,
description: Le bon de livraison correspondant à la commande {0} est maintenant disponible.<br/>
Vous pouvez le télécharger en cliquant sur la pièce jointe dans cet email.
poll: Si vous le souhaitez, vous pouvez répondre à notre questionaire de satisfaction
pour nous aider à améliorer notre service. Votre avis est très important pour nous!
help: N'hésitez pas nous envoyer toute doute ou question, <strong>nous sommes là pour vous aider!</strong>
conclusion: Merci pour votre attention!

View File

@ -2,17 +2,17 @@ subject: Solicitud de domiciliación bancaria
title: Domiciliación SEPA CORE
description:
dear: Estimado cliente
instructions: <p>Dadas las excelentes relaciones existentes entre nuestras
instructions: <p>Dadas las excelentes relaciones existentes entre nuestras
dos empresas y para facilitar los procesos de pago de nuestras facturas,
sugerimos el uso del sistema de domiciliación bancaria SEPA CORE.</p>
<p>Este servicio consiste en realizar de forma automatizada y electrónicamente,
la emision de nuestros recibos a su empresa, como principal ventaja para usted de
la reducción sustancial de costos en términos de honorarios y gastos bancarios.</p>
<p>Este servicio consiste en emitir nuestros recibos a su empresa de
forma automatizada y electrónicamente, lo que supone para usted una reducción
sustancial de costos en términos de honorarios y gastos bancarios.</p>
<p>En caso de que acepte nuestra propuesta, a la fecha de vencimiento de cada efecto,
se debitará a su cuenta automáticamente por su banco.
Por lo tanto, le pedimos que firme y envíe a su banco la autorización original adjunta,
debidamente completado, y devuelva una fotocopia de dicha autorización.</p>
<p>Este sistema se basa en la transmisión de datos electrónicamente,
el manejo de documentos físico ha sido eliminado.</p>
<p>Le agradecemos su cooperación, les pedimos que acepten, nuestros mejores deseos.</p>
conclusion: Gracias por tu atención.
se debitará a su cuenta automáticamente a través de su entidad bancaria.
Por tanto, le pedimos que firme y envíe a su banco la autorización original adjunta,
debidamente cumplimentada, y nos devuelva una fotocopia de dicha autorización.</p>
<p>Este sistema se basa en la transmisión electrónica de datos;
el manejo de documentos físicos ha sido eliminado.</p>
<p>Le agradecemos su cooperación,</p>
conclusion: ¡Gracias por su atención!

View File

@ -29,8 +29,7 @@ client:
swift: Swift BIC
accountNumber: Número de cuenta - IBAN
accountHolder: "(Titular/es de la cuenta de cargo)"
accountNumberFormat: En España el IBAN consta de {0} posiciones comenzando siempre
por ES
accountNumberFormat: En {0} el IBAN consta de {1} posiciones comenzando siempre por {2}
paymentType: Tipo de pago
recurrent: Recurrente
unique: Único

View File

@ -29,8 +29,7 @@ client:
swift: Swift BIC
accountNumber: Número de Conta IBAN
accountHolder: "(Titular(es) da conta)"
accountNumberFormat: Em Portugal o IBAN é composto por 25 dígitos e começa sempre
por PT
accountNumberFormat: Em {0} o IBAN é composto pelo {1} dígitos e começa sempre pelo {2}
paymentType: Tipos de pagamento Pagamento
recurrent: Recorrente
unique: Pagamento pontual