p1 feedback : GWM

This commit is contained in:
Gowtham M 2025-11-07 15:34:32 +05:30
parent 0688d95592
commit 710a290a68
3 changed files with 48 additions and 2 deletions

View File

@ -2,10 +2,31 @@ const db = require("../models");
const { Op } = require("sequelize");
const { Sequelize } = require("sequelize");
const QuarterlyWindowsConfiguration = db.QuarterlyWindowsConfiguration;
const Establishment = db.Establishment;
// Create new configuration
exports.createConfig = async (req, res) => {
try {
const { quarter, year } = req.body;
// find config
const exists = await QuarterlyWindowsConfiguration.findOne({where: { quarter, year }});
if (exists) {
return res.status(400).json({status: "failed", message: `Window already exists quarter: ${quarter}, year: ${year}`});
}
// get active establishment count
const assignedCount = await Establishment.count({
where: { is_active: true }
});
// set auto values before inserting
req.body.assigned = assignedCount;
req.body.responded = 0;
req.body.not_responded = assignedCount;
const data = await QuarterlyWindowsConfiguration.create(req.body);
res.status(201).send({
status: "success",

View File

@ -10,6 +10,7 @@ const ZeroTargetReasonMaster = db.ZeroTargetReasonMaster;
const Product = db.Product;
const CityTown = db.CityTown;
const Emirate = db.Emirate;
const QuarterlyWindowsConfiguration = db.QuarterlyWindowsConfiguration;
const ExcelJS = require("exceljs");
const { Op } = require("sequelize");
const { Sequelize } = require("sequelize");
@ -21,12 +22,33 @@ const { getQuarterPeriods } = require("../services/quarterService");
exports.createSubmission = async (req, res) => {
try {
const { products = [], ...submissionData } = req.body;
const { products = [], establishment_id, quarter, year, ...submissionData } = req.body;
if (products.length > 10)
return res.status(400).json({ status: "failed", message: "Max 10 products allowed" });
const submission = await Submission.create(submissionData);
// check duplicate submission
const exists = await Submission.findOne({ where: {establishment_id,quarter,year} });
if (exists) {
return res.status(400).json({status: "failed", message: `Submission already exists for establishment_id: ${establishment_id}, quarter: ${quarter}, year: ${year}`});
}
const submission = await Submission.create({establishment_id, quarter, year, ...submissionData});
// find config
const config = await QuarterlyWindowsConfiguration.findOne({where: { quarter, year }});
if (config) {
const currentResponded = config.responded ?? 0;
const currentNotResponded = config.not_responded ?? 0;
// respond increase, not responded decrease
await QuarterlyWindowsConfiguration.update({responded: currentResponded + 1, not_responded: currentNotResponded - 1 }, {where: { id: config.id }} );
}
if (products.length) {
// products.forEach((p) => (p.submission_id = submission.id));
// await SubmissionProduct.bulkCreate(products);

View File

@ -51,6 +51,9 @@ module.exports = (sequelize, DataTypes) => {
type: DataTypes.INTEGER,
allowNull: true,
},
assigned: { type: DataTypes.INTEGER },
responded: { type: DataTypes.INTEGER },
not_responded: { type: DataTypes.INTEGER },
},
{
tableName: "quarterly_windows_configuration_master",