61 lines
1.5 KiB
JavaScript
61 lines
1.5 KiB
JavaScript
// const { body, param, validationResult } = require('express-validator')
|
|
// const { _sr } = require('../plugins/serverResponses')
|
|
// const { checkValidations } = require('../plugins/controllersHelperFunctions')
|
|
const Score = require('../models/GPS.Score')
|
|
const User = require('../models/GPS.User')
|
|
|
|
|
|
|
|
module.exports.getAll = async (req, res) => {
|
|
let page;
|
|
let rows;
|
|
|
|
if (!req.query?.rows || req.query?.rows <= 5) {
|
|
rows = 10;
|
|
} else {
|
|
rows = parseInt(req.query.rows);
|
|
}
|
|
|
|
if (!req.query?.page) {
|
|
page = 0;
|
|
} else if (req.query.page <= 1) {
|
|
page = 0;
|
|
} else {
|
|
page = req.query.page;
|
|
page = page * rows - rows;
|
|
}
|
|
|
|
const search = req.query?.search ? req.query.search : null;
|
|
|
|
let sort = {};
|
|
|
|
if (req.query?.created_at) {
|
|
sort.created_at = parseInt(req.query.created_at);
|
|
}
|
|
|
|
if (req.query?.score) {
|
|
sort.score = parseInt(req.query.score);
|
|
}
|
|
|
|
if (Object.keys(sort).length === 0) {
|
|
sort = { created_at: -1 };
|
|
}
|
|
|
|
const filter = {
|
|
userId: req.user_id,
|
|
};
|
|
|
|
if (search) {
|
|
filter.$or = [
|
|
{ title: new RegExp(search, 'i') },
|
|
...(!isNaN(search) ? [{ score: Number(search) }] : []),
|
|
];
|
|
}
|
|
|
|
const score = await Score.find(filter).skip(page).limit(rows).sort(sort);
|
|
const total = Math.ceil(await Score.countDocuments(filter));
|
|
|
|
const user = await User.findById(req.user_id).select('score');
|
|
res.status(200).json({ data: score, score: user.score, total });
|
|
};
|