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); }); }