mirror of
https://github.com/openmhz/trunk-server.git
synced 2026-11-13 09:17:30 -05:00
upgraded most of the Backend
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
var ObjectID = require('mongodb').ObjectID;
|
||||
var db = require('../db');
|
||||
var mongoose = require("mongoose");
|
||||
var {callModel:Call} = require("../models/call");
|
||||
var { callModel: Call } = require("../models/call");
|
||||
var Star = require("../models/star");
|
||||
|
||||
var defaultNumResults = 50;
|
||||
@@ -11,7 +11,7 @@ var defaultNumResults = 50;
|
||||
var channels = {};
|
||||
|
||||
|
||||
function get_calls(query, numResults, res) {
|
||||
async function get_calls(query, numResults, res) {
|
||||
|
||||
var calls = [];
|
||||
var fields = {
|
||||
@@ -27,42 +27,40 @@ function get_calls(query, numResults, res) {
|
||||
url: true
|
||||
};
|
||||
|
||||
db.get().collection('calls', function(err, transCollection) {
|
||||
transCollection.find(query.filter, fields, function(err, cursor) {
|
||||
if (err) {
|
||||
console.warn("Error - get_calls() Could not find item " + err + " filter: " + query.filter);
|
||||
res.send(404, 'Sorry, we cannot find that!');
|
||||
return;
|
||||
}
|
||||
cursor.sort(query.sort_order).limit(numResults).each(function(err, item) {
|
||||
if (item) {
|
||||
call = {
|
||||
_id: item._id.toHexString(),
|
||||
talkgroupNum: item.talkgroupNum,
|
||||
url: item.url,
|
||||
filename: item.path + item.name,
|
||||
time: item.time,
|
||||
srcList: item.srcList,
|
||||
star: item.star,
|
||||
freq: item.freq,
|
||||
len: Math.round(item.len)
|
||||
};
|
||||
calls.push(call);
|
||||
} else {
|
||||
res.contentType('json');
|
||||
res.send(JSON.stringify({
|
||||
calls: calls,
|
||||
direction: query.direction
|
||||
}));
|
||||
}
|
||||
});
|
||||
const transCollection = db.get().collection('calls');
|
||||
const sort = { length: -1 };
|
||||
try {
|
||||
let cursor = transCollection.find(query.filter, fields).sort(sort).limit(numResults);
|
||||
await cursor.forEach(function (item) {
|
||||
|
||||
call = {
|
||||
_id: item._id.toHexString(),
|
||||
talkgroupNum: item.talkgroupNum,
|
||||
url: item.url,
|
||||
filename: item.path + item.name,
|
||||
time: item.time,
|
||||
srcList: item.srcList,
|
||||
star: item.star,
|
||||
freq: item.freq,
|
||||
len: Math.round(item.len)
|
||||
};
|
||||
calls.push(call);
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
res.contentType('json');
|
||||
res.send(JSON.stringify({
|
||||
calls: calls,
|
||||
direction: query.direction
|
||||
}));
|
||||
} catch (err) {
|
||||
console.warn("Error - get_calls() Could not find item " + err + " filter: " + query.filter);
|
||||
res.send(404, 'Sorry, we cannot find that!');
|
||||
return;
|
||||
};
|
||||
}
|
||||
|
||||
function build_filter(filter_type, code, start_time, direction, shortName, numResults, starred, res) {
|
||||
async function build_filter(filter_type, code, start_time, direction, shortName, numResults, starred, res) {
|
||||
var filter = {};
|
||||
var query = {};
|
||||
var FilterType = {
|
||||
@@ -71,12 +69,7 @@ function build_filter(filter_type, code, start_time, direction, shortName, numRe
|
||||
Group: 2,
|
||||
Unit: 3
|
||||
};
|
||||
/* removed to see if it helps queries
|
||||
if (starred) {
|
||||
filter.star = {
|
||||
$gt: 0
|
||||
};
|
||||
}*/
|
||||
|
||||
|
||||
if (start_time) {
|
||||
var start = new Date(start_time);
|
||||
@@ -112,45 +105,32 @@ function build_filter(filter_type, code, start_time, direction, shortName, numRe
|
||||
|
||||
if (filter_type) {
|
||||
if ((filter_type == "group") && code && (code.indexOf(',') == -1)) {
|
||||
db.get().collection("groups", function(err, groupCollection) {
|
||||
if (err || !groupCollection) {
|
||||
console.warn("[" + shortName + "] Error - build_filter() Group Collection does not exist " + err);
|
||||
res.contentType('json');
|
||||
res.send(JSON.stringify( {
|
||||
message: 'That Group ID doesnt exist.'
|
||||
}));
|
||||
return;
|
||||
}
|
||||
groupCollection.findOne({
|
||||
'shortName': shortName,
|
||||
'_id': ObjectID.createFromHexString(code)
|
||||
}, function(err, group) {
|
||||
if (err) {
|
||||
console.warn("[" + shortName + "] Error - build_filter() Group ID does not exist " + err);
|
||||
res.contentType('json');
|
||||
res.send(JSON.stringify( {
|
||||
message: 'That Group ID doesnt exist.'
|
||||
}));
|
||||
} else if (!group) {
|
||||
console.warn("[" + shortName + "] Error - build_filter() group is null " + err);
|
||||
res.contentType('json');
|
||||
res.send(JSON.stringify({
|
||||
message: 'That Group ID doesnt exist.'
|
||||
}));
|
||||
} else{
|
||||
filter.talkgroupNum = {
|
||||
$in: group.talkgroups
|
||||
};
|
||||
query['filter'] = filter;
|
||||
const groupCollection = db.get().collection("groups");
|
||||
|
||||
get_calls(query, numResults, res);
|
||||
}
|
||||
});
|
||||
|
||||
const group = await groupCollection.findOne({
|
||||
'shortName': shortName,
|
||||
'_id': ObjectID.createFromHexString(code)
|
||||
});
|
||||
if (!group) {
|
||||
console.warn("[" + shortName + "] Error - build_filter() group is null " + err);
|
||||
res.contentType('json');
|
||||
res.status(404);
|
||||
res.send(JSON.stringify({
|
||||
message: 'That Group ID doesnt exist.'
|
||||
}));
|
||||
}
|
||||
filter.talkgroupNum = {
|
||||
$in: group.talkgroups
|
||||
};
|
||||
query['filter'] = filter;
|
||||
|
||||
get_calls(query, numResults, res);
|
||||
|
||||
} else {
|
||||
if ((filter_type == "talkgroup") || (filter_type == "group")) {
|
||||
if (code) {
|
||||
var codeArray = code.split(',').map(function(item) {
|
||||
var codeArray = code.split(',').map(function (item) {
|
||||
return parseInt(item, 10);
|
||||
});
|
||||
filter.talkgroupNum = {
|
||||
@@ -161,7 +141,7 @@ function build_filter(filter_type, code, start_time, direction, shortName, numRe
|
||||
|
||||
if (filter_type == "unit") {
|
||||
if (code) {
|
||||
var codeArray = code.split(',').map(function(item) {
|
||||
var codeArray = code.split(',').map(function (item) {
|
||||
return parseInt(item, 10);
|
||||
});
|
||||
filter.srcListv = {
|
||||
@@ -180,7 +160,7 @@ function build_filter(filter_type, code, start_time, direction, shortName, numRe
|
||||
}
|
||||
|
||||
|
||||
exports.get_card = function(req, res) {
|
||||
exports.get_card = async function (req, res) {
|
||||
var objectId = req.params.id;
|
||||
try {
|
||||
var o_id = ObjectID.createFromHexString(objectId);
|
||||
@@ -193,28 +173,24 @@ exports.get_card = function(req, res) {
|
||||
}));
|
||||
return;
|
||||
}
|
||||
db.get().collection('calls', function(err, transCollection) {
|
||||
transCollection.findOne({
|
||||
'_id': o_id
|
||||
},
|
||||
function(err, item) {
|
||||
//console.log(util.inspect(item));
|
||||
if (item) {
|
||||
var time = new Date(item.time);
|
||||
var timeString = time.toLocaleTimeString("en-US");
|
||||
var dateString = time.toDateString();
|
||||
res.render('card', {
|
||||
item: item,
|
||||
channel: channels[item.talkgroupNum],
|
||||
time: timeString,
|
||||
date: dateString
|
||||
});
|
||||
} else {
|
||||
console.warn("Error - /card/:id Could not find Item " + err);
|
||||
res.send(404, 'Sorry, we cannot find that!');
|
||||
}
|
||||
});
|
||||
});
|
||||
const transCollection = db.get().collection('calls');
|
||||
const item = await transCollection.findOne({ '_id': o_id });
|
||||
|
||||
//console.log(util.inspect(item));
|
||||
if (item) {
|
||||
var time = new Date(item.time);
|
||||
var timeString = time.toLocaleTimeString("en-US");
|
||||
var dateString = time.toDateString();
|
||||
res.render('card', {
|
||||
item: item,
|
||||
channel: channels[item.talkgroupNum],
|
||||
time: timeString,
|
||||
date: dateString
|
||||
});
|
||||
} else {
|
||||
console.warn("Error - /card/:id Could not find Item " + err);
|
||||
res.send(404, 'Sorry, we cannot find that!');
|
||||
}
|
||||
}
|
||||
|
||||
function package_call(item) {
|
||||
@@ -240,7 +216,7 @@ function package_call(item) {
|
||||
return call;
|
||||
}
|
||||
|
||||
exports.remove_star = function(req, res, next) {
|
||||
exports.remove_star = async function (req, res, next) {
|
||||
var objectId = req.params.id;
|
||||
try {
|
||||
var o_id = ObjectID.createFromHexString(objectId);
|
||||
@@ -254,28 +230,26 @@ exports.remove_star = function(req, res, next) {
|
||||
}));
|
||||
return;
|
||||
}
|
||||
Call.findOneAndUpdate({ _id: objectId }, { $inc: { star: -1 } }, {new: true },function(err, item) {
|
||||
if (err) {
|
||||
res.status(500);
|
||||
res.send(JSON.stringify({
|
||||
success: false,
|
||||
message: err,
|
||||
"_id": objectId
|
||||
}));
|
||||
} else {
|
||||
var call = package_call(item);
|
||||
req.call = call;
|
||||
res.send(JSON.stringify({
|
||||
success: true,
|
||||
call: call
|
||||
}));
|
||||
next();
|
||||
}
|
||||
})
|
||||
const item = await Call.findOneAndUpdate({ _id: objectId }, { $inc: { star: -1 } }, { new: true });
|
||||
if (!item) {
|
||||
res.status(500);
|
||||
res.send(JSON.stringify({
|
||||
success: false,
|
||||
"_id": objectId
|
||||
}));
|
||||
} else {
|
||||
var call = package_call(item);
|
||||
req.call = call;
|
||||
res.send(JSON.stringify({
|
||||
success: true,
|
||||
call: call
|
||||
}));
|
||||
next();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
exports.add_star = function(req, res, next) {
|
||||
exports.add_star = async function (req, res, next) {
|
||||
var objectId = req.params.id;
|
||||
try {
|
||||
var o_id = ObjectID.createFromHexString(objectId);
|
||||
@@ -289,28 +263,27 @@ exports.add_star = function(req, res, next) {
|
||||
}));
|
||||
return;
|
||||
}
|
||||
Call.findOneAndUpdate({ _id: objectId }, { $inc: { star: 1 } }, {new: true },function(err, item) {
|
||||
if (err) {
|
||||
res.status(500);
|
||||
res.send(JSON.stringify({
|
||||
success: false,
|
||||
message: err,
|
||||
"_id": objectId
|
||||
}));
|
||||
} else {
|
||||
var call = package_call(item);
|
||||
req.call = call;
|
||||
res.send(JSON.stringify({
|
||||
success: true,
|
||||
call: call
|
||||
}));
|
||||
next();
|
||||
}
|
||||
})
|
||||
const item = await Call.findOneAndUpdate({ _id: objectId }, { $inc: { star: 1 } }, { new: true });
|
||||
if (!item) {
|
||||
res.status(500);
|
||||
res.send(JSON.stringify({
|
||||
success: false,
|
||||
"_id": objectId
|
||||
}));
|
||||
} else {
|
||||
var call = package_call(item);
|
||||
req.call = call;
|
||||
res.send(JSON.stringify({
|
||||
success: true,
|
||||
call: call
|
||||
}));
|
||||
next();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
exports.get_call = function(req, res) {
|
||||
exports.get_call = async function (req, res) {
|
||||
var objectId = req.params.id;
|
||||
try {
|
||||
var o_id = ObjectID.createFromHexString(objectId);
|
||||
@@ -324,37 +297,34 @@ exports.get_call = function(req, res) {
|
||||
}));
|
||||
return;
|
||||
}
|
||||
db.get().collection('calls', function(err, transCollection) {
|
||||
transCollection.findOne({
|
||||
'_id': o_id
|
||||
},
|
||||
function(err, item) {
|
||||
if (item) {
|
||||
var call = package_call(item);
|
||||
res.contentType('json');
|
||||
res.send(JSON.stringify({
|
||||
success: true,
|
||||
call: call})
|
||||
);
|
||||
const transCollection = db.get().collection('calls');
|
||||
const item = await transCollection.findOne({ '_id': o_id });
|
||||
|
||||
if (item) {
|
||||
var call = package_call(item);
|
||||
res.contentType('json');
|
||||
res.send(JSON.stringify({
|
||||
success: true,
|
||||
call: call
|
||||
})
|
||||
);
|
||||
|
||||
} else {
|
||||
console.warn("[" + req.params.shortName + "] Error - /:shortName/call/:id Could not find item " + err + " ID: " + objectId);
|
||||
res.status(404);
|
||||
res.send(JSON.stringify({
|
||||
success: false,
|
||||
"_id": objectId
|
||||
}));
|
||||
}
|
||||
|
||||
} else {
|
||||
console.warn("[" + req.params.shortName + "] Error - /:shortName/call/:id Could not find item " + err + " ID: " + objectId);
|
||||
res.status(404);
|
||||
res.send(JSON.stringify({
|
||||
success: false,
|
||||
error: err,
|
||||
"_id": objectId
|
||||
}));
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
exports.get_latest_calls = function(req, res) {
|
||||
exports.get_latest_calls = function (req, res) {
|
||||
var filter_code = req.query["filter-code"];
|
||||
var filter_type = req.query["filter-type"];
|
||||
var starred = req.query["filter-starred"] === 'true'?true:false;
|
||||
var starred = req.query["filter-starred"] === 'true' ? true : false;
|
||||
var short_name = req.params.shortName.toLowerCase();
|
||||
//console.log("[" + short_name + "] Latest - Call Get Filter code: " + filter_code + " Filter Type: " + filter_type );
|
||||
|
||||
@@ -362,10 +332,10 @@ exports.get_latest_calls = function(req, res) {
|
||||
}
|
||||
|
||||
|
||||
exports.get_next_calls = function(req, res) {
|
||||
exports.get_next_calls = function (req, res) {
|
||||
var filter_code = req.query["filter-code"];
|
||||
var filter_type = req.query["filter-type"];
|
||||
var starred = req.query["filter-starred"] === 'true'?true:false;
|
||||
var starred = req.query["filter-starred"] === 'true' ? true : false;
|
||||
var start_time = parseInt(req.query["time"]);
|
||||
var short_name = req.params.shortName.toLowerCase();
|
||||
//console.log("[" + short_name + "] Next Calls - time: " + start_time + " Filter code: " + filter_code + " Filter Type: " + filter_type);
|
||||
@@ -373,10 +343,10 @@ exports.get_next_calls = function(req, res) {
|
||||
build_filter(filter_type, filter_code, start_time, 'newer', short_name, 1, starred, res);
|
||||
}
|
||||
|
||||
exports.get_newer_calls = function(req, res) {
|
||||
exports.get_newer_calls = function (req, res) {
|
||||
var filter_code = req.query["filter-code"];
|
||||
var filter_type = req.query["filter-type"];
|
||||
var starred = req.query["filter-starred"] === 'true'?true:false;
|
||||
var starred = req.query["filter-starred"] === 'true' ? true : false;
|
||||
var start_time = parseInt(req.query["time"]);
|
||||
var short_name = req.params.shortName.toLowerCase();
|
||||
//console.log("[" + short_name + "] Newer Calls - time: " + start_time + " Filter code: " + filter_code + " Filter Type: " + filter_type );
|
||||
@@ -384,10 +354,10 @@ exports.get_newer_calls = function(req, res) {
|
||||
build_filter(filter_type, filter_code, start_time, 'newer', short_name, defaultNumResults, starred, res);
|
||||
}
|
||||
|
||||
exports.get_older_calls = function(req, res) {
|
||||
exports.get_older_calls = function (req, res) {
|
||||
var filter_code = req.query["filter-code"];
|
||||
var filter_type = req.query["filter-type"];
|
||||
var starred = req.query["filter-starred"] === 'true'?true:false;
|
||||
var starred = req.query["filter-starred"] === 'true' ? true : false;
|
||||
var start_time = parseInt(req.query["time"]);
|
||||
var short_name = req.params.shortName.toLowerCase();
|
||||
//console.log("[" + short_name + "] Older Calls - time: " + start_time + " Filter code: " + filter_code + " Filter Type: " + filter_type);
|
||||
@@ -397,10 +367,10 @@ exports.get_older_calls = function(req, res) {
|
||||
|
||||
|
||||
//Delete this after I fix the iPhone app
|
||||
exports.get_iphone_calls = function(req, res) {
|
||||
exports.get_iphone_calls = function (req, res) {
|
||||
var filter_code = req.query["filter-code"];
|
||||
var filter_type = req.query["filter-type"];
|
||||
var starred = req.query["filter-starred"] === 'true'?true:false;
|
||||
var starred = req.query["filter-starred"] === 'true' ? true : false;
|
||||
var start_time = parseInt(req.params.time);
|
||||
var short_name = req.params.shortName.toLowerCase();
|
||||
//console.log("[" + short_name + "] iPhone Newer Calls - time: " + start_time + " Filter code: " + filter_code + " Filter Type: " + filter_type);
|
||||
@@ -408,10 +378,10 @@ exports.get_iphone_calls = function(req, res) {
|
||||
build_filter(filter_type, filter_code, start_time, 'older', short_name, defaultNumResults, starred, res);
|
||||
}
|
||||
|
||||
exports.get_calls = function(req, res) {
|
||||
exports.get_calls = function (req, res) {
|
||||
var filter_code = req.query["filter-code"];
|
||||
var filter_type = req.query["filter-type"];
|
||||
var starred = req.query["filter-starred"] === 'true'?true:false;
|
||||
var starred = req.query["filter-starred"] === 'true' ? true : false;
|
||||
var short_name = req.params.shortName.toLowerCase();
|
||||
//console.log("[" + short_name + "] Inital Calls - Call Get Filter code: " + filter_code + " Filter Type: " + filter_type);
|
||||
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
var db = require('../db');
|
||||
|
||||
exports.get_groups = function(req, res) {
|
||||
db.get().collection('groups', function(err, grp_coll) {
|
||||
grp_coll.find({
|
||||
'shortName': req.params.shortName.toLowerCase()
|
||||
}).toArray(function(err, grp_results) {
|
||||
res.contentType('json');
|
||||
res.send(JSON.stringify(grp_results));
|
||||
});
|
||||
});
|
||||
exports.get_groups = async function (req, res) {
|
||||
|
||||
const grp_coll = db.get().collection('groups');
|
||||
const cursor = grp_coll.find({ 'shortName': req.params.shortName.toLowerCase() });
|
||||
const grp_results = await cursor.toArray();
|
||||
|
||||
res.contentType('json');
|
||||
res.send(JSON.stringify(grp_results));
|
||||
}
|
||||
|
||||
@@ -2,18 +2,16 @@ var mongoose = require("mongoose");
|
||||
var User = require("../models/user");
|
||||
var System = require("../models/system");
|
||||
|
||||
exports.get_systems = function (req, res) {
|
||||
exports.get_systems = async function (req, res) {
|
||||
let fromDate = new Date(Date.now() - 60 * 60 * 24 * 30 * 1000);
|
||||
System.find({lastActive: {$gte: fromDate}}).populate('userId', "screenName").
|
||||
exec(function (err, results) {
|
||||
if (err) {
|
||||
console.error("Error - get_systems: " + err.message);
|
||||
const results = await System.find({lastActive: {$gte: fromDate}}).populate('userId', "screenName").catch( err => {
|
||||
console.error("Error - get_systems: " + err.message);
|
||||
res.json({
|
||||
success: false,
|
||||
message: err
|
||||
});
|
||||
return;
|
||||
}
|
||||
});
|
||||
var systemList = [];
|
||||
for (var result in results) {
|
||||
|
||||
@@ -47,6 +45,5 @@ exports.get_systems = function (req, res) {
|
||||
success: true,
|
||||
systems: systemList
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,18 +1,15 @@
|
||||
var db = require('../db');
|
||||
|
||||
exports.get_talkgroups = function(req, res) {
|
||||
db.get().collection('talkgroups', function(err, tg_coll) {
|
||||
tg_coll.find({
|
||||
'shortName': req.params.shortName.toLowerCase()
|
||||
}).toArray(function(err, tg_results) {
|
||||
var talkgroups = {};
|
||||
for (var tg in tg_results) {
|
||||
talkgroups[tg_results[tg].num] = tg_results[tg];
|
||||
}
|
||||
res.contentType('json');
|
||||
res.send(JSON.stringify({
|
||||
talkgroups: talkgroups
|
||||
}));
|
||||
});
|
||||
});
|
||||
exports.get_talkgroups = async function (req, res) {
|
||||
const tg_coll = db.get().collection('talkgroups');
|
||||
const cursor = tg_coll.find({ 'shortName': req.params.shortName.toLowerCase() })
|
||||
const tg_results = await cursor.toArray();
|
||||
var talkgroups = {};
|
||||
for (var tg in tg_results) {
|
||||
talkgroups[tg_results[tg].num] = tg_results[tg];
|
||||
}
|
||||
res.contentType('json');
|
||||
res.send(JSON.stringify({
|
||||
talkgroups: talkgroups
|
||||
}));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user