From 8557ddb37ab4dfdeaeb0f41b569b20a46801a4c9 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 10 Dec 2025 12:37:19 +0530 Subject: [PATCH] Added 1s delay time --- ...uarterlyWindowsConfiguration.controller.js | 75 +++++++++---------- 1 file changed, 36 insertions(+), 39 deletions(-) diff --git a/app/controllers/quarterlyWindowsConfiguration.controller.js b/app/controllers/quarterlyWindowsConfiguration.controller.js index bcf0f5a..e9f8fa5 100644 --- a/app/controllers/quarterlyWindowsConfiguration.controller.js +++ b/app/controllers/quarterlyWindowsConfiguration.controller.js @@ -7,10 +7,22 @@ const EstablishmentUser = db.EstablishmentUser; const { sendEmailService } = require("../services/email.service"); // Create new configuration + exports.createConfig = async (req, res) => { try { const {survey_name, quarter, year, start_date, end_date } = req.body; + + const surveyNameExists = await QuarterlyWindowsConfiguration.findOne({ + where: { survey_name, is_active: true } + }); + + if (surveyNameExists) { + return res.status(400).json({ + status: "failed", + message: `Survey Name '${survey_name}' already exists.` + }); + } // find config const exists = await QuarterlyWindowsConfiguration.findOne({where: { quarter, year }}); @@ -40,54 +52,39 @@ exports.createConfig = async (req, res) => { support_email: process.env.SUPPORT_EMAIL, support_phone: process.env.SUPPORT_PHONE }; - const EstablishmentUserData = await EstablishmentUser.findAll({where: { is_active: 1 }}); - const establishmentEmailPromises = EstablishmentUserData.map(async (userObj) => { - try { - await sendEmailService( - userObj.email, - "quarterly_survey_created_to_establishment", - placeholder - ); - return { email: userObj.email, status: "sent" }; - } catch (error) { - return { email: userObj.email, status: "failed", error: error.message }; - } - }); - // Wait for all emails to resolve - const emailResults = await Promise.all(establishmentEmailPromises); - - // Create quarterly window configuration const data = await QuarterlyWindowsConfiguration.create(req.body); - res.status(201).send({ - status: "success", - message: "Quarterly window configuration created successfully", - data, - emailResults, + status: "success", + message: "Quarterly window configuration created successfully", + data, }); - - - - // const establishmentEmailPromises = EstablishmentUserData.map((userObj) => { - // return sendEmailService(userObj.email,"quarterly_survey_created_to_establishment", placeholder); - // }); - - // await Promise.all([ - // ...establishmentEmailPromises - // ]); - - // const data = await QuarterlyWindowsConfiguration.create(req.body); - // res.status(201).send({ - // status: "success", - // message: "Quarterly window configuration created successfully", - // data, - // }); + sendEmailsToEstablishments(placeholder); } catch (err) { res.status(500).send({ status: "failed", message: err.message }); } }; +async function sendEmailsToEstablishments(placeholder) { + try { + const users = await EstablishmentUser.findAll({ + where: { is_active: 1 } + }); + + for (const user of users) { + try { + await sendEmailService( user.email, "quarterly_survey_created_to_establishment", placeholder ); + + await new Promise(resolve => setTimeout(resolve, 1000)); + } catch (emailErr) { + console.error("Email failed:", user.email, emailErr.message); + } + } + } catch (err) { + console.error("Email background job failed:", err.message); + } +} + // Get all configurations exports.getAllConfigs = async (req, res) => { try {