fcsc_ipi_backend/app/models/establishment.model.js

125 lines
4.4 KiB
JavaScript

module.exports = (sequelize, DataTypes) => {
const Establishment = sequelize.define(
"establishments",
{
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true,
},
establishment_code: { type: DataTypes.STRING, unique: true },
factory_name: { type: DataTypes.STRING, unique: true },
permanent_factory_code: { type: DataTypes.STRING, unique: true, allowNull: true },
industry_code: { type: DataTypes.STRING, unique: true, allowNull: true },
industry_code_production: { type: DataTypes.STRING, unique: true, allowNull: true },
industry_code_mismatch_remarks: { type: DataTypes.STRING },
license_number: { type: DataTypes.STRING, unique: true },
isic_code: { type: DataTypes.STRING, unique: true },
// Establishment Contact Details
establishment_address: { type: DataTypes.STRING },
establishment_city_town_id: { type: DataTypes.INTEGER },
establishment_emirate_id: { type: DataTypes.INTEGER },
establishment_postal_code: { type: DataTypes.STRING },
establishment_po_box: { type: DataTypes.STRING },
establishment_makani_number: { type: DataTypes.STRING },
establishment_contact_person_name: { type: DataTypes.STRING },
establishment_contact_person_designation: { type: DataTypes.STRING },
establishment_mobile_number: { type: DataTypes.STRING },
establishment_contact_email: {type: DataTypes.STRING, allowNull: false, unique: true },
establishment_website: { type: DataTypes.STRING },
establishment_remarks: { type: DataTypes.STRING },
// Corporate/Head Office Contact Details
corporate_same_as_establishment: { type: DataTypes.BOOLEAN, defaultValue: false },
corporate_name: { type: DataTypes.STRING },
corporate_address: { type: DataTypes.STRING },
corporate_city_town_id: { type: DataTypes.INTEGER },
corporate_emirate_id: { type: DataTypes.INTEGER },
corporate_postal_code: { type: DataTypes.STRING },
corporate_po_box: { type: DataTypes.STRING },
corporate_makani_number: { type: DataTypes.STRING },
corporate_contact_person_name: { type: DataTypes.STRING },
corporate_contact_person_designation: { type: DataTypes.STRING },
corporate_mobile_number: { type: DataTypes.STRING },
corporate_email: { type: DataTypes.STRING },
corporate_website: { type: DataTypes.STRING },
description: { type: DataTypes.TEXT },
emirati_male: DataTypes.INTEGER,
emirati_female: DataTypes.INTEGER,
non_emirati_male: DataTypes.INTEGER,
non_emirati_female: DataTypes.INTEGER,
total_emirati: DataTypes.INTEGER,
total_employees: {
type: DataTypes.INTEGER,},
is_active: {
type: DataTypes.BOOLEAN,
defaultValue: true,
},
created_at: {
type: DataTypes.DATE,
defaultValue: DataTypes.NOW,
},
created_by: {
type: DataTypes.INTEGER,
allowNull: false,
},
updated_at: {
type: DataTypes.DATE,
allowNull: true,
},
updated_by: {
type: DataTypes.INTEGER,
allowNull: true,
},
},
{
timestamps: false,
tableName: "establishments",
}
);
Establishment.associate = (models) => {
Establishment.hasMany(models.Submission, {
foreignKey: "establishment_id",
as: "establishment"
});
Establishment.hasMany(models.EstablishmentProduct, {
foreignKey: "establishment_id",
as: "establishment_products"
});
Establishment.belongsTo(models.CityTown, {
foreignKey: 'establishment_city_town_id',
as: 'establishment_city',
});
Establishment.belongsTo(models.Emirate, {
foreignKey: 'establishment_emirate_id',
as: 'establishment_emirate',
});
Establishment.belongsTo(models.CityTown, {
foreignKey: 'corporate_city_town_id',
as: 'corporate_city',
});
Establishment.belongsTo(models.Emirate, {
foreignKey: 'corporate_emirate_id',
as: 'corporate_emirate',
});
Establishment.belongsTo(models.user, {
foreignKey: "created_by",
as: "created_user",
});
};
return Establishment;
};