module.exports = (sequelize, DataTypes) => { const Establishment = sequelize.define( "establishments", { id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true, }, establishment_code: { type: DataTypes.STRING, allowNull: false, }, factory_name: { type: DataTypes.STRING, allowNull: false, }, permanent_factory_code: { type: DataTypes.STRING, }, industry_code: { type: DataTypes.STRING, }, license_number: { type: DataTypes.STRING, }, isic_code: { type: DataTypes.STRING, }, // 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 }, establishment_website: { 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: true, }, 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.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; };