mirror of
https://github.com/sergeyyarkov/digital-store.git
synced 2026-10-11 10:19:15 +03:00
121 lines
4.1 KiB
JavaScript
121 lines
4.1 KiB
JavaScript
const ObjectID = require('mongodb').ObjectID;
|
|
|
|
module.exports = function (server, db) {
|
|
server.get('/', async (req, res) => {
|
|
try {
|
|
const store = await db.collection('content').findOne({});
|
|
db.collection('categories').find().toArray((err, result) => {
|
|
const categories = result.map(category => category.title[0].toUpperCase() + category.title.slice(1));
|
|
res.render('main/index', {
|
|
pageName: 'index',
|
|
title: `${store.title} | Главная`,
|
|
categories,
|
|
store: {
|
|
title: store.title
|
|
}
|
|
});
|
|
});
|
|
} catch (error) {
|
|
res.render('main/404');
|
|
}
|
|
});
|
|
server.get('/how-to-buy', async (req, res) => {
|
|
try {
|
|
const store = await db.collection('content').findOne({});
|
|
res.render('main/how-to-buy', {
|
|
pageName: 'how-to-buy',
|
|
title: `${store.title} | Как купить товар`,
|
|
store: {
|
|
title: store.title
|
|
}
|
|
});
|
|
} catch (error) {
|
|
res.send('main/404');
|
|
}
|
|
});
|
|
server.get('/contacts', async (req, res) => {
|
|
try {
|
|
const store = await db.collection('content').findOne({});
|
|
res.render('main/contacts', {
|
|
pageName: 'contacts',
|
|
title: `${store.title} | Контакты`,
|
|
store: {
|
|
title: store.title
|
|
}
|
|
});
|
|
} catch (error) {
|
|
res.send('main/404');
|
|
}
|
|
});
|
|
server.get('/comments', async (req, res) => {
|
|
try {
|
|
const store = await db.collection('content').findOne({});
|
|
res.render('main/comments', {
|
|
pageName: 'comments',
|
|
title: `${store.title} | Отзывы`,
|
|
store: {
|
|
title: store.title
|
|
}
|
|
});
|
|
} catch (error) {
|
|
res.render('main/404');
|
|
}
|
|
});
|
|
server.get('/my-orders', async (req, res) => {
|
|
try {
|
|
const store = await db.collection('content').findOne({});
|
|
res.render('main/my-orders', {
|
|
pageName: 'my-orders',
|
|
title: `${store.title} | Мои покупки`,
|
|
store: {
|
|
title: store.title
|
|
}
|
|
});
|
|
} catch (error) {
|
|
res.render('main/404');
|
|
}
|
|
});
|
|
server.get('/product/:id', async (req, res) => {
|
|
const store = await db.collection('content').findOne({});
|
|
const product = new Promise((resolve, reject) => {
|
|
db.collection('items').find({_id: ObjectID(req.params.id)}).toArray()
|
|
.then((items) => {
|
|
const item = items.find(item => item);
|
|
resolve(item);
|
|
});
|
|
});
|
|
|
|
product.then((item) => {
|
|
return new Promise((resolve, reject) => {
|
|
db.collection('categories').find({title: item.category}).toArray()
|
|
.then((categories) => {
|
|
const category = categories.find(category => category);
|
|
resolve({item, category});
|
|
});
|
|
});
|
|
})
|
|
.then(((data) => {
|
|
const item = data.item,
|
|
category = data.category;
|
|
res.render('main/product', {
|
|
title: item.title,
|
|
image: category.img,
|
|
count: item.count,
|
|
category: item.category[0].toUpperCase() + item.category.slice(1),
|
|
price: item.price,
|
|
description: item.description,
|
|
date: item.date,
|
|
id: item._id,
|
|
type: category.type,
|
|
format: category.format,
|
|
store: {
|
|
title: store.title
|
|
}
|
|
});
|
|
}))
|
|
.catch((error) => {
|
|
res.render('main/404');
|
|
});
|
|
});
|
|
}
|