Files
biomedjs/app/routes/spans.js
Dobie Wollert 977ea41cef more bits
2015-12-20 23:44:49 -08:00

98 lines
1.8 KiB
JavaScript

"use strict";
const moment = require('moment-timezone');
const _ = require('lodash');
/**
* GET /api/spans
*/
function index(req, res) {
req.check('user').optional().isMongoId();
req.check('workorder').optional().isMongoId();
req.check('date').optional().isISO8601();
req.check('week').optional().isISO8601();
if (!req.query.user && !req.query.workorder) {
return res.json({
error: {
message: 'Must specify a type filter.'
}
});
}
if (req.query.user && !req.query.date && !req.query.week) {
return res.json({
error: {
message: 'Must specify a date filter.'
}
});
}
const query = {};
if (req.query.user) {
query.user = req.query.user;
}
if (req.query.workorder) {
query.workorder = req.query.workorder;
}
if (req.query.date) {
const date = moment(req.query.date);
const startOfDay = date.clone().startOf('day');
const endOfDay = date.clone().endOf('day');
query.start = {
$gte: startOfDay,
$lte: endOfDay
};
}
if (req.query.week) {
const week = moment(req.query.week);
const startOfWeek = week.clone().startOf('week');
const endOfWeek = week.clone().endOf('week');
query.start = {
$gte: startOfWeek,
$lte: endOfWeek
};
}
var results = req.db.TimeClockSpan
.find(query)
.sort('start')
.exec();
res.promise(results);
}
/**
* POST /api/spans/:span_id
*/
function update(req, res) {
req.check('id').isMongoId();
var data = req.body;
delete data._id;
delete data.__v;
const result = req.db.TimeClockSpan
.findById(req.params.id)
.exec()
.then((entity) => {
_.assign(entity, data);
return entity.save();
});
res.promise(result);
}
module.exports = {
index,
update
};