const { DataTypes } = require('sequelize');

module.exports = (sequelize) => {
  const ContactPerson = sequelize.define('ContactPerson', {
    name: {
      type: DataTypes.STRING,
      allowNull: false
    },
    phone: {
      type: DataTypes.STRING,
      allowNull: true
    },
    street: {
      type: DataTypes.STRING,
      allowNull: true
    },
    zipcode: {
      type: DataTypes.STRING,
      allowNull: true
    },
    city: {
      type: DataTypes.STRING,
      allowNull: true
    },
    email: {
      type: DataTypes.STRING,
      allowNull: true
    },
    expiryDate: {
      type: DataTypes.DATEONLY,
      allowNull: true
    }
  }, {
    tableName: 'contact_persons',
    timestamps: false
  });

  ContactPerson.associate = function(models) {
    ContactPerson.belongsToMany(models.Event, {
      through: models.EventContactPerson,
      foreignKey: 'contact_person_id',
      otherKey: 'event_id',
      as: 'events'
    });
    ContactPerson.belongsToMany(models.Position, {
      through: models.ContactPersonPosition,
      foreignKey: 'contact_person_id',
      otherKey: 'position_id',
      as: 'positions'
    });
    ContactPerson.belongsToMany(models.Institution, {
      through: models.InstitutionContactPerson,
      foreignKey: 'contact_person_id',
      otherKey: 'institution_id',
      as: 'institutions'
    });
  };

  return ContactPerson;
};
