menu-usuario-pantoja
Version:
Prueba Javascript
105 lines (87 loc) • 3.1 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 prompts = require('prompts');
const menu= require('./menu');
const datosPersonas = require('./datosPersonas');
const archivo = require('./gestionDeArchivos');
const prompts = require('prompts');
const nombresPersonas = [/*{nombre: 'Andres', apellido: 'Pantoja'}*/];
const opcionesPrincipales = {
type: 'multiselect',
name: 'value',
message: '(Ctrl+C para volver al menu) Opcion elegida',
choices: [
{ title: 'Ingresar Datos Personales', value: 'ingresar', selected: true },
{ title: 'Listar Datos Peronales', value: 'listar' },
{ title: 'Salir', value: 'salir' }
],
max: 1,
hint: '- Espacio para seleccionar. Enter para aceptar. Ctrl+C para salir'
}
async function elegirOpcion(){
const opcion = await prompts(opcionesPrincipales);
operacionesDelMenu(opcion.value[0],nombresPersonas);
}
const nombre = [
{
type: 'text',
name: 'nombre',
message: 'Ingrese el nombre'
},
{
type: 'text',
name: 'apellido',
message: 'Ingrese el apellido'
},
];
async function tomarNombre(){
return await prompts(nombre);
};
elegirOpcion();
//Promesas
function operacionesDelMenu(operacion, nombresPersonas){
switch(operacion){
case 'listar':
return new Promise ((resolve,reject)=>{
const hayDatosDePersonas = nombresPersonas.length > 0;
if(hayDatosDePersonas){
resolve(nombresPersonas)
}else {
reject('No hay Datos');
}
}).then((nombresPersonas) => {
nombresPersonas.forEach((persona,indice) =>{
console.log(`${indice + 1}. ${persona.nombre} ${persona.apellido}`);
});
elegirOpcion();
}).catch((mensajeDeError) => {
console.log(mensajeDeError);
elegirOpcion();
});
case 'ingresar':
return new Promise(async (resolve, reject) => {
const nombreIngresado = await tomarNombre();
const hayDatos = nombreIngresado.nombre && nombreIngresado.apellido;
if(hayDatos) {
resolve(nombreIngresado);
}else{
reject('No hay Datos');
}
}).then((nombreIngresado) => {
nombresPersonas.push({nombre: nombreIngresado.nombre, apellido: nombreIngresado.apellido})
elegirOpcion();
}).catch((mensajeDeError) => {
console.log(mensajeDeError);
elegirOpcion();
});
case 'salir':
console.log('Adios!');
process.exit(0);
}
}