@happychef/algorithm 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/test.js ADDED
@@ -0,0 +1,336 @@
1
+ const { isTimeAvailable } = require('./isTimeAvailable');
2
+
3
+ // Sample data (same as previous examples)
4
+ const data = {
5
+ "_id": "poer",
6
+ "general-settings": {
7
+ "zitplaatsen": 30,
8
+ "uurOpVoorhand": 4,
9
+ "dagenInToekomst": 90,
10
+ "maxGasten": 8,
11
+ "intervalReservatie": 15,
12
+ "duurReservatie": 120,
13
+ "minutenTotEinde": 135,
14
+ "showNoticeForMaxGuests": 0,
15
+ "noticePhoneNumber": "",
16
+ "storedNumber": 76
17
+ },
18
+ "menu": [
19
+ {
20
+ "name": "POER Menu",
21
+ "startDate": "2024-11-01",
22
+ "endDate": "2030-01-30",
23
+ "startHour": "12:00",
24
+ "endHour": "23:00",
25
+ "daysOfWeek": [
26
+ "zaterdag",
27
+ "dinsdag",
28
+ "woensdag",
29
+ "donderdag",
30
+ "vrijdag"
31
+ ],
32
+ "storedNumber": 36,
33
+ "_id": "674a9033c1956dd233bafaad"
34
+ },
35
+ {
36
+ "name": "A la carte",
37
+ "startDate": "2024-11-30",
38
+ "endDate": "2030-01-01",
39
+ "startHour": "12:00",
40
+ "endHour": "14:00",
41
+ "daysOfWeek": [
42
+ "dinsdag",
43
+ "woensdag",
44
+ "donderdag",
45
+ "vrijdag"
46
+ ],
47
+ "storedNumber": 28,
48
+ "_id": "674a9084c1956dd233bafaae"
49
+ },
50
+ {
51
+ "name": "Ik weet het nog niet",
52
+ "startDate": "2024-11-30",
53
+ "endDate": "2030-01-01",
54
+ "startHour": "12:00",
55
+ "endHour": "14:00",
56
+ "daysOfWeek": [
57
+ "dinsdag",
58
+ "woensdag",
59
+ "donderdag",
60
+ "vrijdag"
61
+ ],
62
+ "storedNumber": 41,
63
+ "_id": "674a90bc64cc52acdd5e6cc2"
64
+ },
65
+ {
66
+ "name": "Lunch",
67
+ "startDate": "2024-11-01",
68
+ "endDate": "2030-01-30",
69
+ "startHour": "12:00",
70
+ "endHour": "14:00",
71
+ "daysOfWeek": [
72
+ "dinsdag",
73
+ "woensdag",
74
+ "donderdag",
75
+ "vrijdag"
76
+ ],
77
+ "storedNumber": 23,
78
+ "_id": "674adb4e8d6385fb343499f7"
79
+ },
80
+ {
81
+ "name": "A la carte",
82
+ "startDate": "2024-11-01",
83
+ "endDate": "2030-01-30",
84
+ "startHour": "18:30",
85
+ "endHour": "20:30",
86
+ "daysOfWeek": [
87
+ "dinsdag",
88
+ "woensdag",
89
+ "donderdag"
90
+ ],
91
+ "storedNumber": 50,
92
+ "_id": "674adbf58d6385fb343499f8"
93
+ },
94
+ {
95
+ "name": "Ik weet het nog niet",
96
+ "startDate": "2024-11-01",
97
+ "endDate": "2030-01-30",
98
+ "startHour": "18:30",
99
+ "endHour": "20:30",
100
+ "daysOfWeek": [
101
+ "dinsdag",
102
+ "donderdag",
103
+ "woensdag"
104
+ ],
105
+ "storedNumber": 54,
106
+ "_id": "674adc208d6385fb343499f9"
107
+ }
108
+ ],
109
+ "mededeling": [
110
+ {
111
+ "mededeling": "Gelieve er rekening mee te houden dat we op vrijdagavond en zaterdagavond enkel ons POER menu serveren.",
112
+ "startDate": "2024-11-01",
113
+ "endDate": "2030-01-30",
114
+ "startTime": "18:30",
115
+ "endTime": "20:30",
116
+ "daysOfWeek": [
117
+ "vrijdag",
118
+ "zaterdag"
119
+ ],
120
+ "storedNumber": 95,
121
+ "_id": "674ade0a8d6385fb343499fa"
122
+ }
123
+ ],
124
+ "settings": {
125
+ "pageTitle": "Reserveer nu",
126
+ "generalNotification": "",
127
+ "alignment": "fullScreenColor",
128
+ "backgroundBlur": "blurBackground",
129
+ "storedNumber": 61
130
+ },
131
+ "colors": {
132
+ "backgroundType": "solid",
133
+ "backgroundColor": "#e0debe",
134
+ "gradientStartColor": "#FFFFFF",
135
+ "gradientEndColor": "#000000",
136
+ "animationType": "none",
137
+ "widgetBackgroundColor": "#000000",
138
+ "widgetTextColor": "#FFFFFF",
139
+ "textColor": "#000000",
140
+ "containerColor": "#FFFFFF",
141
+ "buttonColor": "#000000",
142
+ "buttonTextColor": "#FFFFFF",
143
+ "storedNumber": 81
144
+ },
145
+ "exceptions": [
146
+ {
147
+ "title": "Extra mensen donderdagmiddag",
148
+ "type": "Opening",
149
+ "timeframe": "lunch",
150
+ "startDate": "2024-12-05",
151
+ "endDate": "2024-12-05",
152
+ "startHour": "12:00",
153
+ "endHour": "16:00",
154
+ "maxSeats": "34",
155
+ "daysOfWeek": [
156
+ "donderdag"
157
+ ],
158
+ "storedNumber": 74,
159
+ "_id": "67507dc98fb61d6afd54acb0"
160
+ },
161
+ {
162
+ "title": "Extra personen donderdagavond",
163
+ "type": "Uitzondering",
164
+ "timeframe": "dinner",
165
+ "startDate": "2024-12-05",
166
+ "endDate": "2024-12-05",
167
+ "startHour": "18:30",
168
+ "endHour": "23:00",
169
+ "maxSeats": "27",
170
+ "daysOfWeek": [
171
+ "donderdag"
172
+ ],
173
+ "storedNumber": 88,
174
+ "_id": "67507e3383d7f2de02628f4a"
175
+ },
176
+ {
177
+ "title": "Congé Periode 22/12 tot 9/01",
178
+ "type": "Sluiting",
179
+ "timeframe": "Volledige Dag",
180
+ "startDate": "2024-12-22",
181
+ "endDate": "2025-01-09",
182
+ "daysOfWeek": [],
183
+ "storedNumber": 89,
184
+ "_id": "67511bb38fb61d6afd54acba"
185
+ }
186
+ ],
187
+ "openinghours-lunch": {
188
+ "schemeSettings": {
189
+ "Tuesday": {
190
+ "enabled": true,
191
+ "startTime": "12:00",
192
+ "endTime": "13:30",
193
+ "maxCapacityEnabled": true,
194
+ "maxCapacity": "30",
195
+ "shiftsEnabled": false,
196
+ "shifts": []
197
+ },
198
+ "Wednesday": {
199
+ "enabled": true,
200
+ "startTime": "12:00",
201
+ "endTime": "16:00",
202
+ "maxCapacityEnabled": true,
203
+ "maxCapacity": "30",
204
+ "shiftsEnabled": false,
205
+ "shifts": []
206
+ },
207
+ "Thursday": {
208
+ "enabled": true,
209
+ "startTime": "12:00",
210
+ "endTime": "16:00",
211
+ "maxCapacityEnabled": true,
212
+ "maxCapacity": "30",
213
+ "shiftsEnabled": false,
214
+ "shifts": []
215
+ },
216
+ "Friday": {
217
+ "enabled": true,
218
+ "startTime": "12:30",
219
+ "endTime": "13:30",
220
+ "maxCapacityEnabled": true,
221
+ "maxCapacity": "30",
222
+ "shiftsEnabled": false,
223
+ "shifts": []
224
+ }
225
+ },
226
+ "storedNumber": 2
227
+ },
228
+ "openinghours-dinner": {
229
+ "schemeSettings": {
230
+ "Tuesday": {
231
+ "enabled": true,
232
+ "startTime": "18:30",
233
+ "endTime": "20:00",
234
+ "maxCapacityEnabled": true,
235
+ "maxCapacity": "24",
236
+ "shiftsEnabled": false,
237
+ "shifts": []
238
+ },
239
+ "Wednesday": {
240
+ "enabled": true,
241
+ "startTime": "16:00",
242
+ "endTime": "20:00",
243
+ "maxCapacityEnabled": true,
244
+ "maxCapacity": "24",
245
+ "shiftsEnabled": false,
246
+ "shifts": []
247
+ },
248
+ "Thursday": {
249
+ "enabled": true,
250
+ "startTime": "16:00",
251
+ "endTime": "20:00",
252
+ "maxCapacityEnabled": true,
253
+ "maxCapacity": "24",
254
+ "shiftsEnabled": false,
255
+ "shifts": []
256
+ },
257
+ "Friday": {
258
+ "enabled": true,
259
+ "startTime": "18:30",
260
+ "endTime": "20:00",
261
+ "maxCapacityEnabled": true,
262
+ "maxCapacity": "30",
263
+ "shiftsEnabled": false,
264
+ "shifts": []
265
+ },
266
+ "Saturday": {
267
+ "enabled": true,
268
+ "startTime": "18:30",
269
+ "endTime": "20:00",
270
+ "maxCapacityEnabled": true,
271
+ "maxCapacity": "30",
272
+ "shiftsEnabled": false,
273
+ "shifts": []
274
+ }
275
+ },
276
+ "storedNumber": 6
277
+ },
278
+ "fonts": {
279
+ "titleFont": {
280
+ "font": "Poppins",
281
+ "weight": "400"
282
+ },
283
+ "subtitleFont": {
284
+ "font": "Poppins",
285
+ "weight": "400"
286
+ },
287
+ "labelFont": {
288
+ "font": "Poppins",
289
+ "weight": "400"
290
+ },
291
+ "buttonFont": {
292
+ "font": "Poppins",
293
+ "weight": "400"
294
+ }
295
+ },
296
+ "theme": {
297
+ "id": 10,
298
+ "title": "Herfstbladeren",
299
+ "color": "#D35400",
300
+ "image": "/static/media/default-theme.webp"
301
+ }
302
+ };
303
+
304
+ // Sample reservations
305
+ const reservations = [
306
+ {
307
+ "guests": 10,
308
+ "time": "12:00",
309
+ "date": "2024-12-18"
310
+ },
311
+ {
312
+ "guests": 100,
313
+ "time": "15:00",
314
+ "date": "2024-12-04"
315
+ },
316
+ ];
317
+
318
+ console.log('--- Is Time Available Tests ---');
319
+
320
+ const dateStr = '2024-12-10';
321
+ const guests = 1000;
322
+
323
+ // Times to test
324
+ const timesToTest = [
325
+ "12:00",
326
+ "12:15",
327
+ "13:00",
328
+ "19:00",
329
+ "20:00", // boundary time for dinner
330
+ "20:15" // beyond dinner end time, should likely fail
331
+ ];
332
+
333
+ timesToTest.forEach((timeStr) => {
334
+ const available = isTimeAvailable(data, dateStr, timeStr, reservations, guests);
335
+ console.log(`Is ${timeStr} on ${dateStr} available for ${guests} guests?`, available);
336
+ });