This commit is contained in:
Gowtham M 2025-10-28 08:38:11 +05:30
parent d7750aa068
commit 55787d3cbd
7 changed files with 103 additions and 20 deletions

View File

@ -1,6 +1,6 @@
const db = require("../models");
const bcrypt = require("bcryptjs");
const Establishment = db.establishment;
const Establishment = db.Establishment;
const EstablishmentUser = db.EstablishmentUser;
// Create Establishment + linked user

View File

@ -1,8 +1,14 @@
const db = require("../models");
const Submission = db.Submission;
const SubmissionProduct = db.SubmissionProduct;
const Establishment = db.Establishment;
const EstablishmentUser = db.EstablishmentUser;
const UnitMaster = db.UnitMaster;
const VariationReasonMaster = db.VariationReasonMaster;
const ZeroTargetReasonMaster = db.ZeroTargetReasonMaster;
const Product = db.Product;
const { Op } = require("sequelize");
const { Sequelize } = require("sequelize");
const { sendEmail } = require("../services/email.service");
@ -108,7 +114,26 @@ exports.submissionList = async (req, res) => {
try {
const data = await Submission.findAll({
// include: [{ model: SubmissionProduct, as: "products" }],
include: [
{
model: Establishment,
as: "establishment" ,
attributes: ["factory_name","establishment_code","emirate"],
},
{
model: EstablishmentUser,
as: "created_user",
attributes: ["name", "email"],
},
],
attributes: {
include: [
[
Sequelize.literal(`(SELECT COUNT(*) FROM submission_products AS sp WHERE sp.submission_id = submission.id )`),
"product_count",
],
],
},
order: [["id", "DESC"]],
});
@ -127,23 +152,43 @@ exports.viewSubmissionDetails = async (req, res) => {
const data = await Submission.findByPk(id, {
include: [
{
model: SubmissionProduct, as: "products" ,
include: [
{
model: Product,
as: "product",
attributes: ["product_name", "hs_code", "hs_description"],
},
],
}
],
{
model: Establishment,
as: "establishment" ,
},
{
model: SubmissionProduct,
as: "products",
include: [
{
model: Product,
as: "product",
attributes: ["id", "product_name", "hs_code", "hs_description"],
},
{
model: UnitMaster,
as: "unit",
attributes: ["uom"],
},
{
model: VariationReasonMaster,
as: "variation_reason",
attributes: ["reason"],
},
{
model: ZeroTargetReasonMaster,
as: "zero_target_reason",
attributes: ["reason"],
},
],
},
],
});
if (!data) return res.status(404).json({ status: "failed", message: "Not found" });
res.status(200).json({ status: "success", data });
res.status(200).json({ status: "success", data });
} catch (err) {
res.status(500).json({ status: "failed", message: err.message });

View File

@ -68,6 +68,14 @@ module.exports = (sequelize, DataTypes) => {
tableName: "establishments",
}
);
Establishment.associate = (models) => {
Establishment.hasMany(models.Submission, {
foreignKey: "establishment_id",
as: "establishment"
});
};
return Establishment;
};

View File

@ -13,7 +13,7 @@ db.Sequelize = Sequelize;
db.sequelize = sequelize;
db.user = require("./user.model.js")(sequelize, DataTypes);
db.establishment = require("./establishment.model")(sequelize, DataTypes);
db.Establishment = require("./establishment.model")(sequelize, DataTypes);
db.EstablishmentUser = require("./establishment_user.model")(sequelize, DataTypes);
db.Product = require("./product.model.js")(sequelize, DataTypes);
db.EstablishmentProduct = require("./establishmentProduct.model")(sequelize, DataTypes);
@ -28,12 +28,12 @@ db.QuarterlyWindowsConfiguration = require("./quarterlyWindowsConfiguration.mode
// Associations
db.establishment.hasMany(db.EstablishmentUser, {
db.Establishment.hasMany(db.EstablishmentUser, {
foreignKey: "establishment_id",
as: "users",
});
db.EstablishmentUser.belongsTo(db.establishment, {
db.EstablishmentUser.belongsTo(db.Establishment, {
foreignKey: "establishment_id",
as: "establishment",
});

View File

@ -59,11 +59,23 @@ module.exports = (sequelize, DataTypes) => {
});
Submission.associate = (models) => {
Submission.hasMany(models.SubmissionProduct, {
foreignKey: "submission_id",
as: "products",
onDelete: "CASCADE",
});
Submission.belongsTo(models.Establishment, {
foreignKey: "establishment_id",
as: "establishment"
});
Submission.belongsTo(models.EstablishmentUser, {
foreignKey: "created_by",
as: "created_user",
});
};
return Submission;

View File

@ -50,11 +50,29 @@ module.exports = (sequelize, DataTypes) => {
};
SubmissionProduct.associate = (models) => {
SubmissionProduct.belongsTo(models.Product, { // 'Product' with capital P
SubmissionProduct.belongsTo(models.Product, {
foreignKey: "product_id",
as: "product",
});
};
SubmissionProduct.belongsTo(models.UnitMaster, {
foreignKey: "unit_id",
as: "unit",
});
SubmissionProduct.belongsTo(models.VariationReasonMaster, {
foreignKey: "variation_reason_master_id",
as: "variation_reason",
});
SubmissionProduct.belongsTo(models.ZeroTargetReasonMaster, {
foreignKey: "zero_target_reason_master_id",
as: "zero_target_reason",
});
};
return SubmissionProduct;
};

View File

@ -8,7 +8,7 @@ const routes = require("./app/routes/routes");
const db = require("./app/models");
const path = require("path");
require("dotenv").config();
const app = express();
app.use(express.json());