const nodemailer = require("nodemailer"); const moment = require("moment"); const Meeting = require("../models/Meeting"); const DepartmentEmail = require("../models/DepartmentEmail"); const sendEmail = async (req, res) => { try { const { program, department, subject, body, agenda, date, startTime, endTime, recipients } = req.body; const files = req.files; console.log({ program, department, subject, body, agenda, date, startTime, endTime, recipients, files }); if (!program || !department || !subject || !body || !date || !startTime || !endTime || !recipients) { return res.status(400).json({ error: "All fields are required!" }); } const departmentEmails = await DepartmentEmail.findOne({ department }); if (!departmentEmails) { return res.status(404).json({ error: "Department emails not found" }); } const allRecipients = [...new Set([...departmentEmails.emails, ...recipients])]; const conflict = await Meeting.findOne({ date, startTime: { $lt: endTime }, endTime: { $gt: startTime }, }); const formattedDate = moment(date, "YYYY-MM-DD").format("dddd, MMMM Do YYYY"); const formattedStartTime = moment(startTime, "HH:mm").format("hh:mm A"); const formattedEndTime = moment(endTime, "HH:mm").format("hh:mm A"); const formattedStart = moment(`${date} ${startTime}`, "YYYY-MM-DD HH:mm").utc().format("YYYYMMDDTHHmmss[Z]"); const formattedEnd = moment(`${date} ${endTime}`, "YYYY-MM-DD HH:mm").utc().format("YYYYMMDDTHHmmss[Z]"); const zoomLink = "https://us05web.zoom.us/j/2655616202?pwd=S3d6RjVPNnhmQ3AzTlZsRC9GYmNHQT09"; const calendarLink = `https://calendar.google.com/calendar/render?action=TEMPLATE&text=${encodeURIComponent( subject )}&details=${encodeURIComponent(`${body}\nJoin Zoom Meeting: ${zoomLink}`)}&dates=${formattedStart}/${formattedEnd}`; const formattedAgenda = Array.isArray(agenda) && agenda.length > 0 ? agenda.map((item, index) => `
Respected Board Members,
Greetings from Somaiya Vidyavihar University !!
We are glad to invite you to the Board of Studies meeting:
${body}
Program: ${program}
Department: ${department}
Date: ${formattedDate}
Time: ${formattedStartTime} - ${formattedEndTime}
Zoom Meeting Details:
Meeting ID: 265 561 6202
Meeting Password: 123456
Zoom Meeting Link: Join the Meeting
Agenda:
📅 Click here to add this event to Google Calendar
${ conflictDetails ? `Conflict detected!
Conflicting Meeting Details: