-
Notifications
You must be signed in to change notification settings - Fork 0
/
script2.js
118 lines (113 loc) · 3.92 KB
/
script2.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
class Producto {
constructor(nombre, tipo, precio) {
this._nombre = nombre;
this._tipo = tipo;
this._precio = precio;
this._cantidad = 0;
}
get nombre(){
return this._nombre.toUpperCase();
}
set nombre(nuevoNombre){
this._nombre = nuevoNombre;
}
get cantidad(){
return this._cantidad;
}
get precio(){
return this._precio
}
get cantidad(){
return this._cantidad
}
get tipo(){
return this._tipo;
}
aumentarCantidad() {
this._cantidad++;
}
calcularTotal() {
return this._precio * this._cantidad;
}
}
let productosDisponibles = [
new Producto("Fideos", 1, 850),
new Producto("Aceite", 1, 2500),
new Producto("Arroz", 1, 990),
new Producto("Azúcar", 1, 1200),
new Producto("Manzanas", 2, 1200),
new Producto("Peras", 2, 850),
new Producto("Uvas", 2, 2500),
new Producto("Frutillas", 2, 4500),
new Producto("Lechuga", 3, 1000),
new Producto("Pimentón", 3, 250),
new Producto("Zanahoria", 3, 850),
new Producto("Cebolla", 3, 1500),
new Producto("Cloro", 4, 1500),
new Producto("Lavalozas", 4, 2500),
new Producto("Detergente", 4, 8500),
new Producto("Suavizante", 4, 4500)
];
let productosLista = [];
const agregarALista = (productoSeleccionado) => {
let index = productosLista.findIndex(producto => producto.nombre === productoSeleccionado.nombre.toUpperCase());
if (index > -1) {
productosLista[index].aumentarCantidad()
} else {
productoSeleccionado.aumentarCantidad();
productosLista.push(productoSeleccionado);
}
};
const mostrarListaDeCompras = () => {
let listaDeCompras = "Su lista de compras es:\n";
let totalCompra = 0;
if (productosLista.length === 0) {
listaDeCompras = "Su lista de compras está vacía";
return listaDeCompras;
}
productosLista.forEach(producto => {
const cantidad = producto.cantidad;
if (cantidad > 0) {
const total = producto.calcularTotal();
listaDeCompras += `* ${cantidad} ${producto.nombre} Total: $${total}\n`;
totalCompra += total;
}
});
listaDeCompras += `TOTAL DE LA LISTA DE COMPRAS: $${totalCompra}`;
return listaDeCompras;
};
const imprimirOpciones = opcion => {
let texto = `Escriba el producto a agregar a su lista de compras:\n`;
const productosFiltrados = productosDisponibles.filter(producto => producto.tipo === opcion);
productosFiltrados.forEach((producto, index) => {
texto += `* ${producto.nombre} (precio por unidad: $${producto.precio})\n`;
});
texto += `* Salir`;
return texto;
};
let deseaSeguir = prompt("Bienvenido a tu lista de compras, ¿deseas agregar algo? (si/no)");
if (deseaSeguir.toLowerCase() === "si") {
let opcion = 0;
let opcionNumber = 0;
while (opcionNumber !== 5) {
let opcion = prompt("Seleccione la opción que desea:\n1-Abarrotes\n2-Frutas\n3-Verduras\n4-Limpieza\n5-Salir");
opcionNumber = parseInt(opcion);
let opciones = "";
if (isNaN(opcionNumber)) {
alert("Debe ingresar el valor numérico de su opción");
opcionNumber = 0;
} else if (opcionNumber >= 1 && opcionNumber < 5) {
while (opciones.toUpperCase() !== 'SALIR') {
let texto = imprimirOpciones(opcionNumber);
opciones = prompt(texto);
if (opciones === "") {
alert("Debe ingresar el nombre de lo que desea agregar");
} else if (opciones.toUpperCase() !== 'SALIR'){
let productoSeleccionado = productosDisponibles.find(producto => producto.nombre === opciones.toUpperCase());
(productoSeleccionado)?agregarALista(productoSeleccionado):alert("Ingrese una opción válida");
}
}
}
}
alert(mostrarListaDeCompras());
}else if(deseaSeguir.toLowerCase() !== "no")location.reload();