189 lines
4.5 KiB
JavaScript
189 lines
4.5 KiB
JavaScript
const express = require("express")
|
|
const router = express.Router()
|
|
const { requireAuth } = require("./../middleware/authmiddleware")
|
|
const User = require("./../model/item.js")
|
|
const bodyParser = require("body-parser")
|
|
router.use(bodyParser.json())
|
|
|
|
router.post("/fetch", async (req, res) => {
|
|
const resultsPerPage = 30
|
|
let page = req.body.page ?? 0
|
|
if (page != 0) {
|
|
page -= 1
|
|
}
|
|
let { filter, sort } = req.body
|
|
//console.log(req.body)
|
|
try {
|
|
if (filter === "Best Selling") {
|
|
if (sort != "All") {
|
|
response = await User.find({
|
|
Type: sort,
|
|
Hidden: { $exists: false },
|
|
})
|
|
.limit(resultsPerPage)
|
|
.skip(0 + parseFloat(page) * resultsPerPage)
|
|
.sort({ Sales: "descending" })
|
|
.lean()
|
|
.select(["-_id"])
|
|
responsecount = await User.countDocuments({
|
|
Type: sort,
|
|
Hidden: { $exists: false },
|
|
})
|
|
}
|
|
if (sort === "All") {
|
|
response = await User.find({
|
|
Hidden: { $exists: false },
|
|
Type: { $ne: "User Ad" },
|
|
})
|
|
.limit(resultsPerPage)
|
|
.skip(0 + parseFloat(page) * resultsPerPage)
|
|
.sort({ Sales: "descending" })
|
|
.lean()
|
|
.select(["-_id"])
|
|
responsecount = await User.countDocuments({
|
|
Hidden: { $exists: false },
|
|
Type: { $ne: "User Ad" },
|
|
})
|
|
}
|
|
} else {
|
|
if (sort != "All") {
|
|
response = await User.find({
|
|
Type: sort,
|
|
Hidden: { $exists: false },
|
|
})
|
|
.limit(resultsPerPage)
|
|
.skip(0 + parseFloat(page) * resultsPerPage)
|
|
.lean()
|
|
.select(["-_id"])
|
|
responsecount = await User.countDocuments({
|
|
Type: sort,
|
|
Hidden: { $exists: false },
|
|
})
|
|
}
|
|
if (sort === "All") {
|
|
response = await User.find({
|
|
Hidden: { $exists: false },
|
|
Type: { $ne: "User Ad" },
|
|
})
|
|
.limit(resultsPerPage)
|
|
.skip(0 + parseFloat(page) * resultsPerPage)
|
|
.lean()
|
|
.select(["-_id"])
|
|
responsecount = await User.countDocuments({
|
|
Hidden: { $exists: false },
|
|
Type: { $ne: "User Ad" },
|
|
})
|
|
}
|
|
}
|
|
|
|
//console.log(response.length)
|
|
res.json({
|
|
data: response,
|
|
pages: Math.ceil(Math.max(responsecount / resultsPerPage, 1)),
|
|
})
|
|
} catch (error) {
|
|
res.json({ status: "error", error: "idk" })
|
|
}
|
|
})
|
|
|
|
router.get("/iteminfo/:id", async (req, res) => {
|
|
var id = req.params.id
|
|
|
|
if (isNaN(parseFloat(id)) === true) {
|
|
return res.json({ status: "error", error: "Must be number" })
|
|
}
|
|
const response = await User.findOne({ ItemId: id }).lean()
|
|
|
|
if (!response) {
|
|
return res.json({ status: "error", error: "Not found" })
|
|
}
|
|
return res.json({ error: false, iteminfo: response })
|
|
})
|
|
|
|
router.post("/search", async (req, res) => {
|
|
const resultsPerPage = 30
|
|
let page = req.body.page ?? 0
|
|
if (page != 0) {
|
|
page -= 1
|
|
}
|
|
let { filter, sort, searchquery } = req.body
|
|
function escapeRegex(text) {
|
|
return text?.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")
|
|
}
|
|
const regex = new RegExp(escapeRegex(searchquery), "gi")
|
|
//console.log(req.body)
|
|
try {
|
|
if (filter === "Best Selling") {
|
|
if (sort != "All") {
|
|
response = await User.find({
|
|
Name: regex,
|
|
Type: sort,
|
|
Hidden: { $exists: false },
|
|
})
|
|
.limit(resultsPerPage)
|
|
.skip(0 + parseFloat(page) * resultsPerPage)
|
|
.sort({ Sales: "descending" })
|
|
.lean()
|
|
.select(["-_id"])
|
|
responsecount = await User.countDocuments({
|
|
Type: sort,
|
|
Hidden: { $exists: false },
|
|
})
|
|
}
|
|
if (sort === "All") {
|
|
response = await User.find({
|
|
Name: regex,
|
|
Hidden: { $exists: false },
|
|
})
|
|
.limit(resultsPerPage)
|
|
.skip(0 + parseFloat(page) * resultsPerPage)
|
|
.sort({ Sales: "descending" })
|
|
.lean()
|
|
.select(["-_id"])
|
|
responsecount = await User.countDocuments({
|
|
Hidden: { $exists: false },
|
|
})
|
|
}
|
|
} else {
|
|
if (sort != "All") {
|
|
response = await User.find({
|
|
Name: regex,
|
|
Type: sort,
|
|
Hidden: { $exists: false },
|
|
})
|
|
.limit(resultsPerPage)
|
|
.skip(0 + parseFloat(page) * resultsPerPage)
|
|
.lean()
|
|
.select(["-_id"])
|
|
responsecount = await User.countDocuments({
|
|
Type: sort,
|
|
Hidden: { $exists: false },
|
|
})
|
|
}
|
|
if (sort === "All") {
|
|
response = await User.find({
|
|
Name: regex,
|
|
Hidden: { $exists: false },
|
|
})
|
|
.limit(resultsPerPage)
|
|
.skip(0 + parseFloat(page) * resultsPerPage)
|
|
.lean()
|
|
.select(["-_id"])
|
|
responsecount = await User.countDocuments({
|
|
Hidden: { $exists: false },
|
|
})
|
|
}
|
|
}
|
|
|
|
//console.log(response.length)
|
|
res.json({
|
|
data: response,
|
|
pages: Math.ceil(Math.max(responsecount / resultsPerPage, 1)),
|
|
})
|
|
} catch (error) {
|
|
res.json({ status: "error", error: "idk" })
|
|
}
|
|
})
|
|
|
|
module.exports = router
|