Files
finanzas_api/routes/resumen.js
2021-07-30 23:56:33 -05:00

101 lines
2.5 KiB
JavaScript

const router=require('express').Router();
const ingresos = require('../models/ingresos');
const Compras = require('../models/compras');
const { checkAuth } = require("../middlewares/authentication");
router.get("/resumen_compras", checkAuth, async (req, res) => {
var compras_;
var totalCompras=0;
let miFiltro = req.get('filtro');
const filtros = {
fecha: { $regex: miFiltro, $options: "i" },
};
compras_ = await Compras.find({$and:[{ user: req.userData._id },filtros]}).sort({
fecha: "desc",
});
totalCompras = compras_.reduce((acx,x)=> acx=acx+x.valor,0);
return res.send(
{
status:"ok",
data:totalCompras
}
)
});
router.get("/resumen_ingresos", checkAuth, async (req, res) => {
var ingresos_;
var totalIngresos=0;
let miFiltro = req.get('filtro');
const filtros = {
fecha: { $regex: miFiltro, $options: "i" },
};
ingresos_ = await ingresos.find({$and:[{ user: req.userData._id },filtros]}).sort({
fecha: "desc",
});
totalIngresos = ingresos_.reduce((acx,x)=> acx=acx+x.valor,0);
return res.send(
{
status:"ok",
data:totalIngresos
}
)
});
router.get('/resumen_categorias',checkAuth,async (req,res)=>{
var compras_;
var labels =[];
var datos =[];
let miFiltro = req.get('filtro');
const filtros = {
fecha: { $regex: miFiltro, $options: "i" },
};
compras_ = await Compras.aggregate([
{$match: { $and: [{ user:req.userData._id}, filtros] }},
{$group:{_id:{categoria:"$categoria"},total:{$sum:"$valor"}}}
]).sort({total:"desc"});
compras_.forEach(element => {
//console.log(element.total)
labels.push(element._id.categoria)
datos.push(element.total)
});
res.json({"labels":labels,"datos":datos});
});
router.get('/resumen_metodos',checkAuth,async (req,res)=>{
var compras_;
var labels =[];
var datos =[];
let miFiltro = req.get('filtro');
const filtros = {
fecha: { $regex: miFiltro, $options: "i" },
};
compras_ = await Compras.aggregate([
{$match: { $and: [{ user:req.userData._id}, filtros] }},
{$group:{_id:{metodopago:"$metodopago"},total:{$sum:"$valor"}}}
]).sort({total:"desc"});
compras_.forEach(element => {
//console.log(element.total)
labels.push(element._id.metodopago)
datos.push(element.total)
});
res.json({"labels":labels,"datos":datos});
});
module.exports = router;