105 lines
3.9 KiB
JavaScript
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);
|
|
});
|
|
} |