I think dates on events are actually working now!

Transactions
= 2017-09-20 02:11:56 -06:00
parent bc6f96455a
commit a2ac4a8bca
8 changed files with 42 additions and 25 deletions

View File

@ -16,7 +16,7 @@ export class EventService {
}
getEvents(page: number): Observable<Event[]> {
let url = EVENTS_BY_PAGE_URL + page + "?pageSize=" + 10 + "&date=" + (new Date()).getTime().toString();
let url = EVENTS_BY_PAGE_URL + page + "?pageSize=" + 10;
return this.http.get(url).map(this.gotData,this).catch(this.dataError)
};
@ -31,6 +31,7 @@ export class EventService {
fd.append("description",event.description);
fd.append("startDate",new Date(event.startDate).getTime().toString()); //Pass date as milliseconds since 1970
fd.append("endDate",new Date(event.endDate).getTime().toString()); //Pass date as milliseconds since 1970
fd.append("timezoneOffset",new Date().getTimezoneOffset().toString());
return this.http.post(EVENTS_ADD_URL,fd,{withCredentials:true})
.map(d=>{ return d.json(); })

View File

@ -50,7 +50,7 @@ export class SermonService {
fd.append("date",new Date(sermon.sermonDate).getTime().toString()); //Pas date as milliseconds since 1970
fd.append("author",sermon.author);
fd.append("file",sermonFile);
fd.append("timezoneOffset",new Date().getTimezoneOffset().toString());
return this.http.post(SERMON_ADD_URL,fd,{withCredentials:true})
.map(d=>{ return d.json(); })
.catch(this.dataError);
@ -63,6 +63,7 @@ export class SermonService {
fd.append("description",sermon.description);
fd.append("date",new Date(sermon.sermonDate).toUTCString());
fd.append("author",sermon.author);
fd.append("timezoneOffset",new Date().getTimezoneOffset().toString());
return this.http.put(SERMON_UPDATE_URL,fd,{withCredentials:true})
.map(d => { return d.json(); })
.catch(this.dataError);

View File

@ -4,5 +4,6 @@ module.exports = mysql.createConnection({
user: "ofbapi",
password: "87hjdusiodksyeunsjkdis7",
database: "ofb",
multipleStatements: true
multipleStatements: true,
timezone:'UTC+0'
});

View File

@ -21,15 +21,17 @@ exports.getEvent = function(eventId, callback, includeDeleted){
event.endDate = rows[0].EndDate;
event.title = rows[0].Title;
event.description = rows[0].Description;
event.timezoneOffset = rows[0].TimezoneOffset;
}
callback(null,event);
});
}
exports.getEvents = function(pageSize, pageNumber, date, callback){
exports.getEvents = function(pageSize, pageNumber, callback){
var offset = (pageNumber - 1) * pageSize;
connection.query("SELECT * FROM Events WHERE DeletedDate IS NULL AND StartDate >= ? ORDER BY StartDate ASC LIMIT ?,?;",[date,offset,pageSize],function(err,rows,fields){
var dte = new Date();
connection.query("SELECT * FROM Events WHERE DeletedDate IS NULL AND StartDate >= ? ORDER BY StartDate ASC LIMIT ?,?;",[dte,offset,pageSize],function(err,rows,fields){
if (err){
console.log(err);
callback(err);
@ -43,6 +45,7 @@ exports.getEvents = function(pageSize, pageNumber, date, callback){
event.endDate = rows[i].EndDate;
event.title = rows[i].Title;
event.description = rows[i].Description;
event.timezoneOffset = rows[i].TimezoneOffset;
events.push(event);
}
console.log(events);
@ -50,17 +53,17 @@ exports.getEvents = function(pageSize, pageNumber, date, callback){
});
};
exports.insertEvent = function(titleOrEventObject, startDateOrCallbackFunction, endDate, description, callback){
exports.insertEvent = function(titleOrEventObject, startDateOrCallbackFunction, endDate, timezoneOffset, description, callback){
if (typeof startDateOrCallbackFunction === 'function'){
insertEventFromObject(titleOrEventObject, startDateOrCallbackFunction);
return;
}
//Date is passed as milliseconds since 1970 so we will convert it to a date object
var startDte = new Date(+startDateOrCallbackFunction);
console.log("Start Date");
//Wrap it in another Date object to getTime so that we can make sure the date is in UTC format
var startDte = new Date(new Date(+startDateOrCallbackFunction).getTime());
console.log(startDte);
var endDte = new Date(+endDate);
connection.query("INSERT INTO Events (CreatedDate,ModifiedDate,Id,Title,StartDate,EndDate,Description) VALUES(CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,NULL,?,?,?,?)",[titleOrEventObject,startDte,endDte,description],function(error,result){
var endDte = new Date(new Date(+endDate).getTime());
connection.query("INSERT INTO Events (CreatedDate,ModifiedDate,Id,Title,StartDate,EndDate,TimezoneOffset,Description) VALUES(CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,NULL,?,?,?,?,?)",[titleOrEventObject,startDte,endDte,timezoneOffset,description],function(error,result){
if (error){
console.log(error);
callback(error);
@ -77,7 +80,7 @@ exports.insertEvent = function(titleOrEventObject, startDateOrCallbackFunction,
}
function insertEventFromObject(event, callback){
dbSermons.insertSermon(event.title,event.startDate,event.endDate,evvent.description,callback);
dbSermons.insertSermon(event.title,event.startDate,event.endDate,event.timezoneOffset,event.description,callback);
}
exports.deleteEvent = function(eventIdOrEventObject, callback){

View File

@ -75,13 +75,14 @@ exports.searchSermons = function(pageSize, pageNumber, searchTerm, callback){
});
}
exports.insertSermon = function(dateOrSermonObject, titleOrCallbackFunction, author, description, file, callback){
exports.insertSermon = function(dateOrSermonObject, titleOrCallbackFunction, timezoneOffset, author, description, file, callback){
if (typeof title === 'function'){
insertSermonFromObject(dateOrSermonObject,titleOrCallbackFunction);
return;
}
//Date is passed in as milliseconds from 1970 so we will convert it here
dateOrSermonObject = new Date(+dateOrSermonObject);
//Wrap it in another Date object to getTime so that we can make sure the date is in UTC format
dateOrSermonObject = new Date(new Date(+dateOrSermonObject).getTime());
connection.query("INSERT INTO Sermons (CreatedDate,ModifiedDate,Id,Date,Title,Author,Description,File) VALUES(?,CURRENT_TIMESTAMP,NULL,?,?,?,?,?)",[new Date,dateOrSermonObject,titleOrCallbackFunction,author,description,file],function(error,result){
if (error){
console.log(error);
@ -99,7 +100,7 @@ exports.insertSermon = function(dateOrSermonObject, titleOrCallbackFunction, aut
}
function insertSermonFromObject(sermon, callback){
dbSermons.insertSermon(sermon.date,sermon.title,sermon.author,sermon.description,sermon.file,callback);
dbSermons.insertSermon(sermon.date,sermon.title,sermon.timezoneOffset,sermon.author,sermon.description,sermon.file,callback);
}
exports.updateSermon = function(sermonIdOrSermonObject, dateOrCallbackFunction, title, author, description, callback){

View File

@ -20,14 +20,10 @@ router.get("/:id",function(req,res){
router.get("/page/:page",function(req,res){
console.log("page");
var pageSize = 5;
var dte = new Date();
if (req.query.pageSize){
pageSize = parseInt(req.query.pageSize);
}
if (req.query.date){
dte = new Date(+req.query.date);
}
dbEvents.getEvents(pageSize,req.params.page,dte,function(err,events){
dbEvents.getEvents(pageSize,req.params.page,function(err,events){
if (err){
res.status(500).json({"status":500,"message":"Error processing request","error":err});
return;
@ -45,7 +41,7 @@ router.post("/a/", function(req,res){
return;
}
dbEvents.insertEvent(req.body.title,req.body.startDate,req.body.endDate,req.body.description,function(error,event){
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;

View File

@ -92,7 +92,7 @@ router.post("/a/", function(req,res){
return;
}
req.body.file = "sermons/" + req.body.file;
dbSermons.insertSermon(req.body.date,req.body.title,req.body.author,req.body.description,req.body.file,function(error,sermon){
dbSermons.insertSermon(req.body.date,req.body.title,req.body.timezoneOffset,req.body.author,req.body.description,req.body.file,function(error,sermon){
if (error){
removeFile(req.body.tmpPath);
res.status(500).json({"status":500,"message":"There was an error inserting the sermon"});

View File

@ -108,10 +108,13 @@ function getEventMeta(req, res, id){
return;
}
var monthNum = event.startDate.getMonth();
var startDate = event.startDate;
//Calculate time with local timezone offset but keep it in UTC
startDate.setTime(startDate.getTime() - event.timezoneOffset * 60 * 1000);
var monthNum = startDate.getMonth();
var monthName = MONTHS_FULL[monthNum];
var day = event.startDate.getDate();
var day = startDate.getDate();
var port = req.socket.localPort;
var imageUrl = req.protocol + "://" + req.hostname + calendarImageUrl + monthName + "/" + day;
@ -125,7 +128,7 @@ function getEventMeta(req, res, id){
<meta property="og:url" content="`+ evntUrl +`"/>
<meta property="og:type" content="website" />
<meta property="og:title" content="` + event.title + `" />
<meta property="og:description" content="` + event.startDate.toString() + ` | ` + event.description + `" />
<meta property="og:description" content="` + dateToString(startDate) + ` | ` + event.description + `" />
<meta property="og:image" content="` + imageUrl + `"/>
<meta property="og:image:width" content="200" />
<meta property="og:image:height" content="200" />
@ -141,6 +144,17 @@ function getEventMeta(req, res, id){
function dateToString(dte){
var val = dte.toLocaleString([],{ day: 'numeric', month: 'numeric', year: 'numeric', hour: 'numeric', minute:'2-digit'});
var month = dte.getUTCMonth() + 1;
var day = dte.getUTCDate();
var year = dte.getUTCFullYear();
var hour = dte.getUTCHours();
var minute = dte.getUTCMinutes();
minute < 10 ? "0" + minute : minute;
var pmOrAm = hour > 11 ? " PM" : " AM";
hour = hour > 11 ? hour - 12 : hour;
val = month + "/" + day + "/" + year + " - " + hour + (minute > 0 ? ":" + minute : "") + pmOrAm;
console.log(val);
return val;
}