106 lines
3.2 KiB
JavaScript
Executable File
106 lines
3.2 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 shared_consts = require('../tools/shared_nodejs');
|
|
|
|
const { authenticate } = require('../middleware/authenticate');
|
|
|
|
const mongoose = require('mongoose').set('debug', false);
|
|
|
|
const { User } = require('../models/user');
|
|
const { Circuit } = require('../models/circuit');
|
|
const { Account } = require('../models/account');
|
|
|
|
const _ = require('lodash');
|
|
|
|
const { ObjectID } = require('mongodb');
|
|
|
|
async function getCircuitRecAdminsInfo(idapp, data) {
|
|
|
|
try {
|
|
if (data && data.admins) {
|
|
for (const admin of data.admins) {
|
|
const myuser = await User.findOne({ idapp, username: admin.username }, { 'profile.img': 1 }).lean();
|
|
if (myuser && myuser.profile)
|
|
admin.profile = { img: myuser.profile.img };
|
|
}
|
|
}
|
|
} catch (e) {
|
|
console.error(e);
|
|
return data;
|
|
}
|
|
|
|
return data;
|
|
}
|
|
|
|
router.post('/load', authenticate, async (req, res) => {
|
|
const idapp = req.body.idapp;
|
|
const path = req.body.path;
|
|
const usernameOrig = req.user.username;
|
|
|
|
try {
|
|
|
|
const { SendNotif } = require('../models/sendnotif');
|
|
const { Movement } = require('../models/movement');
|
|
|
|
// Check if ìs a Notif to read
|
|
const idnotif = req.body['idnotif'] ? req.body['idnotif'] : '';
|
|
const lastdr = req.body['lastdr'] ? req.body['lastdr'] : '';
|
|
SendNotif.setNotifAsRead(idapp, usernameOrig, idnotif);
|
|
|
|
const whatshow = Circuit.getWhatToShow(idapp, req.user.username);
|
|
let data = await Circuit.findOne({ idapp, path }, whatshow).lean();
|
|
|
|
const whatshowUsers = await User.getWhatToShow_IfFriends(idapp, req.user.username);
|
|
|
|
/*let users_in_circuit = [];
|
|
|
|
if (data) {
|
|
users_in_circuit = await User.find(
|
|
{
|
|
idapp,
|
|
'profile.mycircuits': {
|
|
$elemMatch: {circuitname: {$eq: data.name}},
|
|
},
|
|
},
|
|
whatshowUsers,
|
|
).lean();
|
|
}
|
|
*/
|
|
|
|
const users_in_circuit = await Circuit.getUsersSingleCircuit(idapp, req.user.username, data.name, data._id);
|
|
|
|
data = await getCircuitRecAdminsInfo(idapp, data);
|
|
|
|
if (data) {
|
|
data.movements = await Movement.getMovsByCircuitId(idapp, usernameOrig, data._id);
|
|
}
|
|
|
|
if (data) {
|
|
data.account = await Account.getAccountByUsernameAndCircuitId(idapp, '', data._id, false, false, '', data.path);
|
|
}
|
|
|
|
const arrrecnotif = await SendNotif.findAllNotifByUsernameIdAndIdApp(req.user.username, lastdr, idapp, shared_consts.LIMIT_NOTIF_FOR_USER, shared_consts.QualiNotifs.OTHERS);
|
|
const arrrecnotifcoins = await SendNotif.findAllNotifByUsernameIdAndIdApp(req.user.username, lastdr, idapp, shared_consts.LIMIT_NOTIFCOINS_FOR_USER, shared_consts.QualiNotifs.CIRCUITS);
|
|
/// E' QUIIII !!!!
|
|
const useraccounts = await Account.getUserAccounts(idapp, req.user.username);
|
|
|
|
await User.setLastCircuitOpened(idapp, req.user.username, path);
|
|
|
|
res.send({ circuit: data, users_in_circuit, arrrecnotif, arrrecnotifcoins, useraccounts });
|
|
|
|
} catch (e) {
|
|
console.error('Error in Circuits', e);
|
|
return res.status(400).send(e);
|
|
}
|
|
|
|
const ris = null;
|
|
|
|
});
|
|
|
|
module.exports = router;
|