|
|
|
@@ -2,58 +2,79 @@ import express from 'express' |
|
|
|
import cors from 'cors' |
|
|
|
import bodyParser from 'body-parser' |
|
|
|
import amqp from 'amqplib' |
|
|
|
// import nodemailer from 'nodemailer' |
|
|
|
import SibApiV3Sdk from 'sib-api-v3-sdk' |
|
|
|
import dotenv from 'dotenv' |
|
|
|
import sgMail from '@sendgrid/mail' |
|
|
|
|
|
|
|
dotenv.config() |
|
|
|
|
|
|
|
const app = express() |
|
|
|
const queuePaylater = process.env.QUEUE_PAYLATER |
|
|
|
const queueNota = process.env.QUEUE_NOTA |
|
|
|
const senderEmail = process.env.SENDER_EMAIL |
|
|
|
var defaultClient = SibApiV3Sdk.ApiClient.instance |
|
|
|
var apiKey = defaultClient.authentications['api-key'] |
|
|
|
apiKey.apiKey = process.env.SENDING_BLUE_API_KEY |
|
|
|
var apiInstance = new SibApiV3Sdk.TransactionalEmailsApi() |
|
|
|
var sendSmtpEmail = new SibApiV3Sdk.SendSmtpEmail() |
|
|
|
const apiKey = process.env.SENDGRIP_API_KEY |
|
|
|
sgMail.setApiKey(apiKey) |
|
|
|
|
|
|
|
app.use(cors()) |
|
|
|
app.use(bodyParser.json()) |
|
|
|
|
|
|
|
app.get('/', (_req, res) => { |
|
|
|
res.status.send(200).send("Amigo Receipt Sender Service Homepage!") |
|
|
|
res.status.send(200).send("Amigo Receipt Sender Service Homepage!") |
|
|
|
}) |
|
|
|
|
|
|
|
amqp.connect(process.env.AMQP_SERVER).then(async conn=> { |
|
|
|
const ch = await conn.createChannel() |
|
|
|
const queuePaylaterExist = ch.assertQueue(queuePaylater, { durable : true }); |
|
|
|
const queueNotaExist = ch.assertQueue(queueNota, { durable: true }) |
|
|
|
if (queueNotaExist) { |
|
|
|
queueNotaExist.then(() => { |
|
|
|
return ch.consume(queueNota, async (msg) => { |
|
|
|
var messageBody = JSON.parse(msg.content.toString()) |
|
|
|
console.log(`[*] Message Received! email : ${messageBody.email} and pesan : ${messageBody.html}`) |
|
|
|
sendReceipt(messageBody.email, messageBody.html) |
|
|
|
}, { noAck: true }) |
|
|
|
}).then(() => { |
|
|
|
console.log('* Waiting for messages from queue ' + queueNota) |
|
|
|
}) |
|
|
|
} |
|
|
|
amqp.connect(process.env.AMQP_SERVER).then(async conn => { |
|
|
|
const ch = await conn.createChannel() |
|
|
|
const queuePaylaterExist = ch.assertQueue(queuePaylater, { durable: true }); |
|
|
|
const queueNotaExist = ch.assertQueue(queueNota, { durable: true }) |
|
|
|
if (queueNotaExist) { |
|
|
|
queueNotaExist.then(() => { |
|
|
|
return ch.consume(queueNota, async (msg) => { |
|
|
|
var messageBody = JSON.parse(msg.content.toString()) |
|
|
|
console.log(`[*NOTA] Message Received! email : ${messageBody.email}`) |
|
|
|
sendReceipt({ |
|
|
|
email: messageBody.email, |
|
|
|
subject: messageBody.subject, |
|
|
|
content: messageBody.content, |
|
|
|
}) |
|
|
|
}, { noAck: true }) |
|
|
|
}).then(() => { |
|
|
|
console.log('* Waiting for messages from queue ' + queueNota) |
|
|
|
}) |
|
|
|
} |
|
|
|
if (queuePaylaterExist) { |
|
|
|
queuePaylaterExist.then(() => { |
|
|
|
return ch.consume(queueNota, async (msg) => { |
|
|
|
var messageBody = JSON.parse(msg.content.toString()) |
|
|
|
console.log(`[*PayLater] Message Received! email : ${messageBody.email}`) |
|
|
|
sendReceipt({ |
|
|
|
email: messageBody.email, |
|
|
|
subject: messageBody.subject, |
|
|
|
content: messageBody.content, |
|
|
|
}) |
|
|
|
}, { noAck: true }) |
|
|
|
}).then(() => { |
|
|
|
console.log('* Waiting for messages from queue ' + queueNota) |
|
|
|
}) |
|
|
|
} |
|
|
|
}).catch(console.warn) |
|
|
|
|
|
|
|
function sendReceipt(recepientEmail, receipt) { |
|
|
|
var date = new Date() |
|
|
|
sendSmtpEmail = { |
|
|
|
sender: {email: senderEmail, name: process.env.SENDER_NAME}, |
|
|
|
to: [{email: recepientEmail, name: 'Customer'}], |
|
|
|
subject: "test", |
|
|
|
textContent: "testing", |
|
|
|
htmlContent: receipt |
|
|
|
} |
|
|
|
apiInstance.sendTransacEmail(sendSmtpEmail).then(function(data) { |
|
|
|
console.log('API called successfully. Returned data: ' + data) |
|
|
|
console.log(date.toLocaleString()) |
|
|
|
}, function(error) { |
|
|
|
console.error(error) |
|
|
|
function sendReceipt(message) { |
|
|
|
const now = new Date() |
|
|
|
const msg = { |
|
|
|
to: message.email, |
|
|
|
from: senderEmail, |
|
|
|
subject: message.subject, |
|
|
|
html: message.content, |
|
|
|
} |
|
|
|
sgMail |
|
|
|
.send(msg) |
|
|
|
.then((response) => { |
|
|
|
if (response[0].statusCode == 202) { |
|
|
|
console.log(`Email sent to ${message.email} at ${now}`) |
|
|
|
} else { |
|
|
|
console.error(`Failed to send email to ${message.email} at ${now}`) |
|
|
|
} |
|
|
|
}) |
|
|
|
.catch((error) => { |
|
|
|
console.error(error) |
|
|
|
}) |
|
|
|
} |