Files
citas_recorridos_api/server/db/install.js
T
Lemuel Marquez 43a1dcfa14 grupo dia hora
2021-07-11 20:06:39 -05:00

390 lines
11 KiB
JavaScript

require('../config/config');
const { Op } = require('sequelize');
const colors = require('colors');
const Carrera = require('./tablas/Carrera');
const CarreraDiaHora = require('./tablas/CarreraDiaHora');
const Dia = require('./tablas/Dia');
const DiaHora = require('./tablas/DiaHora');
const Grupo = require('./tablas/Grupo');
const GrupoDiaHora = require('./tablas/GrupoDiaHora');
const Hora = require('./tablas/Hora');
const PrimerSemestre = require('./tablas/PrimerSemestre');
const TercerSemestre = require('./tablas/TercerSemestre');
const drop = async () => {
console.log('\nPaso 1) Desinstalando la db.'.bold.blue);
await TercerSemestre.drop();
console.log('La tabla TercerSemestre se desinstalo correctamente.'.magenta);
await PrimerSemestre.drop();
console.log('La tabla PrimerSemestre se desinstalo correctamente.'.magenta);
await GrupoDiaHora.drop();
console.log('La tabla GrupoDiaHora se desinstalo correctamente.'.magenta);
await CarreraDiaHora.drop();
console.log('La tabla CarreraDiaHora se desinstalo correctamente.'.magenta);
await DiaHora.drop();
console.log('La tabla DiaHora se desinstalo correctamente.'.magenta);
await Grupo.drop();
console.log('La tabla Grupo se desinstalo correctamente.'.magenta);
await Dia.drop();
console.log('La tabla Dia se desinstalo correctamente.'.magenta);
await Hora.drop();
console.log('La tabla Hora se desinstalo correctamente.'.magenta);
await Carrera.drop();
console.log('La tabla Carrera se desinstalo correctamente.'.magenta);
};
const sync = async () => {
console.log('\nPaso 2) Instalando la db.'.bold.blue);
await Carrera.sync();
console.log('La tabla Carrera se instalo correctamente.'.magenta);
await Hora.sync();
console.log('La tabla Hora se instalo correctamente.'.magenta);
await Dia.sync();
console.log('La tabla Dia se instalo correctamente.'.magenta);
await Grupo.sync();
console.log('La tabla Grupo se instalo correctamente.'.magenta);
await DiaHora.sync();
console.log('La tabla DiaHora se instalo correctamente.'.magenta);
await CarreraDiaHora.sync();
console.log('La tabla CarreraDiaHora se instalo correctamente.'.magenta);
await GrupoDiaHora.sync();
console.log('La tabla GrupoDiaHora se instalo correctamente.'.magenta);
await PrimerSemestre.sync();
console.log('La tabla PrimerSemestre se instalo correctamente.'.magenta);
await TercerSemestre.sync();
console.log('La tabla TercerSemestre se instalo correctamente.'.magenta);
};
const data = [
{
carrera: 'ACTUARÍA',
matutino: 4,
despertino: 3,
horarioAsignado: { dia: '2021/08/12', horaInicio: '08:00' },
},
{
carrera: 'ARQUITECTURA',
matutino: 4,
despertino: 3,
horarioAsignado: { dia: '2021/08/10', horaInicio: '10:40' },
},
{
carrera: 'CIENCIAS POLÍTICAS Y ADMON. PÚBLICA',
matutino: 3,
despertino: 2,
horarioAsignado: { dia: '2021/08/12', horaInicio: '13:00' },
},
{
carrera: 'COMUNICACIÓN',
matutino: 4,
despertino: 4,
horarioAsignado: { dia: '2021/08/11', horaInicio: '08:00' },
},
{
carrera: 'DERECHO',
matutino: 9,
despertino: 9,
horarioAsignado: { dia: '2021/08/09', horaInicio: '08:00' },
},
{
carrera: 'DISEÑO GRÁFICO',
matutino: 4,
despertino: 4,
horarioAsignado: { dia: '2021/08/10', horaInicio: '08:00' },
},
{
carrera: 'ECONOMÍA',
matutino: 3,
despertino: 2,
horarioAsignado: { dia: '2021/08/13', horaInicio: '08:00' },
},
{
carrera: 'ENSEÑANZA DE INGLÉS',
matutino: 1,
despertino: 1,
horarioAsignado: { dia: '2021/08/11', horaInicio: '15:00' },
},
{
carrera: 'FILOSOFÍA',
matutino: 1,
despertino: 1,
horarioAsignado: { dia: '2021/08/11', horaInicio: '12:40' },
},
{
carrera: 'HISTORIA',
matutino: 2,
despertino: 1,
horarioAsignado: { dia: '2021/08/11', horaInicio: '14:00' },
},
{
carrera: 'INGENIERÍA CIVIL',
matutino: 3,
despertino: 2,
horarioAsignado: { dia: '2021/08/09', horaInicio: '14:00' },
},
{
carrera: 'LENGUA Y LITERATURA HISPÁNICAS',
matutino: 1,
despertino: 1,
horarioAsignado: { dia: '2021/08/11', horaInicio: '13:20' },
},
{
carrera: 'MATEMÁTICAS. APL. Y COMP. (1999)',
matutino: 4,
despertino: 4,
horarioAsignado: { dia: '2021/08/12', horaInicio: '10:20' },
},
{
carrera: 'PEDAGOGÍA',
matutino: 4,
despertino: 2,
horarioAsignado: { dia: '2021/08/11', horaInicio: '10:40' },
},
{
carrera: 'RELACIONES INTERNACIONALES',
matutino: 3,
despertino: 3,
horarioAsignado: { dia: '2021/08/10', horaInicio: '13:00' },
},
{
carrera: 'SOCIOLOGÍA',
matutino: 2,
despertino: 2,
horarioAsignado: { dia: '2021/08/13', horaInicio: '09:40' },
},
// {
// carrera: 'DERECHO (SUA)',
// matutino: 0,
// despertino: 0,
// horarioAsignado:{dia:'',horaInicio:''}
// },
// {
// carrera: 'ENSEÑANZA DE ESPAÑOL(LENG EXTRANJERA)SUA',
// matutino: 0,
// despertino: 0,
// horarioAsignado:{dia:'',horaInicio:''}
// },
// {
// carrera: 'ENSEÑANZA DE FRANCES(LENG EXTRANJERA)SUA',
// matutino: 0,
// despertino: 0,
// horarioAsignado:{dia:'',horaInicio:''}
// },
// {
// carrera: 'ENSEÑANZA DE INGLES (LENG EXTRANJERA)SUA',
// matutino: 0,
// despertino: 0,
// horarioAsignado:{dia:'',horaInicio:''}
// },
// {
// carrera: 'ENSEÑANZA DE ITALIANO(LENG EXTRANJ.)SUA',
// matutino: 0,
// despertino: 0,
// horarioAsignado:{dia:'',horaInicio:''}
// },
// {
// carrera: 'RELACIONES INTERNACIONALES (SUA)',
// matutino: 0,
// despertino: 0,
// horarioAsignado:{dia:'',horaInicio:''}
// },
];
const dataCarrera = async () => {
console.log('\nPaso 3) Instalando catalogo Carrera.'.bold.blue);
for (let i = 0; i < data.length; i++) {
await Carrera.create({ carrera: data[i].carrera });
console.log(
`Se agrego la carrera ${data[i].carrera} correctamente.`.magenta
);
}
};
const dataGrupo = async () => {
console.log('\nPaso 4) Instalando catalogo Grupo.'.bold.blue);
for (let i = 0; i < data.length; i++) {
for (let j = 1; j <= data[i].matutino; j++) {
const grupo = `110${j}`;
await Grupo.create({ grupo, idCarrera: i + 1 });
console.log(
`Se agrego el grupo ${grupo} a la carrera ${data[i].carrera} correctamente.`
.magenta
);
}
console.log();
for (let j = 1; j <= data[i].despertino; j++) {
const grupo = `115${j}`;
await Grupo.create({ grupo, idCarrera: i + 1 });
console.log(
`Se agrego el grupo ${grupo} a la carrera ${data[i].carrera} correctamente.`
.magenta
);
}
console.log();
for (let j = 1; j <= data[i].matutino; j++) {
const grupo = `220${j}`;
await Grupo.create({ grupo, idCarrera: i + 1 });
console.log(
`Se agrego el grupo ${grupo} a la carrera ${data[i].carrera} correctamente.`
.magenta
);
}
console.log();
for (let j = 1; j <= data[i].despertino; j++) {
const grupo = `225${j}`;
await Grupo.create({ grupo, idCarrera: i + 1 });
console.log(
`Se agrego el grupo ${grupo} a la carrera ${data[i].carrera} correctamente.`
.magenta
);
}
console.log('\n');
}
};
const dataHora = async () => {
let horaInicio = 8;
let minutoInicio = 0;
const horaFin = 15;
const minutoFin = 20;
let parar = false;
console.log('\nPaso 5) Instalando catalogo Hora.'.bold.blue);
while (!parar) {
const hora = `${horaInicio < 10 ? '0' + horaInicio : horaInicio}:${
minutoInicio < 10 ? '0' + minutoInicio : minutoInicio
}`;
await Hora.create({ hora });
console.log(`Se agrego la hora ${hora} correctamente.`.magenta);
if (horaInicio === horaFin && minutoInicio === minutoFin) parar = true;
else {
minutoInicio += 20;
if (minutoInicio == 60) {
horaInicio++;
minutoInicio = 0;
}
}
}
};
const dataDia = async () => {
let diaInicio = 2;
const diaFin = 13;
const finSemana = [7, 8];
let parar = false;
console.log('\nPaso 6) Instalando catalogo Dia.'.bold.blue);
while (!parar) {
let saltar = false;
for (let i = 0; i < finSemana.length; i++)
if (finSemana[i] === diaInicio) saltar = true;
if (!saltar) {
const dia = `2021/08/${diaInicio < 10 ? '0' + diaInicio : diaInicio}`;
await Dia.create({ dia });
console.log(`Se agrego el dia ${dia} correctamente.`.magenta);
}
if (diaInicio === diaFin) parar = true;
else diaInicio++;
}
};
const dataDiaHora = async () => {
const dias = await Dia.findAll().then((res) => res.length);
const horas = await Hora.findAll().then((res) => res.length);
console.log('\nPaso 7) Instalando catalogo DiaHora.'.bold.blue);
for (let i = 1; i <= dias; i++) {
for (let j = 1; j <= horas; j++) {
await DiaHora.create({ idDia: i, idHora: j });
console.log(
`Se agrego el diaHora con idDia: ${i} y idHora: ${j} correctamente.`
.magenta
);
}
console.log();
}
};
const dataGrupoDiaHora = async () => {
console.log('\nPaso 8) Instalando catalogo GrupoDiaHora.'.bold.blue);
for (let i = 0; i < data.length; i++) {
const gruposCarrera = await Grupo.findAll({
where: { grupo: { [Op.like]: '22%' }, idCarrera: i + 1 },
});
let idDiaHora = await DiaHora.findOne({
include: [
{ model: Dia, where: { dia: data[i].horarioAsignado.dia } },
{ model: Hora, where: { hora: data[i].horarioAsignado.horaInicio } },
],
}).then((res) => res.idDiaHora);
for (let j = 0; j < gruposCarrera.length; j++) {
await GrupoDiaHora.create({
idDiaHora,
idGrupo: gruposCarrera[j].idGrupo,
})
.then((res) =>
GrupoDiaHora.findOne({
where: { idGrupoDiaHora: res.idGrupoDiaHora },
include: [
{ model: Grupo, include: [{ model: Carrera }] },
{ model: DiaHora, include: [{ model: Dia }, { model: Hora }] },
],
})
)
.then((res) => {
console.log(
`Se le asigno al grupo ${res.Grupo.grupo} de la carrera ${res.Grupo.Carrera.carrera} el horario ${res.DiaHora.Dium.dia} ${res.DiaHora.Hora.hora}`
.magenta
);
idDiaHora++;
});
}
console.log();
}
};
const exe = async () => {
await drop();
await sync();
await dataCarrera();
await dataGrupo();
await dataHora();
await dataDia();
await dataDiaHora();
await dataGrupoDiaHora();
console.log(
'\nSe ha instalado exitosamente la base de datos.\n'.underline.bold.green
);
process.exit();
};
exe();