UIAngular/Server/src/routes/api/events.js

128 lines
4.9 KiB
JavaScript

var express = require('express');
var router = express.Router();
var dbEvents = require('../../database/events');
var moment = require('moment-timezone');
router.get("/:id",function(req,res){
dbEvents.getEvent(req.params.id,function(error,event){
if (error){
res.status(404).json({"status":404,"message":"Error processing request"});
return;
}
if (event == null){
res.status(404).json({"status":404,"message":"Event does not exist"});
return;
}
res.status(200).json({"status":200,"event":event});
});
});
router.get("/page/:page",function(req,res){
console.log("page");
var pageSize = 5;
if (req.query.pageSize){
pageSize = parseInt(req.query.pageSize);
}
dbEvents.getEvents(pageSize,req.params.page,function(err,events){
if (err){
res.status(500).json({"status":500,"message":"Error processing request","error":err});
return;
}
if (req.params.page < 2 && events.length < 23){
var now = new Date();
var offset = moment.tz.zone("America/Denver").offset(new Date());
var sundaySchool = nextDay(now, 0, 10, 0, offset);
var sundayMorning = nextDay(now, 0, 11, 0, offset);
var sundayMorningEnd = nextDay(now, 0, 12, 30, offset);
var sundayEvening = nextDay(now, 0, 19, 0, offset);
var sundayEveningEnd = nextDay(now, 0, 20, 30, offset);
var wednesday = nextDay(now, 3, 19, 0, offset);
var wednesdayEnd = nextDay(now, 3, 20, 30, offset);
if (wednesday < sundaySchoo || 1 == 1){
events.push({
title: 'Wednesday Evening',
startDate: wednesday,
endDate: wednesdayEnd,
description: 'Bible study and prayer for Wednesday evening.'
});
}
events.push({
title: 'Sunday School ' + offset,
startDate: sundaySchool,
endDate: sundayMorning,
description: 'Sunday School Service'
});
events.push({
title: 'Sunday Morning Worship',
startDate: sundayMorning,
endDate: sundayMorningEnd,
description: 'Sunday Morning Worship Service'
});
events.push({
title: 'Sunday Evening',
startDate: sundayEvening,
endDate: sundayEveningEnd,
description: 'Sunday Evening Service'
});
// id: json.id,
// title: json.title,
// startDate: new Date(json.startDate),
// endDate: new Date(json.endDate),
// description: json.description
}
res.status(200).json({"status":200,"events":events,"page":req.params.page,"pageSize":pageSize > events.length ? events.length : pageSize});
});
});
router.post("/a/", function(req,res){
console.log(req.body);
if (!req.body.title || !req.body.startDate || !req.body.endDate || !req.body.description){
removeFile(req.body.tmpPath);
res.status(400).json({"status":400,"message":"title, startDate, endDate, and description are required fields in the body"});
return;
}
dbEvents.insertEvent(req.body.title,req.body.startDate,req.body.endDate,req.body.timezoneOffset,req.body.description,function(error,event){
if (error){
res.status(500).json({"status":500,"message":"There was an error inserting the event"});
return;
}
if (event == null){
res.status(404).json({"status":404,"message":"Event does not exist"});
return;
}
res.status(201).json({"status":201,"event":event});
return;
});
});
router.delete("/a/",function(req,res){
if (!req.body.id){
res.status(400).json({"status":400,"message":"id of the event needs to be supplied to delete"});
return;
}
dbEvents.deleteEvent(req.body.id,function(error,result){
if (error){
res.status(500).json({"status":500,"message":"There was an error deleting the event"});
return;
}
res.status(200).json({"status":200,"affectedRows":result.affectedRows});
});
});
function nextDay(startDate, dayOfWeek, hour, minutes, offset){
startDate = new Date(startDate);
startDate.setDate(startDate.getDate() + (dayOfWeek+(7-startDate.getDay())) % 7);
startDate.setHours(hour);
startDate.setMinutes(minutes);
startDate.setSeconds(0);
startDate.setMilliseconds(0);
startDate.setTime(startDate.getTime() + (offset * 60000));
return startDate;
}
module.exports = router;