mirror of
https://github.com/sergeyyarkov/digital-store.git
synced 2026-10-11 18:29:11 +03:00
added markdown
This commit is contained in:
parent
78b2cc8425
commit
1089b313ab
2
dist/views/main/contacts.pug
vendored
2
dist/views/main/contacts.pug
vendored
@ -19,7 +19,7 @@ main.main-section
|
||||
p
|
||||
strong Контакты
|
||||
p
|
||||
p(style="white-space: pre-wrap;") #{store.contacts}
|
||||
!= store.contacts
|
||||
|
||||
|
||||
//- Footer Template
|
||||
|
||||
2
dist/views/main/how-to-buy.pug
vendored
2
dist/views/main/how-to-buy.pug
vendored
@ -19,7 +19,7 @@ main.main-section
|
||||
p
|
||||
strong Для того, чтобы купить аккаунты в магазине, нужно проделать следующие шаги:
|
||||
p
|
||||
p(style="white-space: pre-wrap;") #{store.howToBuy}
|
||||
!= store.howToBuy
|
||||
|
||||
|
||||
//- Footer Template
|
||||
|
||||
4
dist/views/main/index.pug
vendored
4
dist/views/main/index.pug
vendored
@ -16,7 +16,7 @@ main.main-section
|
||||
.information-title
|
||||
h2.small-title Важная информация:
|
||||
.information-text
|
||||
p(style="white-space: pre-wrap;") #{store.info}
|
||||
!= store.info
|
||||
.information-close
|
||||
button#information-close.waves-effect.btn.red Закрыть
|
||||
// Information Block END
|
||||
@ -95,7 +95,7 @@ main.main-section
|
||||
.items-info__title.block-title
|
||||
i.material-icons info
|
||||
h3.med-title Информация
|
||||
p(style="white-space: pre-wrap;") #{store.infoBottom}
|
||||
!= store.infoBottom
|
||||
// Items Block END
|
||||
|
||||
//- Footer Template
|
||||
|
||||
8
dist/views/main/product.pug
vendored
8
dist/views/main/product.pug
vendored
@ -39,15 +39,15 @@ main.main-section
|
||||
.product-right__title
|
||||
span Описание:
|
||||
hr
|
||||
p #{description}
|
||||
!= description
|
||||
.product-right__content
|
||||
h2 Тип аккаунтов #{category}
|
||||
p #{type}
|
||||
!= type
|
||||
h2 Формат аккаунтов #{category}
|
||||
p #{format}
|
||||
!= format
|
||||
hr
|
||||
h3 Рекомендации к покупке аккаунтов.
|
||||
p #{store.recommendations}
|
||||
!= store.recommendations
|
||||
|
||||
h3 Отзывы о товаре
|
||||
#disqus_thread
|
||||
|
||||
4820
package-lock.json
generated
4820
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -27,6 +27,7 @@
|
||||
"express-flash": "0.0.2",
|
||||
"express-session": "^1.17.0",
|
||||
"log4js": "^6.1.0",
|
||||
"marked": "^1.1.0",
|
||||
"method-override": "^3.0.0",
|
||||
"mongodb": "^3.3.4",
|
||||
"multer": "^1.4.2",
|
||||
|
||||
@ -1,162 +1,178 @@
|
||||
const ObjectID = require('mongodb').ObjectID;
|
||||
const nodemailer = require('../config/nodemailer.config');
|
||||
const ObjectID = require('mongodb').ObjectID
|
||||
const marked = require('marked')
|
||||
const nodemailer = require('../config/nodemailer.config')
|
||||
|
||||
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,
|
||||
info: store.info,
|
||||
infoBottom: store.infoBottom,
|
||||
color: store.color
|
||||
}
|
||||
});
|
||||
});
|
||||
} catch {
|
||||
res.status(500).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,
|
||||
howToBuy: store.howToBuy,
|
||||
color: store.color
|
||||
}
|
||||
});
|
||||
} catch {
|
||||
res.status(500).render('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,
|
||||
contacts: store.contacts,
|
||||
color: store.color
|
||||
}
|
||||
});
|
||||
} catch {
|
||||
res.status(500).render('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,
|
||||
color: store.color
|
||||
}
|
||||
});
|
||||
} catch {
|
||||
res.status(500).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,
|
||||
color: store.color
|
||||
}
|
||||
});
|
||||
} catch {
|
||||
res.status(500).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});
|
||||
});
|
||||
});
|
||||
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,
|
||||
info: marked(store.info),
|
||||
infoBottom: marked(store.infoBottom),
|
||||
color: store.color,
|
||||
},
|
||||
})
|
||||
})
|
||||
.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,
|
||||
recommendations: store.recommendations,
|
||||
color: store.color
|
||||
}
|
||||
});
|
||||
}))
|
||||
.catch(() => {
|
||||
res.status(500).render('main/404');
|
||||
});
|
||||
});
|
||||
server.post('/my-orders', async (req, res) => {
|
||||
const buyers = await db.collection('buyers').find({email: req.body.email}).toArray();
|
||||
if (buyers.length > 0) {
|
||||
// рендерим html
|
||||
const html = buyers.map((buyer) => {
|
||||
return `
|
||||
} catch {
|
||||
res.status(500).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,
|
||||
howToBuy: marked(store.howToBuy),
|
||||
color: store.color,
|
||||
},
|
||||
})
|
||||
} catch {
|
||||
res.status(500).render('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,
|
||||
contacts: marked(store.contacts),
|
||||
color: store.color,
|
||||
},
|
||||
})
|
||||
} catch {
|
||||
res.status(500).render('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,
|
||||
color: store.color,
|
||||
},
|
||||
})
|
||||
} catch {
|
||||
res.status(500).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,
|
||||
color: store.color,
|
||||
},
|
||||
})
|
||||
} catch {
|
||||
res.status(500).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: marked(item.description),
|
||||
date: item.date,
|
||||
id: item._id,
|
||||
type: marked(category.type),
|
||||
format: marked(category.format),
|
||||
store: {
|
||||
title: store.title,
|
||||
recommendations: marked(store.recommendations),
|
||||
color: store.color,
|
||||
},
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
res.status(500).render('main/404')
|
||||
})
|
||||
})
|
||||
server.post('/my-orders', async (req, res) => {
|
||||
const buyers = await db
|
||||
.collection('buyers')
|
||||
.find({ email: req.body.email })
|
||||
.toArray()
|
||||
if (buyers.length > 0) {
|
||||
// рендерим html
|
||||
const html = buyers.map((buyer) => {
|
||||
return `
|
||||
<b>Номер заказа: ${buyer.bill_id}</b><br>
|
||||
<b>Дата оплаты: ${new Date(buyer.date).toLocaleDateString()}</b><br>
|
||||
<b>Дата оплаты: ${new Date(
|
||||
buyer.date
|
||||
).toLocaleDateString()}</b><br>
|
||||
<b>Данные товара:</b><br>
|
||||
<p>${buyer.data.join('<br>')}</p>
|
||||
<p>======================================================================</p>
|
||||
`;
|
||||
});
|
||||
`
|
||||
})
|
||||
|
||||
// высылаем данные покупателю
|
||||
try {
|
||||
await nodemailer.transporter.sendMail({
|
||||
from: `"Ваши покупки." <${process.env.EMAIL_LOGIN}>`,
|
||||
to: req.body.email,
|
||||
subject: "Данные купленных товаров находятся в этом письме.",
|
||||
html: html.join('')
|
||||
});
|
||||
res.json({status: 'OK'});
|
||||
} catch (error) {
|
||||
res.json({status: 'ERR'});
|
||||
}
|
||||
} else {
|
||||
res.json({status: 'NF'});
|
||||
}
|
||||
});
|
||||
// высылаем данные покупателю
|
||||
try {
|
||||
await nodemailer.transporter.sendMail({
|
||||
from: `"Ваши покупки." <${process.env.EMAIL_LOGIN}>`,
|
||||
to: req.body.email,
|
||||
subject: 'Данные купленных товаров находятся в этом письме.',
|
||||
html: html.join(''),
|
||||
})
|
||||
res.json({ status: 'OK' })
|
||||
} catch (error) {
|
||||
res.json({ status: 'ERR' })
|
||||
}
|
||||
} else {
|
||||
res.json({ status: 'NF' })
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user