• File: messages.controller.js
  • Full Path: /var/www/nodejs/Notifications_Imali_API/src/controllers/messages.controller.js
  • Date Modified: 02/02/2023 10:31 PM
  • File size: 1.8 KB
  • MIME-type: text/plain
  • Charset: utf-8
//dependencias
const path = require('path');
const schedule = require('node-schedule');
const ejs = require('ejs');

//modelos
const {SMS} = require("../models/SMS");
const {Push} = require("../models/Push");
const {Email} = require("../models/Email");
const MassMailer = require("../models/MassMailer");
const MassPusher = require("../models/MassPusher");
const MassSMSER = require("../models/MassSMSER");

const sendSMS = (req,res)=>{
    
    const error = SMS.validate(req.body);

    if(error && error.error) return res.status(400).json(error.error.details[0]);

    new MassSMSER(req.body.phoneNumbers,new SMS(req.body.message))

    res.status(200).send("SMS Sent Ok");

}

const sendEmail = async (req,res)=>{

    const error = Email.validate(req.body);

    if(error && error.error) return res.status(400).json(error.error.details[0]);

    //decode base64
    let decodedBase64HTML=null;
    let emailMessage=null;

    
    try {
      if(req.body.messageType === "html"){
        decodedBase64HTML =  Buffer.from(req.body.html, 'base64');
        decodedBase64HTML = await ejs.renderFile(path.resolve("src/views/layouts/iMaliMailTemplate.ejs"), { content: decodedBase64HTML });
      }
      else
        emailMessage = req.body.message;
    } catch (error) {
      return res.send(error,500);
    }

    new MassMailer(req.body.to,new Email(req.body.from,req.body.subject,emailMessage,decodedBase64HTML,req.body.attachments));//send mass emails


    res.status(200).send('Mail Sent Ok.');
      
}

const sendPush = (req,res)=>{

    const error = Push.validate(req.body);

    if(error && error.error) return res.status(400).json(error.error.details[0]);

    new MassPusher(req.body.to,new Push(req.body.subject,req.body.message))

    res.status(200).send('Push Sent Ok.');

}

module.exports={sendPush,sendEmail,sendSMS}