2023-01-06 19:12:43 +01:00
|
|
|
require('dotenv').config();
|
|
|
|
|
2023-01-15 18:42:26 +01:00
|
|
|
const data = require('./testData/short.json');
|
|
|
|
|
|
|
|
|
|
|
|
const { analize, getShortStates, getAirTime } = require('./app/controllers/trackerAnalizer');
|
2023-09-09 18:24:57 +02:00
|
|
|
const { getSessions, getSession, updateSessionCalculatedTime, } = require('./app/db/mongo/mongoSessions');
|
|
|
|
const { getIvaoPilotsNow, getIvaoSessionTracks } = require('./app/requests/ivao/session');
|
|
|
|
const { createUserMongo, updateUserHash } = require('./app/db/mongo/mongoUsers');
|
|
|
|
const { getUserFromReferenceTable } = require('./app/db/mongo/mongoPilots');
|
|
|
|
const { getHashedPassword, changePassword } = require('./app/controllers/adminController');
|
|
|
|
const { mongoExecute } = require('./app/db/mongo/mongoDBPool');
|
|
|
|
const { getSessionTracks, updateSessionTracks, insertOneSessionTracks } = require('./app/db/mongo/mongoSessionTracks');
|
|
|
|
const { RedisClient } = require('./app/db/redis/redis');
|
2023-01-15 18:42:26 +01:00
|
|
|
// const { getHistoricalSessions, getSessionTracks } = require('./app/requests/ivao/session');
|
|
|
|
|
|
|
|
|
|
|
|
// const { getUsers } = require('./app/db/mysql/lsaUsers');
|
|
|
|
// const { RedisClient } = require('./app/db/redis/redis');
|
|
|
|
|
|
|
|
async function recalculateTime() {
|
|
|
|
// console.log(await getShortStates(data.tracks).map(d => ({ time: d.time, state: d.state, onGround: d.onGround })));
|
|
|
|
// console.log(await getAirTime(data.tracks));
|
2023-01-06 19:12:43 +01:00
|
|
|
|
|
|
|
|
2023-01-15 18:42:26 +01:00
|
|
|
const sessions = await getSessions('2022-01-01', '2023-11-01');
|
|
|
|
console.log('sessions.length :>> ', sessions.length);
|
|
|
|
let errs = [];
|
|
|
|
for (let index = 0; index < sessions.length; index++) {
|
|
|
|
let session;
|
|
|
|
try {
|
|
|
|
session = sessions[index];
|
|
|
|
const tracks = await getSessionTracks(session.id);
|
|
|
|
if (tracks) {
|
|
|
|
const newCalculatedTime = getAirTime(tracks.tracks);
|
|
|
|
// console.log(session.id, tracks.calculatedTime, newCalculatedTime);
|
|
|
|
tracks.calculatedTime = newCalculatedTime;
|
|
|
|
await updateSessionTracks(tracks);
|
|
|
|
}
|
|
|
|
} catch (err) {
|
|
|
|
console.log(session.id);
|
|
|
|
errs.push(session.id, err.message);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!errs.length) {
|
|
|
|
console.log('process ended OK');
|
|
|
|
} else {
|
|
|
|
console.log(errs);
|
|
|
|
}
|
2023-01-06 19:12:43 +01:00
|
|
|
}
|
|
|
|
|
2023-09-09 18:24:57 +02:00
|
|
|
function g() {
|
|
|
|
const data = mongoExecute(async({ collection }) => {
|
|
|
|
return await collection.aggregate([{
|
|
|
|
$addFields: {
|
|
|
|
createdDate: {
|
|
|
|
$dateFromString: {
|
|
|
|
dateString: "$createdAt",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
$match: {
|
|
|
|
createdDate: {
|
|
|
|
$gt: new Date("2023-01-01T00:00:00.000Z"),
|
|
|
|
$lte: new Date("2023-01-31T23:59:59.999Z"),
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
$lookup: {
|
|
|
|
from: "sessionTracks",
|
|
|
|
localField: "id",
|
|
|
|
foreignField: "sessionId",
|
|
|
|
as: "track",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
$unwind: {
|
|
|
|
path: "$track",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
$group: {
|
|
|
|
_id: "$userId",
|
|
|
|
totalTime: {
|
|
|
|
$sum: "$track.calculatedTime",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
]).toArray();
|
|
|
|
}, { colName: 'sessions' });
|
|
|
|
|
|
|
|
data.then(async(d) => {
|
|
|
|
const final = [];
|
|
|
|
for (let index = 0; index < d.length; index++) {
|
|
|
|
const pilot = d[index];
|
|
|
|
const ref = await getUserFromReferenceTable(String(pilot._id));
|
|
|
|
final.push({
|
|
|
|
vid: pilot._id,
|
|
|
|
name: ref.name,
|
|
|
|
hours: Number((pilot.totalTime / 3600).toFixed(2)),
|
|
|
|
});
|
|
|
|
}
|
|
|
|
console.log('horas\tvid\tNombre');
|
|
|
|
console.log('======================================');
|
|
|
|
final.sort((a, b) => b.hours - a.hours).forEach(d => {
|
|
|
|
console.log(`${d.hours}\t${d.vid}\t${d.name}`);
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2023-01-15 18:42:26 +01:00
|
|
|
async function f() {
|
2023-01-22 00:02:30 +01:00
|
|
|
|
2023-09-09 18:24:57 +02:00
|
|
|
// changePassword('admin', 'qwerty123', 'qwerty123');
|
|
|
|
// const crypto = require('crypto');
|
|
|
|
// await createUserMongo({
|
|
|
|
// id: crypto.randomBytes(16).toString("hex"),
|
|
|
|
// username: 'admin',
|
|
|
|
// hash: getHashedPassword('nevada98'),
|
|
|
|
// roles: ['admin']
|
|
|
|
// });
|
|
|
|
|
|
|
|
// await createUserMongo({
|
|
|
|
// id: crypto.randomBytes(16).toString("hex"),
|
|
|
|
// username: 'capcabal',
|
|
|
|
// hash: getHashedPassword('Kpitan123'),
|
|
|
|
// roles: ['cabal'],
|
|
|
|
// firstname: 'Carlos',
|
|
|
|
// lastname: 'Cabal',
|
|
|
|
// vid: 665507
|
|
|
|
// });
|
|
|
|
}
|
|
|
|
|
|
|
|
async function updateCalculated() {
|
|
|
|
const tracks = await mongoExecute(async({ collection }) => {
|
|
|
|
const res = await collection.find({}).toArray();
|
|
|
|
return res;
|
|
|
|
}, { colName: 'sessionTracks' });
|
|
|
|
for (let index = 0; index < tracks.length; index++) {
|
|
|
|
const track = tracks[index];
|
|
|
|
if (Number.isInteger(track.calculatedTime)) {
|
|
|
|
const session = await getSession(track.sessionId);
|
|
|
|
if (session) {
|
|
|
|
session.calculatedTime = track.calculatedTime;
|
|
|
|
await updateSessionCalculatedTime(session);
|
|
|
|
console.log('updatet session :>> ', session.id);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
console.log('updated total: ', tracks.length);
|
|
|
|
|
2023-01-15 18:42:26 +01:00
|
|
|
}
|
|
|
|
|
2023-09-09 18:24:57 +02:00
|
|
|
|
|
|
|
// updateCalculated()
|
|
|
|
|
|
|
|
|
|
|
|
(async function() {
|
|
|
|
// await require('./app/tasks/sync').taskSyncLSAUsers();
|
|
|
|
// const redisUsers = await RedisClient.getPair('users');
|
|
|
|
// console.log('redisUsers :>> ', redisUsers);
|
|
|
|
// const data = await getSessionsTotalCalculatedTimeByPilot('2023-01-01', '2023-01-31');
|
|
|
|
|
|
|
|
// for (let index = 0; index < data.length; index++) {
|
|
|
|
// const row = data[index];
|
|
|
|
// const user = redisUsers.find(d => Number(d.vid) === row._id);
|
|
|
|
// row.user = user;
|
|
|
|
// }
|
|
|
|
// console.log('data :>> ', data);
|
|
|
|
const sessionId = 51777503;
|
|
|
|
const t = await getIvaoSessionTracks(sessionId);
|
|
|
|
console.log('tracks :>> ', t);
|
|
|
|
|
|
|
|
const calculatedTime = getAirTime(t);
|
|
|
|
console.log('calculatedTime :>> ', calculatedTime);
|
|
|
|
const tracks = {
|
|
|
|
sessionId,
|
|
|
|
tracks: t,
|
|
|
|
calculatedTime,
|
|
|
|
};
|
|
|
|
console.log('tracks :>> ', tracks);
|
|
|
|
await insertOneSessionTracks(tracks);
|
|
|
|
})();
|
2023-01-15 18:42:26 +01:00
|
|
|
|
2023-01-06 19:12:43 +01:00
|
|
|
|
2023-01-15 18:42:26 +01:00
|
|
|
// require('./app/tasks/sync')();
|