El modelo HistorialAplicaciones registra el historial de aplicaciones de los usuarios a ofertas de empleo en Matchify. Incluye información sobre la fecha de aplicación, el estado actual de la aplicación, y las relaciones con el usuario y la oferta de empleo correspondientes.

import { DataTypes } from 'sequelize';
import sequelize from '../config/database.js';
import User from './User.js';
import OfertaEmpleo from './OfertaEmpleo.js';

const HistorialAplicaciones = sequelize.define('HistorialAplicaciones', {
    fechaAplicacion: {
        type: DataTypes.DATE,
        allowNull: false,
    },
    estadoAplicacion: {
        type: DataTypes.ENUM('pendiente', 'en proceso', 'aceptada', 'rechazada'),
        allowNull: false,
    },
    usuarioId: {
        type: DataTypes.INTEGER,
        references: {
            model: User,
            key: 'id',
        },
        onUpdate: 'CASCADE',
        onDelete: 'CASCADE',
    },
    ofertaEmpleoId: {
        type: DataTypes.INTEGER,
        references: {
            model: OfertaEmpleo,
            key: 'id',
        },
        onUpdate: 'CASCADE',
        onDelete: 'CASCADE',
    },
}, {
    tableName: 'historial_aplicaciones',
    timestamps: true,
});

HistorialAplicaciones.belongsTo(User, { foreignKey: 'usuarioId', as: 'usuario' });
HistorialAplicaciones.belongsTo(OfertaEmpleo, { foreignKey: 'ofertaEmpleoId', as: 'ofertaEmpleo' });

export default HistorialAplicaciones;

Explicación de cada propiedad

  1. fechaAplicacion: Fecha en la que el usuario aplica a la oferta de empleo. Este campo es obligatorio.
  2. estadoAplicacion: Estado actual de la aplicación, con opciones pendiente, en proceso, aceptada y rechazada. Campo obligatorio.
  3. usuarioId: Referencia al usuario que aplica, estableciendo una relación con el modelo User.
  4. ofertaEmpleoId: Referencia a la oferta de empleo a la que se aplica, estableciendo una relación con el modelo OfertaEmpleo.

Configuración del modelo

Asociaciones con User y OfertaEmpleo

HistorialAplicaciones.belongsTo(User, { foreignKey: 'usuarioId', as: 'usuario' });
HistorialAplicaciones.belongsTo(OfertaEmpleo, { foreignKey: 'ofertaEmpleoId', as: 'ofertaEmpleo' });

Establece que cada HistorialAplicaciones pertenece a un Usuario y a una OfertaEmpleo, permitiendo un seguimiento detallado del proceso de aplicación de cada usuario a ofertas de empleo específicas en Matchify.

Este modelo facilita la administración y seguimiento del historial de aplicaciones, manteniendo el estado actualizado para cada proceso de selección.