-
Notifications
You must be signed in to change notification settings - Fork 0
/
waiter_app.js
131 lines (116 loc) · 4.94 KB
/
waiter_app.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
// todo: define a function called setWaiters with two parameters
// todo: check if name already exists in the databasea if not add name
module.exports = (pool) => {
//define function to get all weekdays
let getWeekdays = async () => {
let days = await pool.query('SELECT weekday FROM weekdays');
return days.rows;
};
let setWaiters = async (waiterName) => {
waiterName = waiterName.toLowerCase();
if (waiterName != '' || waiterName !== undefined) {
let checkName = await pool.query('SELECT * FROM waiter WHERE names = $1', [waiterName]);
if (checkName.rowCount > 0) {} else {
await pool.query('INSERT INTO waiter(names) values($1)', [waiterName]);
// await getCheckedDays(waiterName);
}
}
};
let setWAiterAndDays = async (setWaiter, setWeekdays) => {
setWaiter = setWaiter.toLowerCase();
// if (setWAiterAndDays == '') {
// return false;
// }
if (await checkNames(setWaiter)) {
let waiterName = await getNames(setWaiter);
let waiterID = waiterName.id;
console.log(waiterID);
await pool.query('DELETE FROM days_booked WHERE waiter_id = $1', [waiterID]);
for (const dayId of setWeekdays) {
let foundId = await pool.query('SELECT id From weekdays WHERE weekday=$1', [dayId]);
foundId =foundId.rows[0].id
await pool.query('INSERT INTO days_booked(waiter_id, weekdays_id) VALUES($1, $2)', [waiterID, foundId]);
}
} else {
await setWaiters(setWaiter);
let waiterName = await getNames(setWaiter);
let waiterID = waiterName.id;
for (const dayId of setWeekdays) {
let foundId = await pool.query('SELECT id From weekdays WHERE weekday=$1', [dayId]);
foundId = foundId.rows[0].id;
await pool.query('INSERT INTO days_booked(waiter_id, weekdays_id) VALUES($1, $2)', [waiterID, foundId])
}
}
}
let checkNames = async (waiterName) => {
waiterName = waiterName.toLowerCase();
// if (waiterName != '' || waiterName !== undefined) {
checkName = await pool.query('SELECT * FROM waiter WHERE names = $1', [waiterName]);
if (checkName.rowCount > 0) {
return true;
} else {
return false;
}
// }
}
let getCheckedDays = async (waiterName) => {
waiterName = waiterName.toLowerCase();
//define a variable to get all that getWaiterName
let getAllDays = await getWeekdays();
let getShifts = await pool.query('SELECT waiter.names, weekdays.weekday FROM days_booked INNER JOIN waiter ON days_booked.waiter_id = waiter.id INNER JOIN weekdays ON days_booked.weekdays_id = weekdays.id where names= $1', [waiterName]);
let selectedShifts = getShifts.rows;
// console.log(selectedShifts);
for (let getDays of getAllDays) {
for (let workingShifts of selectedShifts) {
// console.log(workingShifts);
if (getDays.weekday === workingShifts.weekday) {
getDays['checked'] = 'checked';
}
// console.log(workingShifts)
// return workingShifts
};
};
return getAllDays;
}
let getNames = async (waiterName) => {
waiterName = waiterName.toLowerCase();
let getWaiterNames = await pool.query('SELECT * FROM waiter WHERE names = $1', [waiterName]);
return getWaiterNames.rows[0];
}
//define a function for administrator ro check waiter on shifts
let adminCheckWaiters = async () => {
let getDays = await getWeekdays();
for (const days of getDays) {
let results = await pool.query('SELECT waiter.names as names FROM days_booked INNER JOIN waiter ON days_booked.waiter_id = waiter.id INNER JOIN weekdays ON days_booked.weekdays_id = weekdays.id where weekdays.weekday = $1', [days.weekday]);
days.waiter = results.rows;
// console.log(days.names = results.rows);
if (days.waiter.length === 3) {
days['colors'] = 'green';
} else {
if (days.waiter.length > 3) {
days['colors'] = 'red';
} else {
if (days.waiter.length < 3 || days.waiter.length === 0) {
days['colors'] = 'blue';
}
}
}
}
// console.log(getDays);
return getDays;
}
let deletewaiters = async () => {
let waiterDelete = await pool.query('DELETE FROM waiter');
return waiterDelete.rows;
}
return {
getWeekdays,
setWaiters,
setWAiterAndDays,
getCheckedDays,
getNames,
checkNames,
adminCheckWaiters,
deletewaiters
}
};