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 offset = moment.tz("Mountain/Denver").offset(new Date()); var nowMountain = moment.tz(new Date(),"Mountain/Denver"); var nextSundayMorning = nextDay(nowMountain, 0, 7); var nextSundayMorning2 = nextDay(nowMountain, 0, 11); var nextSundayEvening = nextDay(nowMountain, 0, 19); var nextWednesday = nextDay(nowMountain, 3, 7, 19); if (nextWednesday < nextSundayMorning){ nextWednesday.setHours(19); nextWednesday.setMinutes(0); nextWednesday.setSeconds(0); events.push({ title: 'Wednesday Evening', startDate: nextWednesday, endDate: new Date(nextWednesday).setHours(20), description: 'Bible study and prayer for Wednesday evening.' }); } events.push({ title: 'Sunday School ' + offset, startDate: moment.tz(nextSundayMorning,"America/Denver").format(), endDate: new Date(nextSundayMorning).setHours(11), description: 'Sunday School Service' }); events.push({ title: 'Sunday Morning Worship', startDate: nextSundayMorning2, endDate: new Date(nextSundayMorning2).setHours(12), description: 'Sunday Morning Worship Service' }); events.push({ title: 'Sunday Evening', startDate: nextSundayEvening, endDate: new Date(nextSundayEvening).setHours(20), 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){ startDate = new Date(startDate); startDate.setDate(startDate.getDate() + (dayOfWeek+(7-startDate.getDay())) % 7); startDate.setHours(hour); startDate.setMinutes(0); startDate.setSeconds(0); startDate.setMilliseconds(0); return startDate; } module.exports = router;