fcsc_ipi_backend/app/controllers/quarterlyWindowsConfiguration.controller.js
2025-11-05 13:20:01 +05:30

99 lines
2.8 KiB
JavaScript

const db = require("../models");
const { Op } = require("sequelize");
const { Sequelize } = require("sequelize");
const QuarterlyWindowsConfiguration = db.QuarterlyWindowsConfiguration;
// Create new configuration
exports.createConfig = async (req, res) => {
try {
const data = await QuarterlyWindowsConfiguration.create(req.body);
res.status(201).send({
status: "success",
message: "Quarterly window configuration created successfully",
data,
});
} catch (err) {
res.status(500).send({ status: "failed", message: err.message });
}
};
// Get all configurations
exports.getAllConfigs = async (req, res) => {
try {
const data = await QuarterlyWindowsConfiguration.findAll({
attributes: {
include: [
[
Sequelize.literal(`(
SELECT COUNT(*) FROM submission AS s
WHERE s.quarter = quarterly_windows_configuration_master.quarter AND s.year = quarterly_windows_configuration_master.year
)`),
"submission_count",
],
],
},
order: [["year", "DESC"]],
});
res
.status(200)
.send({ status: "success", message: "Fetched successfully", quarter_count: data.length, data });
} catch (err) {
res.status(500).send({ status: "failed", message: err.message });
}
};
// Get single configuration by ID
exports.getConfigById = async (req, res) => {
try {
const data = await QuarterlyWindowsConfiguration.findByPk(req.params.id);
if (!data)
return res
.status(404)
.send({ status: "failed", message: "Record not found" });
res
.status(200)
.send({ status: "success", message: "Fetched successfully", data });
} catch (err) {
res.status(500).send({ status: "failed", message: err.message });
}
};
// Update configuration
exports.updateConfig = async (req, res) => {
try {
const [updated] = await QuarterlyWindowsConfiguration.update(req.body, {
where: { id: req.params.id },
});
if (!updated)
return res
.status(404)
.send({ status: "failed", message: "Record not found" });
res
.status(200)
.send({ status: "success", message: "Updated successfully" });
} catch (err) {
res.status(500).send({ status: "failed", message: err.message });
}
};
// Delete configuration
exports.deleteConfig = async (req, res) => {
try {
const deleted = await QuarterlyWindowsConfiguration.destroy({
where: { id: req.params.id },
});
if (!deleted)
return res
.status(404)
.send({ status: "failed", message: "Record not found" });
res
.status(200)
.send({ status: "success", message: "Deleted successfully" });
} catch (err) {
res.status(500).send({ status: "failed", message: err.message });
}
};