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;
fechaAplicacion: Fecha en la que el usuario aplica a la oferta de empleo. Este campo es obligatorio.estadoAplicacion: Estado actual de la aplicación, con opciones pendiente, en proceso, aceptada y rechazada. Campo obligatorio.usuarioId: Referencia al usuario que aplica, estableciendo una relación con el modelo User.ofertaEmpleoId: Referencia a la oferta de empleo a la que se aplica, estableciendo una relación con el modelo OfertaEmpleo.tableName: 'historial_aplicaciones': Define el nombre de la tabla en la base de datos como historial_aplicaciones.timestamps: true: Activa createdAt y updatedAt para manejar fechas de creación y actualización de cada registro.User y OfertaEmpleoHistorialAplicaciones.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.