menu-usuario-pantoja
Version:
Prueba Javascript
69 lines (58 loc) • 2.52 kB
JavaScript
const menu = require('./menu')
const prompts = require('prompts')
const archivo = require('./gestionDeArchivos')
const datosBusqueda = require('./datosBusqueda');
const datosPersonas = require('./datosPersonas');
const {of} = require('rxjs');
const {filter} = require('rxjs/operators');
async function elegirOpcion(){
const opcion = await prompts(menu.opcionesPrincipales);
const nombresPersonas = await archivo.leer('personas.json', 'UTF-8');
ejecutarOperacion(operacionesDelMenu[opcion.value[0]],JSON.parse(nombresPersonas.informacion));
}
elegirOpcion();
async function tomarInformacion(tipoDeInformacion){
return await prompts(tipoDeInformacion);
};
const operacionesDelMenu = {
listar : (nombresPersonas) => {
const hayDatosDePersonas = nombresPersonas.length > 0;
if(hayDatosDePersonas){
nombresPersonas.forEach((persona,indice) =>{
console.log(`${indice + 1}. ${persona.nombre} ${persona.apellido}`);
});}else{
console.log('No hay Datos');
}
elegirOpcion();
},
ingresar : async (nombresPersonas) =>{
const nombreIngresado = await tomarInformacion(datosPersonas);
const hayDatos = nombreIngresado.nombre && nombreIngresado.apellido;
if(hayDatos) {
//console.log(nombresPersonas.informacion);
const nuevaInfo = await nombresPersonas.informacion + " " + nombreIngresado.nombre + " " + nombreIngresado.apellido + "*";
//console.log('nuevainfo',nuevaInfo);
nombresPersonas.push({nombre: nombreIngresado.nombre, apellido: nombreIngresado.apellido});
await archivo.escribir('personas.json', JSON.stringify(nombresPersonas,null, 2) );
//
}
elegirOpcion();
},
buscar: async (nombresPersonas)=>{
const datosPorBuscar = await tomarInformacion(datosBusqueda);
console.log(datosPorBuscar);
const busqueda$ = of(...nombresPersonas)
.pipe(
filter((valor) => valor.nombre.search(new RegExp(datosPorBuscar.buscar)) === 0 || valor.apellido.search(new RegExp(datosPorBuscar.buscar)) === 0 )
).subscribe((resultado) => {
console.log(resultado.nombre,resultado.apellido);
}, (error) => {
console.log(error);
})},
salir: async () => {
console.log('Adios!');
await process.exit(0);}
};
function ejecutarOperacion(operacion,nombresPersonas){
return operacion(nombresPersonas);
}