var express = require('express'); var router = express.Router(); var mongoose = require('mongoose'); require("../models/temperature"); var temperature = mongoose.model('temperature'); //api to return the max and min temps of each day based on location router.get('/allsensors', function(req, res, next) { //var location = req.query.location; temperature.aggregate([{$group : { _id : {location : "$location", month: {$month: "$updated" }, day: { $dayOfMonth: "$updated" }, year: { $year: "$updated" }}, max : {$max : "$temperature"}, min : {$min : "$temperature"}}}, {$sort : {"_id.month" : 1, "_id.day" : 1, "_id.year" : 1}}]).exec(function(err, info){ res.setHeader('Content-Type', 'application/json'); res.send(JSON.stringify(info, null, 4)); }); }); router.get('/sensorbylocation/year', function(req, res, next) { var loc = req.query.location; var ye = req.query.year; if (ye == null){ var date = new Date(); ye = date.getFullYear(); } //query finds a entries in a collection based on location and the year specified //they are then grouped by date and sorted by date as well temperature.aggregate([ {$project : {location : 1, temperature : 1, humidity : 1, year : {$year : {$subtract : ["$updated", 21600000]}}, month : {$month : {$subtract : ["$updated", 21600000]}}, day : {$dayOfMonth : {$subtract : ["$updated", 21600000]}}}}, {$match : {location : loc, year : parseInt(ye)}}, {$group : {_id : {location : "$location", day: "$day", month : "$month", year : "$year"}, max : {$max : "$temperature"}, min : {$min : "$temperature"}, humidity : {$avg : "$humidity"}}}, {$sort : {"_id.month" : 1, "_id.day" : 1}}]).exec(function(err, info){ res.setHeader('Content-Type', 'application/json'); res.send(JSON.stringify(info, null, 4)); }); }); router.get('/sensorbylocation/month', function(req, res, next) { var loc = req.query.location; var ye = req.query.year; var mo = req.query.month; var date = new Date(); if (ye == null){ ye = date.getFullYear(); } if (mo == null){ mo = date.getMonth(); } //query finds a entries in a collection based on location and the year specified //they are then grouped by date and sorted by date as well temperature.aggregate([ {$project : {location : 1, temperature : 1, humidity : 1, year : {$year : {$subtract : ["$updated", 21600000]}}, month : {$month : {$subtract : ["$updated", 21600000]}}, day : {$dayOfMonth : {$subtract : ["$updated", 21600000]}}}}, {$match : {location : loc, year : parseInt(ye), month : parseInt(mo)}}, {$group : {_id : {location : "$location", day: "$day", month : "$month", year : "$year"}, max : {$max : "$temperature"}, min : {$min : "$temperature"}, humidity : {$avg : "$humidity"}}}, {$sort : {"_id.day" : 1}}]).exec(function(err, info){ res.setHeader('Content-Type', 'application/json'); res.send(JSON.stringify(info, null, 4)); }); }); module.exports = router;