Skip to content

Commit 0ce53ec

Browse files
authored
Merge pull request mouredev#7590 from victor-Casta/[email protected]
#19 - TypeScript
2 parents 95c5d51 + 5e7718c commit 0ce53ec

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
enum DaysOfTheWeek {
2+
MONDAY = 1,
3+
TUESDAY = 2,
4+
WEDNESDAY = 3,
5+
THURSDAY = 4,
6+
FRIDAY = 5,
7+
SATURDAY = 6,
8+
SUNDAY = 7
9+
}
10+
11+
const getDay: (number: number) => string = (number: number) => {
12+
return DaysOfTheWeek[number]
13+
}
14+
15+
console.log(getDay(1))
16+
17+
18+
/*
19+
* Extra
20+
*/
21+
22+
23+
enum DeliveryStatus {
24+
PENDING,
25+
SHIPPED,
26+
DELIVERED,
27+
CANCELLED
28+
}
29+
30+
class OrderSystem {
31+
id: number
32+
status: DeliveryStatus
33+
nameOfOrder: string
34+
35+
constructor(id: number, nameOfOrder: string) {
36+
this.id = id
37+
this.status = DeliveryStatus.PENDING
38+
this.nameOfOrder = nameOfOrder
39+
}
40+
41+
orderShipped() {
42+
if (this.status !== DeliveryStatus.PENDING) {
43+
console.log(`El pedido "${this.nameOfOrder}" ya se ha enviado o cancelado`)
44+
return
45+
}
46+
this.status = DeliveryStatus.SHIPPED
47+
console.log(`El pedido "${this.nameOfOrder}" ha sido enviado`)
48+
}
49+
50+
orderCancelled() {
51+
if (this.status === DeliveryStatus.SHIPPED) {
52+
console.log(`El pedido "${this.nameOfOrder}" no se puede cancelar porque ya se ha enviado`)
53+
return
54+
}
55+
if (this.status === DeliveryStatus.CANCELLED) {
56+
console.log(`El pedido "${this.nameOfOrder}" ya se encuentra cancelado`)
57+
return
58+
}
59+
if (this.status === DeliveryStatus.DELIVERED) {
60+
console.log(`El pedido "${this.nameOfOrder}" no se puede cancelar porque ya se ha entregado`)
61+
return
62+
}
63+
this.status = DeliveryStatus.CANCELLED
64+
console.log(`El pedido "${this.nameOfOrder}" ha sido cancelado`)
65+
}
66+
67+
orderDelivered() {
68+
if (this.status === DeliveryStatus.CANCELLED) {
69+
console.log(`El pedido "${this.nameOfOrder}" no se puede entregar porque ha sido cancelado`)
70+
return
71+
}
72+
if (this.status === DeliveryStatus.PENDING) {
73+
console.log(`El pedido "${this.nameOfOrder}" aún no se ha enviado`)
74+
return
75+
}
76+
this.status = DeliveryStatus.DELIVERED
77+
console.log(`El pedido "${this.nameOfOrder}" ha sido entregado`)
78+
}
79+
80+
actualStateOfOrder() {
81+
const statusMap = {
82+
[DeliveryStatus.PENDING]: 'Pendiente',
83+
[DeliveryStatus.SHIPPED]: 'Enviado',
84+
[DeliveryStatus.DELIVERED]: 'Entregado',
85+
[DeliveryStatus.CANCELLED]: 'Cancelado'
86+
}
87+
console.log(`El estado actual del pedido "${this.nameOfOrder}" es: ${statusMap[this.status]}`)
88+
}
89+
}
90+
91+
const burguerOrder = new OrderSystem(1, 'Burguer Max')
92+
burguerOrder.actualStateOfOrder()
93+
burguerOrder.orderShipped()
94+
burguerOrder.actualStateOfOrder()
95+
burguerOrder.orderDelivered()
96+
burguerOrder.actualStateOfOrder()
97+
98+
const iceCreamOrder = new OrderSystem(2, 'Ice cream')
99+
iceCreamOrder.actualStateOfOrder()
100+
iceCreamOrder.orderShipped()
101+
iceCreamOrder.orderCancelled()
102+
iceCreamOrder.actualStateOfOrder()
103+
iceCreamOrder.orderDelivered()
104+
iceCreamOrder.actualStateOfOrder()

0 commit comments

Comments
 (0)