-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
363 lines (343 loc) · 10.3 KB
/
index.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
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
const express = require('express')
const bodyParser = require('body-parser');
const app = express()
const cors = require('cors');
app.use(cors());
app.use(bodyParser.json());
app.use(express.static(__dirname + "/public"));
var products = [{
id: 1, /*darf keine kommazahlen beinhalten*/
title: 'Almost Heaven',
description: 'Einsteiger Yacht für jedermann. Vier Schlafzimmer und "rooftop whirlpool". Knap 500PS. Ideal für den nächsten Familienausflug.',
category: 'Luxusyachten',
image: 'images/produkt1_1.jpg', /* muss so sein url wird im javascript angepasst */
price: {
value: '20\'000\'000',
currency: 'CHF'
},
reviews: [{
id: 1,
name: 'Jann Lemm',
mail: '[email protected]',
description: 'Für den Strassenverkehr ungeeignet.',
stars: 2
}]
}, {
id: 2,
title: 'Wavebreaker',
description: 'Eine Luxusyacht der Sonderklasse. Geräumig mit acht Schlafzimmern für bis zu 30 Personen. Mann gönnt sich sonst ja nichts!',
category: 'Luxusyachten',
image: 'images/produkt1_2.jpg',
price: {
value: '42\'000\'000',
currency: 'CHF'
},
reviews: []
}, {
id: 3, /*darf keine kommazahlen beinhalten*/
title: 'The Lord',
description: 'Ein absoluter hingucker! Mit dem "Lord" gelingt der Auftritt am Monaco Hafen bestimmt! An dieser Yacht ist wirklich alles absolut unverhältnissmässig!',
category: 'Luxusyachten',
image: 'images/produkt1_3.jpg', /* muss so sein url wird im javascript angepasst */
price: {
value: '111\'000\'000',
currency: 'CHF'
},
reviews: [{
id: 1,
name: 'Mr. Money',
mail: '[email protected]',
description: 'Realy nice!',
stars: 5
}]
}, {
id: 4, /*darf keine kommazahlen beinhalten*/
title: 'Iron Lady',
description: 'Keine Kompromisse! Luxus der Sonderklasse! Der puuure schwimmende Reichtum auf vier Etagen. Drei Pools, vier Bars, Fitnesscenter und vieles mehr.',
category: 'Luxusyachten',
image: 'images/produkt1_4.jpg', /* muss so sein url wird im javascript angepasst */
price: {
value: '200\'000\'000',
currency: 'CHF'
},
reviews: [{
id: 1,
name: 'Pink Panter',
mail: '[email protected]',
description: 'Pool zu klein!',
stars: 3
},{
id: 2,
name: 'James Black',
mail: '[email protected]',
description: 'Ideales Hochzeitsgeschenk!',
stars: 5
}
]
}, {
id: 5, /*darf keine kommazahlen beinhalten*/
title: 'King Roger',
description: 'Mit dieser Yacht sind Sie der "King" auf dem Meer. Luxus puur und doch mit 5500 PS unterwegs. Platz für eine 60ig köpfige Crew. Ein absolutes muss für Yachtfans',
category: 'Luxusyachten',
image: 'images/produkt1_5.jpg', /* muss so sein url wird im javascript angepasst */
price: {
value: '250\'000\'000',
currency: 'CHF'
},
reviews: [{
id: 1,
name: 'Roger Federer',
mail: '[email protected]',
description: 'Toller name!! LOL!',
stars: 5
}]
}, {
id: 6, /*darf keine kommazahlen beinhalten*/
title: 'The Island',
description: 'Nein Sie sehen noch gut. Diese Yacht ist eine schwimmendes Inselparadies. Platz für 400 Gäste. 12 Bars, 40 Zimmer, 50m Pool, U-Boot etc.',
category: 'Luxusyachten',
image: 'images/produkt1_6.jpg', /* muss so sein url wird im javascript angepasst */
price: {
value: '550\'000\'000',
currency: 'CHF'
},
reviews: [{
id: 1,
name: 'Alfred der Gorsse',
mail: '[email protected]',
description: 'Geniales Geburtstagsgeschenk für meine Tochter!',
stars: 5
},{
id: 2,
name: 'Kim Jong Un',
mail: '[email protected]',
description: 'Kein Platz für Raketentests. Unbrauchbar!!',
stars: 1
},{
id: 3,
name: 'Donald Trump',
mail: '[email protected]',
description: 'Dieser Komentar wurde vom Administrator entfernt.',
stars: 5
}]
}, {
id: 7, /*darf keine kommazahlen beinhalten*/
title: 'Little Bird',
description: 'Klein aber fein! Mit dem Little Bird reisen Sie unglaublich bequem und luxuriös. Platz für bis zu 10 Fluggäste. Hier reisen ALLE First Class!',
category: 'Privatjets',
image: 'images/produkt2_1.jpg', /* muss so sein url wird im javascript angepasst */
price: {
value: '12\'000\'000',
currency: 'CHF'
},
reviews: [{
id: 1,
name: 'Kasperli',
mail: '[email protected]',
description: 'Klein aber oho!',
stars: 4
}]
}, {
id: 8, /*darf keine kommazahlen beinhalten*/
title: 'The Eagle',
description: 'Schweben Sie mit dem Eagle wie ein Adler über den Wolken. Noch nie war das Reisen der Superreichen so angenehm wie mit dem Eagle.',
category: 'Privatjets',
image: 'images/produkt2_2.jpg', /* muss so sein url wird im javascript angepasst */
price: {
value: '15\'000\'000',
currency: 'CHF'
},
reviews: []
}, {
id: 9, /*darf keine kommazahlen beinhalten*/
title: 'Swan',
description: 'Der Swand ist einer der edelsten Privatjets auf dem Markt. Platz für bis zu 20 Fluggäste. Heute Dubai, Morgen London. Alles ist möglich!',
category: 'Privatjets',
image: 'images/produkt2_3.jpg', /* muss so sein url wird im javascript angepasst */
price: {
value: '23\'000\'000',
currency: 'CHF'
},
reviews: [{
id: 1,
name: 'Schwanenkönig',
mail: '[email protected]',
description: 'Elegantes Gerät! gefällt!',
stars: 4
}]
}, {
id: 10, /*darf keine kommazahlen beinhalten*/
title: 'Rich Kid',
description: 'Der Privatjet für jeden, der absolut nicht mehr weiss wohin mit dem Geld. Innenausstattung aus Adlerholz, Platz für 30 Gäste und vieles mehr.',
category: 'Privatjets',
image: 'images/produkt2_4.jpg', /* muss so sein url wird im javascript angepasst */
price: {
value: '79\'000\'000',
currency: 'CHF'
},
reviews: [{
id: 1,
name: 'Money Boy',
mail: '[email protected]',
description: 'Hat kein Platz in meiner Garage aber sonst top!',
stars: 4
}]
}, {
id: 11, /*darf keine kommazahlen beinhalten*/
title: 'LEAR JET',
description: 'Das Nonplusultra der privaten Luftfahrt! 1500kmh Spizze! Mit diesem Privatjet erreichen Sie nicht nur jeden Platz auf Mutter Erde, sondern sogar den Mond!',
category: 'Privatjets',
image: 'images/produkt2_5.jpg', /* muss so sein url wird im javascript angepasst */
price: {
value: '180\'000\'000',
currency: 'CHF'
},
reviews: [{
id: 1,
name: 'Neil Armstrong',
mail: '[email protected]',
description: 'Private Mondflüge sollten verboten werden!',
stars: 1
},{
id: 2,
name: 'Elon Musk',
mail: '[email protected]',
description: 'LOL bis zum Mond! Unsere kommen bis zum Mars!',
stars: 3
},{
id: 3,
name: 'Donald Trump',
mail: '[email protected]',
description: 'Hab mir zwölf gekauft. Einfach weil ich es kann!',
stars: 5
}]
}, {
id: 12, /*darf keine kommazahlen beinhalten*/
title: 'Family Classic',
description: 'Mit dem Family Classic erreichen Sie auch die abgelegensten Camping Plätze. Der Einsteiger ins luxus-camping-business. Bietet Platz für bis zu fünf Personen.',
category: 'Luxus-Wohnmobile',
image: 'images/produkt3_1.jpg', /* muss so sein url wird im javascript angepasst */
price: {
value: '250\'000',
currency: 'CHF'
},
reviews: [{
id: 1,
name: 'Mr. Green',
mail: '[email protected]',
description: 'Alles was der kleine Millionär zum campen braucht!',
stars: 5
}]
}, {
id: 13, /*darf keine kommazahlen beinhalten*/
title: 'MURICA',
description: 'Der Lastwagen der Luxus-Camper! Wiegt 12 Tonnen und verbraucht locker 50Liter/100Km! Die anderen Gäste auf dem Campingplatz werden vor Neid erblassen!',
category: 'Luxus-Wohnmobile',
image: 'images/produkt3_2.jpg', /* muss so sein url wird im javascript angepasst */
price: {
value: '1\'200\'000',
currency: 'CHF'
},
reviews: [{
id: 1,
name: 'Captain America',
mail: '[email protected]',
description: 'Thas what i need! MUUUURRRICA!!!!',
stars: 5
}]
}, {
id: 14, /*darf keine kommazahlen beinhalten*/
title: 'Rolling King',
description: 'Fühlen Sie sich wie ein König! Mit dem Rolling King haben Sie nicht nur eine Fahrende Luxussuit, sondern auch gleich einen Helikopter on Board!',
category: 'Luxus-Wohnmobile',
image: 'images/produkt3_3.jpg', /* muss so sein url wird im javascript angepasst */
price: {
value: '18\'000\'000',
currency: 'CHF'
},
reviews: []
}, {
id: 15, /*darf keine kommazahlen beinhalten*/
title: 'President GOLD-EDITION',
description: 'Sie stehen auf Gold? Dan ist der "President" genau das richtige für Sie! Platz für 40 Gäste, 8Schlafzimmer und vieles mehr!',
category: 'Luxus-Wohnmobile',
image: 'images/produkt3_4.jpg', /* muss so sein url wird im javascript angepasst */
price: {
value: '99\'999\'999',
currency: 'CHF'
},
reviews: [{
id: 1,
name: 'Der GoldGräber',
mail: '[email protected]',
description: 'Nur echtes Gold zählt! nice!',
stars: 5
},{
id: 2,
name: 'MoneyFlow',
mail: '[email protected]',
description: 'Goldschicht zu dünn!',
stars: 1
}]
}
];
var cart = [];
app.get('/products', function (req, res) {
var category = req.query.category;
res.setHeader('Content-Type', 'application/json');
if(category) {
var filteredProducts = products.filter(function(product) {
return product.category === category;
});
res.send(JSON.stringify(filteredProducts));
} else {
res.send(JSON.stringify(products));
}
})
app.get('/products/:id', function (req, res) {
var id = req.params.id;
res.setHeader('Content-Type', 'application/json');
if(id>products.length) {
res.status(404).send({ error: 'Invalid product id' })
} else {
res.send(JSON.stringify(products[id-1]))
}
})
app.post('/products/:id/reviews', function(req, res) {
var id = req.params.id;
res.setHeader('Content-Type', 'application/json');
if(id>products.length) {
res.status(404).send({ error: 'Invalid product id' })
} else {
var review = req.body;
products[id-1].reviews.push(review);
res.send(products);
}
});
app.get('/cart', function (req, res) {
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify(cart))
})
app.post('/cart', function(req, res) {
var product = req.body;
res.setHeader('Content-Type', 'application/json');
cart.push(product);
res.send(JSON.stringify(cart));
});
app.delete('/cart', function(req, res) {
cart = [];
res.send(JSON.stringify(cart));
});
app.delete('/cart/:id', function(req, res) {
var id = req.params.id;
for(var a = 0; a< cart.length; a++) {
if (cart[a].id == id){
cart.splice(a,1);
a=cart.length+1;
}
}
res.send(JSON.stringify(cart));
});
app.listen(process.env.PORT || 3000, function(){
console.log("Express server listening on port %d in %s mode", this.address().port, app.settings.env);
});