Files
Livebeat/backend/endpoints/beat.ts
Mondei1 fa60f58d3c New dashboard widgets
- Custom time range can now be picked
- Map now shows accuracy of latest beat
- Presets removed
2020-10-25 00:10:25 +02:00

43 lines
1.5 KiB
TypeScript

import { Response } from "express";
import { LivebeatRequest } from "../lib/request";
import { IBeat } from "../models/beat/beat.interface";
import { Beat } from "../models/beat/beat.model.";
import { Phone } from "../models/phone/phone.model";
export async function GetBeatStats(req: LivebeatRequest, res: Response) {
const phones = await Phone.find({ user: req.user?._id });
const perPhone: any = {};
let totalBeats = 0;
for (let i = 0; i < phones.length; i++) {
const beatCount = await Beat.countDocuments({ phone: phones[i] });
perPhone[phones[i]._id] = {};
perPhone[phones[i]._id] = beatCount;
totalBeats += beatCount;
}
res.status(200).send({ totalBeats, perPhone });
}
export async function GetBeat(req: LivebeatRequest, res: Response) {
const from: number = Number(req.query.from);
const to: number = Number(req.query.to);
const phoneId = req.query.phoneId;
const phone = req.query.phone === undefined ? await Phone.findOne({ user: req.user?._id }) : await Phone.findOne({ _id: phoneId, user: req.user?._id });
let beats: IBeat[] = []
if (phone !== null) {
beats = await Beat.find(
{
phone: phone._id,
createdAt: {
$gte: new Date((from | 0) * 1000),
$lte: new Date((to | Date.now() /1000) * 1000)
}
}).sort({ _id: -1 });
res.status(200).send(beats);
} else {
res.status(404).send({ message: 'Phone not found' });
}
}