| @@ -0,0 +1,52 @@ | |||
| import amqp from 'amqplib' | |||
| import dotenv from 'dotenv' | |||
| import sgMail from '@sendgrid/mail' | |||
| dotenv.config() | |||
| const queueNota = process.env.QUEUE_NOTA | |||
| const senderEmail = process.env.SENDER_EMAIL | |||
| const apiKey = process.env.SENDGRIP_API_KEY | |||
| sgMail.setApiKey(apiKey) | |||
| amqp.connect(process.env.AMQP_SERVER).then(async conn => { | |||
| const ch = await conn.createChannel() | |||
| 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) | |||
| }) | |||
| } | |||
| }).catch(console.warn) | |||
| function sendReceipt(message) { | |||
| const now = new Date() | |||
| const msg = { | |||
| to: message.email, | |||
| from: `Amigo Group Indonesia <${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) | |||
| // }) | |||
| console.log(`Email sent to ${message.email} at ${now}`) | |||
| } | |||
| @@ -0,0 +1,52 @@ | |||
| import amqp from 'amqplib' | |||
| import dotenv from 'dotenv' | |||
| import sgMail from '@sendgrid/mail' | |||
| dotenv.config() | |||
| const queuePaylater = process.env.QUEUE_PAYLATER | |||
| const senderEmail = process.env.SENDER_EMAIL | |||
| const apiKey = process.env.SENDGRIP_API_KEY | |||
| sgMail.setApiKey(apiKey) | |||
| amqp.connect(process.env.AMQP_SERVER).then(async conn => { | |||
| const ch = await conn.createChannel() | |||
| const queuePaylaterExist = ch.assertQueue(queuePaylater, { durable: true }); | |||
| if (queuePaylaterExist) { | |||
| queuePaylaterExist.then(() => { | |||
| return ch.consume(queuePaylater, 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 ' + queuePaylater) | |||
| }) | |||
| } | |||
| }).catch(console.warn) | |||
| function sendReceipt(message) { | |||
| const now = new Date() | |||
| const msg = { | |||
| to: message.email, | |||
| from: `Amigo Group Indonesia <${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) | |||
| // }) | |||
| console.log(`Email sent to ${message.email} at ${now}`) | |||
| } | |||
| @@ -1,80 +0,0 @@ | |||
| import express from 'express' | |||
| import cors from 'cors' | |||
| import bodyParser from 'body-parser' | |||
| import amqp from 'amqplib' | |||
| 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 | |||
| 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!") | |||
| }) | |||
| 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(queuePaylater, 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 ' + queuePaylater) | |||
| }) | |||
| } | |||
| }).catch(console.warn) | |||
| 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) | |||
| }) | |||
| } | |||