menu-usuario-perez
Version:
paquete para gestionar estudiantes
164 lines (138 loc) • 5.79 kB
JavaScript
const prompts = require('prompts');
const {of, from} = require('rxjs')
const {map, mergeMap} = require('rxjs/operators')
const {leerArchivo, escribirArchivo} = require('./files')
const {obtenerMateriasFavoritas, obternerPersonasActivas, obternerPersonasInactivas, obtenerPersonasEntreUnRangoDeEdad, buscarPersonaPorId} = require('./operaciones')
const desicionContinuar = [
{
type: 'toggle',
name: 'continuar',
message: 'Continuar?',
initial: true,
active: 'yes',
inactive: 'no'
}
];
const preguntaBuscar = [
{
type: 'text',
name: '_id',
message: 'Ingrese el id:'
}
]
const datosPersona = [
{
type: 'text',
name: '_id',
message: 'Ingrese el id:'
},
{
type: 'text',
name: 'name',
message: 'Ingrese el nombre:'
},
]
const desicionGuardarArchivo = [
{
type: 'toggle',
name: 'guardar',
message: 'Guardar en un archivo los resultados?',
initial: true,
active: 'yes',
inactive: 'no'
}
];
const nombreArchivo = [
{
type: 'text',
name: 'nombreArchivo',
message: 'Ingrese el nombre con el que desea guardar el archivo:'
}]
const rangoDeEdades = [
{
type: 'number',
name: 'limiteInferior',
message: 'Ingrese el límite inferior',
validate: value => (value > 19 && value < 41) ? true : 'edades entre 20 y 40 permitidas'
},
{
type: 'number',
name: 'limiteSuperior',
message: 'Ingrese el límite superior',
validate: value => (value > 19 && value < 41) ? true : 'edades entre 20 y 40 permitidas'
}
]
const menu = [
{
type: 'select',
name: 'value',
message: 'Escoja una opción',
choices: [
{title: 'Generar Reporte de materias Favoritas de los estudiantes', value: '1'},
{title: 'Generar reporte de personas activas', value: '2'},
{title: 'Generar reporte de personas inactivas', value: '3'},
{title: 'Filtrar personas por rango de edad', value: '4'},
{title: 'Buscar personapor id', value: '5'},
{title: 'Agregar Persona', value: '6'}
],
initial: 0
}];
let continuar = true;
(async () => {
while (continuar === true) {
const personas = await leerArchivo('datos.txt', 'utf8');
const arregloPersonas = JSON.parse(personas);
const seleccionado = await prompts(menu);
switch (Number(seleccionado.value)) {
case 1:
const resMateriasFavoritas = await escribirArchivo('materias.txt', obtenerMateriasFavoritas(arregloPersonas))
console.log('resultado escritura Materias favoritas: ', resMateriasFavoritas)
break;
case 2:
const resPersonasActivas = await escribirArchivo('estudiantes-activos.txt', obternerPersonasActivas(arregloPersonas))
console.log('resultado escritura Estudiantes activos:', resPersonasActivas)
break;
case 3:
const resPersonasInactivas = await escribirArchivo('estudiantes-inactivos.txt', obternerPersonasInactivas(arregloPersonas));
console.log('resultado escritura Estudiantes Inactivos:', resPersonasInactivas);
break;
case 4:
const edades = await prompts(rangoDeEdades);
const personasEnELRangoDeEdades = obtenerPersonasEntreUnRangoDeEdad(arregloPersonas, edades.limiteInferior, edades.limiteSuperior);
console.log(personasEnELRangoDeEdades);
const guardarArchivo = await prompts(desicionGuardarArchivo);
if (guardarArchivo.guardar) {
const nombreDelArchivo = await prompts(nombreArchivo);
const resGuardarPersonasRangoDeEdades = await escribirArchivo(nombreDelArchivo.nombreArchivo, personasEnELRangoDeEdades)
console.log('resultado escritura Estudiantes en rango de edad:', resGuardarPersonasRangoDeEdades)
}
break;
case 5:
const personaABuscar = await prompts(preguntaBuscar);
const personasEncontradas = buscarPersonaPorId(personaABuscar._id, arregloPersonas);
console.log(personasEncontradas)
const guardarArchivoEncontrados = await prompts(desicionGuardarArchivo);
if (guardarArchivoEncontrados.guardar) {
const nombreDelArchivo = await prompts(nombreArchivo);
const resGuardarPersonasEncontradas = await escribirArchivo(nombreDelArchivo.nombreArchivo, JSON.stringify(personasEncontradas, null))
console.log('resultado escritura Personas Encontradas:', resGuardarPersonasEncontradas)
}
break;
case 6:
const persona = await prompts(datosPersona);
personaInsertar = {}
personaInsertar._id = persona._id;
personaInsertar.name = persona.name;
arregloPersonas.push(personaInsertar);
const actualizarArchivo = await prompts(desicionGuardarArchivo);
console.log(arregloPersonas);
if (actualizarArchivo.guardar) {
const resGuardarNuevaPersona = await escribirArchivo('datos.txt', JSON.stringify(arregloPersonas, null))
console.log('Resultado guardar persona: ', resGuardarNuevaPersona);
}
break;
}
const seguir = await prompts(desicionContinuar);
continuar = seguir.continuar;
}
})();