-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
185 lines (150 loc) · 6.28 KB
/
server.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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
const path = require('path')
const http = require('http')
const express = require('express')
const socketIO = require('socket.io')
const app = express()
const server = http.createServer(app)
const io = socketIO(server)
const {generateMessage } = require('./public/generate')
const publicPath = path.join(__dirname,"./public")
const {Users} = require('./users')
let users = new Users
app.use(express.static(publicPath))
// menu list
let menuList = [
{
number: 2,
meal:'Eba and Ewedu',
price:2000,
},
{
number:3,
meal:'Rice and Stew',
price:4000
},
{
number:4,
meal:'Egusi and Pounded yam',
price:5000
},
{
number:5,
meal:'Efo and Snails',
price:6000
}
]
// set of instructions
let instructions = [
'Enter 1 to Place Order',
'Enter 97 to check Current Order',
'Enter 98 to check Order History',
'Enter 99 to CheckOut Order',
'Enter 0 to Cancel Order'
]
io.on('connection', (socket)=>{
// listens to receieve client name
socket.on('clientName', (username)=>{
users.addUser(socket.id,username)
// server sends welcome message
socket.emit('joinMessage',generateMessage('ChatBot', `Welcome ${username}`))
// sends set of instruction
socket.emit('instructionList',generateMessage('ChatBot', instructions))
})
//listens to receive input
socket.on('inputMessage', (message)=>{
// gets user with specific id
let user = users.getUser(socket.id)
if(message === '1'){
// emits clients request
socket.emit('clientMessage', generateMessage(user.name,'Place Order'))
// emits menulist
socket.emit('menuList', generateMessage('ChatBot',menuList) )
user.seenMenuList = 'yes'
return user
}
// to checkout order
else if(message === '99'){
if(user.currentOrder.length == 0){
socket.emit('clientMessage', generateMessage(user.name,'Checkout My Order'))
socket.emit('serverMessage', generateMessage('ChatBot','You are yet to make any Order'))
return
}
socket.emit('clientMessage', generateMessage(user.name,'Checkout My Order'))
// adds current order prices
let price = user.currentOrder.map((pa) =>{ return pa.price})
const initialValue = 0;
const totalCurrentPrice = price.reduce(
(accumulator, currentValue) => accumulator + currentValue,
initialValue
);
socket.emit('serverMessage', generateMessage('ChatBot',`Order Checked Out,Your bill is ${totalCurrentPrice}`))
socket.emit('mealOrdered', generateMessage('ChatBot',user.currentOrder))
socket.emit('instructionList',generateMessage('ChatBot', instructions))
users.addOrderToHistory(socket.id)
users.deleteCurrentOrder(socket.id)
user.seenMenuList = 'No'
}
// request for history order
else if(message === '98'){
if(user.orderHistory.length == 0){
socket.emit('clientMessage', generateMessage(user.name,'My Order History'))
socket.emit('serverMessage', generateMessage('ChatBot','Your Order History list is empty'))
return
}
socket.emit('clientMessage', generateMessage(user.name,'My Order History'))
socket.emit('serverMessage', generateMessage('ChatBot','Order History'))
socket.emit('mealOrdered', generateMessage('ChatBot',user.orderHistory))
}
// request for current order
else if(message === '97'){
if(user.currentOrder.length == 0){
socket.emit('clientMessage', generateMessage(user.name,'My Current Order'))
socket.emit('serverMessage', generateMessage('ChatBot','Your current order list is empty'))
return
}
socket.emit('clientMessage', generateMessage(user.name,'My Current Order'))
socket.emit('mealOrdered', generateMessage('ChatBot',user.currentOrder))
}
// request to cancel order
else if(message === '0'){
if(user.currentOrder.length == 0){
socket.emit('clientMessage', generateMessage(user.name,'Cancel Order'))
socket.emit('serverMessage', generateMessage('ChatBot','Your current order list is empty'))
return
}
socket.emit('clientMessage', generateMessage(user.name,'Cancel Order'))
socket.emit('menuList', generateMessage('ChatBot',user.currentOrder))
socket.emit('serverMessage', generateMessage('ChatBot','Order cancelled'))
socket.emit('instructionList',generateMessage('ChatBot', instructions))
users.deleteCurrentOrder(socket.id)
}
else{
// to check if the client placed an order
if(user.seenMenuList == 'No'){
socket.emit('clientMessage', generateMessage(user.name,message))
socket.emit('serverMessage', generateMessage('ChatBot','Wrong Command'))
return
}
let mealnumber = parseInt(message)
let meal = menuList.filter(user => user.number === mealnumber )
// console.log(meal)
if(meal.length !== 0){
// adds to current order
users.addCurrentOrder(socket.id,meal[0])
socket.emit('clientMessage', generateMessage(user.name,`MenuList Number - ${mealnumber}`))
socket.emit('serverMessage', generateMessage('ChatBot','You Ordered'))
socket.emit('mealOrdered', generateMessage('ChatBot',meal))
}
else{
socket.emit('clientMessage', generateMessage(user.name,`MenuList Number - ${mealnumber}`))
socket.emit('serverMessage', generateMessage('ChatBot','Not In The MenuList'))
}
}
} )
socket.on('disconnect', ()=>{
console.log('user disconnected')
})
})
server.listen(5000, ()=>{
console.log('server connected')
})