Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into dev
gitea/salix/dev This commit looks good
Details
gitea/salix/dev This commit looks good
Details
This commit is contained in:
commit
8ac6e52045
|
@ -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);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
|
@ -3,5 +3,4 @@ module.exports = Self => {
|
||||||
require('../methods/worker/mySubordinates')(Self);
|
require('../methods/worker/mySubordinates')(Self);
|
||||||
require('../methods/worker/isSubordinate')(Self);
|
require('../methods/worker/isSubordinate')(Self);
|
||||||
require('../methods/worker/getWorkerInfo')(Self);
|
require('../methods/worker/getWorkerInfo')(Self);
|
||||||
require('../methods/worker/sendMessage')(Self);
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -27,9 +27,11 @@
|
||||||
<div class="grid-row">
|
<div class="grid-row">
|
||||||
<div class="grid-block white vn-pa-lg">
|
<div class="grid-block white vn-pa-lg">
|
||||||
<h1>{{ $t('title') }}</h1>
|
<h1>{{ $t('title') }}</h1>
|
||||||
<p>{{$t('dearClient')}},</p>
|
<p>{{$t('dear')}},</p>
|
||||||
<p v-html="$t('clientData')"></p>
|
<p v-html="$t('description', [ticketId])"></p>
|
||||||
|
<p v-html="$t('poll')"></p>
|
||||||
<p v-html="$t('help')"></p>
|
<p v-html="$t('help')"></p>
|
||||||
|
<p v-html="$t('conclusion')"></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Footer block -->
|
<!-- Footer block -->
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
subject: Aquí tienes tu albarán
|
subject: Aquí tienes tu albarán
|
||||||
title: "¡Este es tu albarán!"
|
title: "¡Este es tu albarán!"
|
||||||
dearClient: Estimado cliente
|
dear: Estimado cliente
|
||||||
clientData: A continuación adjuntamos tu albarán.
|
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
|
help: Cualquier duda que te surja, no dudes en consultarla, <strong>¡estamos para
|
||||||
atenderte!</strong>
|
atenderte!</strong>
|
||||||
|
conclusion: ¡Gracias por tu atención!
|
||||||
|
|
|
@ -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!
|
|
@ -5,14 +5,14 @@ description:
|
||||||
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,
|
dos empresas y para facilitar los procesos de pago de nuestras facturas,
|
||||||
sugerimos el uso del sistema de domiciliación bancaria SEPA CORE.</p>
|
sugerimos el uso del sistema de domiciliación bancaria SEPA CORE.</p>
|
||||||
<p>Este servicio consiste en realizar de forma automatizada y electrónicamente,
|
<p>Este servicio consiste en emitir nuestros recibos a su empresa de
|
||||||
la emision de nuestros recibos a su empresa, como principal ventaja para usted de
|
forma automatizada y electrónicamente, lo que supone para usted una reducción
|
||||||
la reducción sustancial de costos en términos de honorarios y gastos bancarios.</p>
|
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,
|
<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.
|
se debitará a su cuenta automáticamente a través de su entidad bancaria.
|
||||||
Por lo tanto, le pedimos que firme y envíe a su banco la autorización original adjunta,
|
Por 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>
|
debidamente cumplimentada, y nos devuelva una fotocopia de dicha autorización.</p>
|
||||||
<p>Este sistema se basa en la transmisión de datos electrónicamente,
|
<p>Este sistema se basa en la transmisión electrónica de datos;
|
||||||
el manejo de documentos físico ha sido eliminado.</p>
|
el manejo de documentos físicos ha sido eliminado.</p>
|
||||||
<p>Le agradecemos su cooperación, les pedimos que acepten, nuestros mejores deseos.</p>
|
<p>Le agradecemos su cooperación,</p>
|
||||||
conclusion: Gracias por tu atención.
|
conclusion: ¡Gracias por su atención!
|
||||||
|
|
|
@ -29,8 +29,7 @@ client:
|
||||||
swift: Swift BIC
|
swift: Swift BIC
|
||||||
accountNumber: Número de cuenta - IBAN
|
accountNumber: Número de cuenta - IBAN
|
||||||
accountHolder: "(Titular/es de la cuenta de cargo)"
|
accountHolder: "(Titular/es de la cuenta de cargo)"
|
||||||
accountNumberFormat: En España el IBAN consta de {0} posiciones comenzando siempre
|
accountNumberFormat: En {0} el IBAN consta de {1} posiciones comenzando siempre por {2}
|
||||||
por ES
|
|
||||||
paymentType: Tipo de pago
|
paymentType: Tipo de pago
|
||||||
recurrent: Recurrente
|
recurrent: Recurrente
|
||||||
unique: Único
|
unique: Único
|
||||||
|
|
|
@ -29,8 +29,7 @@ client:
|
||||||
swift: Swift BIC
|
swift: Swift BIC
|
||||||
accountNumber: Número de Conta IBAN
|
accountNumber: Número de Conta IBAN
|
||||||
accountHolder: "(Titular(es) da conta)"
|
accountHolder: "(Titular(es) da conta)"
|
||||||
accountNumberFormat: Em Portugal o IBAN é composto por 25 dígitos e começa sempre
|
accountNumberFormat: Em {0} o IBAN é composto pelo {1} dígitos e começa sempre pelo {2}
|
||||||
por PT
|
|
||||||
paymentType: Tipos de pagamento Pagamento
|
paymentType: Tipos de pagamento Pagamento
|
||||||
recurrent: Recorrente
|
recurrent: Recorrente
|
||||||
unique: Pagamento pontual
|
unique: Pagamento pontual
|
||||||
|
|
Loading…
Reference in New Issue