require('dotenv').config(); const data = require('./testData/short.json'); const { analize, getShortStates, getAirTime } = require('./app/controllers/trackerAnalizer'); 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'); // 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)); 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); } } 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}`); }) }) } async function f() { // 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); } // 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); })(); // require('./app/tasks/sync')();