menu-usuario-pantoja
Version:
Prueba Javascript
73 lines (54 loc) • 2.17 kB
JavaScript
//Hacer un programa que pida usar un nombre y que desea,
/*
ver lista de usuarios o registrar usuario
Para listar los usuarios se usa un json con nombre y apellido del usuario
Despues de registrar o listar vuelve al menu principal
Esto se hace con callbacks y luego con promesas
Siempre se debe ignorar el nodemodules
*/
const menu= require('./menu');
const datosPersonas = require('./datosPersonas');
const archivo = require('./gestionDeArchivos');
const prompts = require('prompts');
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));
}
async function tomarNombre(){
return await prompts(datosPersonas);
};
//Callbacks
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 tomarNombre();
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();
},
salir: async () => {
console.log('Adios!');
await process.exit(0);}
};
function ejecutarOperacion(operacion,nombresPersonas){
return operacion(nombresPersonas);
}
elegirOpcion();
//Promesas