some of the backend is working

This commit is contained in:
Luke Berndt
2023-01-21 22:31:38 -05:00
parent 033c3dcf5d
commit 1ab774ec8f
10 changed files with 4454 additions and 6 deletions

View File

@@ -2,7 +2,7 @@
var ObjectID = require('mongodb').ObjectID;
var db = require('../db');
var mongoose = require("mongoose");
var Call = require("../models/call");
var {callModel:Call} = require("../models/call");
var Star = require("../models/star");
var defaultNumResults = 50;

View File

@@ -0,0 +1,72 @@
var ObjectID = require('mongodb').ObjectID;
var db = require('../db');
var mongoose = require("mongoose");
var Event = require("../models/event");
var { callModel: Call, callSchema } = require("../models/call");
/*
var oids = [];
ids.forEach(function(item){
oids.push(new ObjectId(item));
});
*/
const compareCalls = (a, b) => {
const aTimestamp = new Date(a.time).getTime()
const bTimestamp = new Date(b.time).getTime()
if (aTimestamp > bTimestamp) {
return -1
} else {
return 1
}
}
exports.addNewEvent = async function (req, res, next) {
process.nextTick(async function () {
let event = new Event();
if (!req.body) {
console.error("No Request Body")
next();
}
//console.log(req);
console.log(req.body);
const title = req.body.title;
const description = req.body.description;
const callIds = req.body.callIds;
let objectIds = [];
callIds.forEach((id) => {
objectIds.push(new ObjectID(id));
})
event.title = title.replace(/[^a-zA-Z0-9 \.\-\_]/g, "");
event.description = description.replace(/[^a-zA-Z0-9 \.\-\_]/g, "");
try {
let calls = await Call.find({ "_id": { $in: objectIds } });
if (callIds.length != calls.length) {
res.status(500);
res.send("Not all of the Calls were found");
}
calls = calls.sort(compareCalls);
event.startTime = new Date(calls[0].time).getTime();
event.endTime = new Date(calls[calls.length - 1].time).getTime();
event.expireTime = event.startTime;
calls.forEach((call) => {
if (event.shortNames.indexOf(call.shortName) === -1) {
event.shortNames.push(call.shortName);
}
});
event.calls = calls;
console.log(await event.save());
res.contentType('json');
res.send(JSON.stringify({
success: false,
error: "Upload failed"
}));
}
catch (err) {
console.error(err);
res.status(500);
res.send("Error parsing sourcelist " + err);
}
})
};

View File

@@ -8,7 +8,7 @@ var mongoose = require("mongoose");
var System = require("../models/system");
var Talkgroup = require("../models/talkgroup");
var Group = require("../models/group");
var Call = require("../models/call");
var {callModel:Call} = require("../models/call");
var secrets = require("../config/secrets");
var util = require("util")
var config = require('../config/config.json');

View File

@@ -13,7 +13,7 @@ var systems = require("./controllers/systems");
var talkgroups = require("./controllers/talkgroups");
var groups = require("./controllers/groups");
var stats = require("./controllers/stats");
var events = require("./controllers/events");
var config = require('./config/config.json');
var mongoose = require("mongoose");
@@ -169,6 +169,7 @@ function addSystemClients(req, res, next) {
/*------ CALLS ----------*/
app.get('/card/:id', calls.get_card);
app.get('/:shortName/call/:id', calls.get_call);
app.get('/:shortName/calls/latest', calls.get_latest_calls);
@@ -209,6 +210,9 @@ app.get('/:shortName/talkgroups', talkgroups.get_talkgroups);
/*------ GROUPS ----------*/
app.get('/:shortName/groups', groups.get_groups);
/*------ EVENTS ----------*/
app.post('/events', events.addNewEvent);
/*------ STATS ----------*/
app.get('/:shortName/errors', stats.get_errors);

View File

@@ -26,4 +26,5 @@ var callSchema = mongoose.Schema({
});
module.exports = mongoose.model('Call', callSchema);
exports.callSchema = callSchema;
exports.callModel = mongoose.model('Call', callSchema);

19
backend/models/event.js Normal file
View File

@@ -0,0 +1,19 @@
var mongoose = require('mongoose');
var {callSchema} = require('./call');
console.log(callSchema)
var groupSchema = mongoose.Schema({
title: String,
description: String,
expireTime: Number,
startTime: Number,
endTime: Number,
shortNames: [String],
calls: [callSchema]
},
{
timestamps: true
});
module.exports = mongoose.model('Event', groupSchema);

4339
backend/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -77,11 +77,12 @@ function PlaylistBuilder(props) {
let listItems = "";
listItems = playlist.map((call, index) => {
let tgAlpha = "";
let tgAlpha = call.talkgroupNum;
if (talkgroupsData) {
const talkgroup = talkgroupsData.talkgroups[call.talkgroupNum]
tgAlpha = talkgroup.alpha
tgAlpha = talkgroup.alpha?talkgroup.alpha:tgAlpha;
}
const time = new Date(call.time);
const callTime = time.toLocaleTimeString();
const callDate = time.toLocaleDateString();

6
node_modules/.package-lock.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"name": "trunk-server",
"lockfileVersion": 2,
"requires": true,
"packages": {}
}

6
package-lock.json generated Normal file
View File

@@ -0,0 +1,6 @@
{
"name": "trunk-server",
"lockfileVersion": 2,
"requires": true,
"packages": {}
}