Files
freeplanet_serverside/src/server/router/report_router.js
Paolo Arena d62888083b Circuits...
Circuits Fido e Max Qta
Fixed error eslint: 7.0.0 is OK
2022-09-11 11:45:33 +02:00

165 lines
5.3 KiB
JavaScript
Executable File

const express = require('express');
const router = express.Router();
const tools = require('../tools/general');
const server_constants = require('../tools/server_constants');
const { authenticate } = require('../middleware/authenticate');
// var mongoose = require('mongoose').set('debug', process.env.DEBUG)
const { Project } = require('../models/project');
const { Todo } = require('../models/todo');
const { User } = require('../models/user');
const shared_consts = require('../tools/shared_nodejs');
const Hours = require('../models/hours');
const _ = require('lodash');
const { ObjectID } = require('mongodb');
router.post('/load', authenticate, async (req, res) => {
let date_start = req.body.date_start;
const date_end = req.body.date_end;
const filter = req.body.filter;
const idapp = req.body.idapp;
// tools.mylog('GET REPORT : ');
// Ottieni la reportistica
// dei progetti
// degli utenti Residenti
// di tutta la settimana
try {
// Ottieni la lista dei Residenti
const listaResidenti = await User.getUsersResidenti(idapp);
// Extract all the projects of the userId only
const objprojects = await Project.getAllProjects('', idapp);
const arrhour = {};
// date_start = '2021-03-04T01:37:47.969Z';
// let mydatets = tools.dateToEpoch(date_start)
// let mydate = new Date(tools.getstrDateYYYY_MM_DD(new Date(date_start)));
let mydate = new Date(date_start);
let mydatestr = mydate.toDateString();
let mydatets = tools.dateToEpoch(mydatestr) + (new Date().getTimezoneOffset() * 60 * 1000);
mydate = new Date(mydatets);
let mydateyyymmdd = tools.getstrUTCDateYYYY_MM_DD(tools.AddDate(new Date(mydatestr), 1));
let mydatets_end = tools.dateToEpoch(date_end);
for (const myuser of listaResidenti) {
arrhour[myuser.username] = [];
}
let totalacchours = [];
for (const myuser of listaResidenti) {
totalacchours[myuser.username] = 0;
}
let rectotal = {};
while (mydatets <= mydatets_end) {
// console.log('mydatets', mydatets, 'mydate', mydate);
for (const myuser of listaResidenti) {
// for (const myproj of objprojects.arrproj) {
//let myhours = await Hours.getHoursByIdCat(idapp, myuser._id, myproj._id, date_start, date_end);
let rechours = await Hours.getHoursByDate(idapp, myuser._id, mydate);
let ressum = await Hours.getTotalHoursByDate(idapp, myuser.id, mydate);
if (tools.isMondayDate(mydate)) {
totalacchours[myuser.username] = 0;
}
if ((ressum > 0) || ((tools.isSundayDate(mydate)) && totalacchours[myuser.username] > 0)) {
totalacchours[myuser.username] = totalacchours[myuser.username] + ressum;
rectotal = {
totalhours: ressum,
totalacchours: 0,
date: mydateyyymmdd,
}
if (tools.isSunday(mydatets)) {
rectotal.totalacchours = totalacchours[myuser.username];
}
if (tools.isBitActive(filter, shared_consts.REPORT_FILT_RESP)) {
rectotal.resp = '';
rectotal.viceResp = '';
}
arrhour[myuser.username].push(rectotal);
if (tools.isBitActive(filter, shared_consts.REPORT_FILT_ATTIVITA)) {
for (const rec of rechours) {
let myproj = await Project.findProjectByUserId('', rec.todoId);
let colors = {
themebgcolor: '',
themecolor: ''
}
if (!myproj) {
const mytodo = await Todo.findOne({ _id: rec.todoId });
if (!!mytodo) {
colors.themebgcolor = mytodo.themebgcolor;
colors.themecolor = mytodo.themecolor;
myproj = await Project.findProjectByUserId('', mytodo.category);
if (!colors.themebgcolor && myproj) {
colors.themebgcolor = myproj.themebgcolor;
colors.themecolor = myproj.themecolor;
}
}
// E' un Todo, trova il proj
} else {
colors.themebgcolor = myproj.themebgcolor;
colors.themecolor = myproj.themecolor;
}
if (!colors.themebgcolor || colors.themebgcolor === 'white') {
if (myproj) {
colors = await Project.findColorsByProject(myproj._id);
}
}
if (myproj) {
const myrec = {
title: rec.hours + 'h - ' + myproj.descr,
details: myproj.longdescr,
date: tools.getstrDateYYYY_MM_DD(mydate),
bgcolor: colors.themebgcolor,
color: colors.themecolor
}
arrhour[myuser.username].push(myrec);
}
}
}
}
// }
}
// console.log('mydatestr', mydatestr, 'mydateyyymmdd', mydateyyymmdd)
// if (!!rectotal)
// console.log('TOT', rectotal.totalacchours);
mydatets += 86400000;
mydate = tools.AddDate(mydate, 1);
mydatestr = mydate.toDateString();
mydateyyymmdd = tools.getstrUTCDateYYYY_MM_DD(tools.AddDate(new Date(mydatestr), 1));
}
return res.send({ listaResidenti, arrhour });
} catch (e) {
console.log(e.message);
res.status(400).send(e);
}
});
module.exports = router;