99 lines
2.8 KiB
JavaScript
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 });
|
|
}
|
|
};
|