// 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 }); };