Nesta versão, o usuário pode inserir seu nome no terminal, bem como selecionar (escolhendo 1, 2 ou 3) seu tipo de conta. Além disso também há um setTimeout de 3s simulando um processamendo real, que não atrapalha o rl.close() pois este também possui um setTimeout de 3.1s.
Gostaria de saber o que poderia melhorar no código no geral e como eu poderia fazer uma validação do formato do nome (assim como faço com números inteiros e entradas NaN). Obrigado :)
import { createInterface } from "readline";
const processarPedido = (nomeCliente, tipoCliente, callback) => {
console.log(`Processando pedido de ${nomeCliente}...`);
setTimeout(() => {
console.log(callback(nomeCliente, tipoCliente));
}, 3000);
};
const escreverMensagem = (nomeCliente, tipoCliente) => {
if (tipoCliente === 1)
return `Bem-vindo(a), ${nomeCliente}! Aproveite um cupom de boas-vindas!`;
if (tipoCliente === 2) return `Obrigado pela sua compra, ${nomeCliente}!`;
return `Obrigado pela preferência, ${nomeCliente}! Você ganhou frete grátis.`;
};
const rl = createInterface({
input: process.stdin,
output: process.stdout,
});
rl.question("Qual seu nome?\n> ", (nomeCliente) => {
rl.question(
"Você é um cliente... \n[1]Novo\n[2]Comum\n[3]VIP\n> ",
(input) => {
const tipoCliente = Number(input);
if (tipoCliente !== 1 && tipoCliente !== 2 && tipoCliente !== 3) {
console.log("Escolha uma das 3 opções disponíveis.");
rl.close();
return;
}
processarPedido(nomeCliente, tipoCliente, escreverMensagem);
setTimeout(() => {
rl.close();
}, 3100);
},
);
});