Skip to content

Commit dd1bd70

Browse files
#19 - javascript
1 parent 532c5e4 commit dd1bd70

File tree

1 file changed

+126
-0
lines changed

1 file changed

+126
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
/*
2+
* EJERCICIO:
3+
* Empleando tu lenguaje, explora la definición del tipo de dato
4+
* que sirva para definir enumeraciones (Enum).
5+
* Crea un Enum que represente los días de la semana del lunes
6+
* al domingo, en ese orden. Con ese enumerado, crea una operación
7+
* que muestre el nombre del día de la semana dependiendo del número entero
8+
* utilizado (del 1 al 7).
9+
*
10+
* DIFICULTAD EXTRA (opcional):
11+
* Crea un pequeño sistema de gestión del estado de pedidos.
12+
* Implementa una clase que defina un pedido con las siguientes características:
13+
* - El pedido tiene un identificador y un estado.
14+
* - El estado es un Enum con estos valores: PENDIENTE, ENVIADO, ENTREGADO y CANCELADO.
15+
* - Implementa las funciones que sirvan para modificar el estado:
16+
* - Pedido enviado
17+
* - Pedido cancelado
18+
* - Pedido entregado
19+
* (Establece una lógica, por ejemplo, no se puede entregar si no se ha enviado, etc...)
20+
* - Implementa una función para mostrar un texto descriptivo según el estado actual.
21+
* - Crea diferentes pedidos y muestra cómo se interactúa con ellos.
22+
*/
23+
24+
const diasDeLaSemana = Object.freeze({
25+
LUNES: 1,
26+
MARTES: 2,
27+
MIERCOLES: 3,
28+
JUEVES: 4,
29+
VIERNES: 5,
30+
SABADO: 6,
31+
DOMINGO: 7,
32+
});
33+
34+
const getDayFromNumber = (number) => {
35+
let day = Object.keys(diasDeLaSemana).find(
36+
(key) => diasDeLaSemana[key] === number
37+
);
38+
console.log(day);
39+
};
40+
41+
getDayFromNumber(2);
42+
43+
console.log("---------------DIFICULTAD EXTRA----------------");
44+
45+
const statusEnum = Object.freeze({
46+
PENDIENTE: 0,
47+
ENVIADO: 1,
48+
ENTREGADO: 2,
49+
CANCELADO: 4,
50+
});
51+
52+
class Order {
53+
constructor(id, state) {
54+
this.id = id;
55+
this.status = state;
56+
}
57+
58+
order() {
59+
this.status = statusEnum.PENDIENTE;
60+
console.log("El pedido se ha creado con id: ", this.id);
61+
}
62+
63+
send() {
64+
if (!this.checkIsCanceled('enviar')) {
65+
return false;
66+
} else if (this.status === 0) {
67+
console.log("El pedido se está enviando");
68+
this.status = statusEnum.ENVIADO;
69+
} else if (this.status === statusEnum.ENVIADO) {
70+
console.log("El pedido ya se ha enviado o ha sido cancelado");
71+
} else {
72+
console.log("No se puede enviar un envío inexistente");
73+
}
74+
}
75+
76+
deliver() {
77+
if (!this.checkIsCanceled('entregar')) {
78+
return false;
79+
} else if (this.status > 2) {
80+
this.status = statusEnum.ENTREGADO;
81+
console.log("El pedido se está entregando");
82+
} else {
83+
console.log(
84+
"No se puede entregar un envío que no se ha creado y/o mandado"
85+
);
86+
}
87+
}
88+
89+
cancel() {
90+
if (this.status < 2) {
91+
this.status = statusEnum.CANCELADO;
92+
console.log("El pedido se ha cancelado");
93+
} else {
94+
console.log(
95+
"No se puede entregar un envío que no se ha creado y/o mandado"
96+
);
97+
}
98+
}
99+
100+
checkStatus() {
101+
console.log(
102+
"El estado del pedido es: ",
103+
Object.keys(statusEnum).find((key) => statusEnum[key] === this.status)
104+
);
105+
}
106+
107+
checkIsCanceled(operacion) {
108+
if (this.status === statusEnum.CANCELADO) {
109+
console.log("El pedido ha sido cancelado, no se puede realizar la operación: ", operacion);
110+
return false;
111+
}
112+
return true;
113+
}
114+
}
115+
116+
const order1 = new Order('001');
117+
order1.order();
118+
order1.checkStatus();
119+
order1.send();
120+
order1.checkStatus();
121+
122+
const order2 = new Order('002');
123+
order2.order();
124+
order2.checkStatus();
125+
order2.cancel();
126+
order2.send();

0 commit comments

Comments
 (0)