UNPKG

menu-usuario-perez

Version:

paquete para gestionar estudiantes

164 lines (138 loc) 5.79 kB
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; } })();