125 lines
4.4 KiB
JavaScript
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;
|
|
};
|
|
|