89 lines
2.0 KiB
JavaScript
89 lines
2.0 KiB
JavaScript
module.exports = (sequelize, DataTypes) => {
|
|
const Submission = sequelize.define("submission", {
|
|
id: {
|
|
type: DataTypes.INTEGER,
|
|
autoIncrement: true,
|
|
primaryKey: true,
|
|
},
|
|
establishment_id: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: false,
|
|
},
|
|
quarter: {
|
|
type: DataTypes.ENUM("Q1", "Q2", "Q3", "Q4"),
|
|
allowNull: false,
|
|
},
|
|
year: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: false,
|
|
},
|
|
edit_request: {
|
|
type: DataTypes.BOOLEAN,
|
|
defaultValue: false,
|
|
},
|
|
edit_access: {
|
|
type: DataTypes.BOOLEAN,
|
|
defaultValue: false,
|
|
},
|
|
edit_access_close_date: {
|
|
type: DataTypes.DATE,
|
|
allowNull: true,
|
|
},
|
|
approve_reject_status: {
|
|
type: DataTypes.INTEGER,
|
|
defaultValue: 0,
|
|
},
|
|
approve_or_reject_by: {
|
|
type: DataTypes.INTEGER,
|
|
},
|
|
reject_reason: {
|
|
type: DataTypes.STRING(255),
|
|
},
|
|
status: {
|
|
type: DataTypes.STRING(50),
|
|
defaultValue: 'Pending',
|
|
},
|
|
created_by: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: false,
|
|
},
|
|
updated_by: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: true,
|
|
},
|
|
created_at: {
|
|
type: DataTypes.DATE,
|
|
defaultValue: DataTypes.NOW,
|
|
},
|
|
updated_at: {
|
|
type: DataTypes.DATE,
|
|
allowNull: true,
|
|
},
|
|
}, {
|
|
tableName: "submission",
|
|
timestamps: false,
|
|
});
|
|
|
|
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;
|
|
};
|
|
|