UIAngular/Server/src/database/events.js

105 lines
3.9 KiB
JavaScript

var connection = require("./connection");
var dbEvents = this;
exports.getEvent = function(eventId, callback, includeDeleted){
var query = "SELECT * FROM Events WHERE Id = ? AND DeletedDate IS NULL;";
if (includeDeleted === true){
query = "SELECT * FROM Events WHERE Id = ?;";
}
connection.query(query,[eventId],function(error,rows,fields){
if (error){
console.log(error);
callback(error);
return;
}
var event = null;
if (rows.length > 0){
event = {};
event.id = rows[0].Id;
event.startDate = rows[0].StartDate;
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, callback){
var offset = (pageNumber - 1) * pageSize;
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);
return;
}
var events = [];
for (var i = 0; i < rows.length; i++){
var event = {};
event.id = rows[i].Id;
event.startDate = rows[i].StartDate;
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);
callback(null,events);
});
};
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
//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(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);
return;
}
dbEvents.getEvent(result.insertId,function(error,event){
if (error){
callback(error);
return;
}
callback(null,event);
});
});
}
function insertEventFromObject(event, callback){
dbSermons.insertSermon(event.title,event.startDate,event.endDate,event.timezoneOffset,event.description,callback);
}
exports.deleteEvent = function(eventIdOrEventObject, callback){
if (typeof eventIdOrEventObject !== 'number'){
eventIdOrEventObject = eventIdOrEventObject.id;
}
connection.query("UPDATE Events SET DeletedDate = CURRENT_TIMESTAMP WHERE Id = ?;",[eventIdOrEventObject],function(error,result){
if (error){
console.log(error);
callback(error);
return;
}
dbEvents.getEvent(eventIdOrEventObject,function(error,event){
if (error){
callback(error);
return;
}
console.log(event);
callback(null,{"affectedRows":result.affectedRows,"event":event});
},true);
});
}