"use strict" var console = process.console var yamlConfig = require('node-yaml-config') var path = require('path') var async = require('async') var config = yamlConfig.load(path.join(__dirname, '/../../config/config.yml')) var lib = require('../lib') // lib.authorize() // lib.listEvents() // lib.createEvent() var url = config.server.url var port = config.server.port function rmsRes(res) { this._40401 = function (data) { res.json({ resultCode: '40401', resultDescription: 'Data not found' }).end() } this._50000 = function (data) { console.tag('ERROR!').time().file().error(data) res.json({ resultCode: '50000', resultDescription: 'System Error', }).end() } this._40301 = function (data) { res.json({ resultCode: '40301', resultDescription: 'Missing or invalid parameter' }).end() } this._20000 = function (data) { console.tag().time().file().info(data) res.json({ resultCode: '20000', resultDescription: 'Success', data: data }).end() } } function strToTime(date) { var strDate = new Date(date) return strDate.getTime() } function ggToKendo(data) { var dataToArr = [] try { for (var n = 0; n < data.items.length; n++) { dataToArr.push({ "TaskID": data.items[n].id, "EventTypeID": checkObjEmpty(data.items[n].extendedProperties, 'private', 'EventTypeID'), "PropertyID": checkObjEmpty(data.items[n].extendedProperties, 'private', 'PropertyID'), "Title": data.items[n].summary, "Description": data.items[n].description, "StartTimezone": "Asia/Bangkok", "Start": new Date(data.items[n].start.dateTime), "End": new Date(data.items[n].end.dateTime), "EndTimezone": "Asia/Bangkok", "RecurrenceRule": null, "RecurrenceID": null, "RecurrenceException": null, "IsAllDay": false }) } } catch (error) { console.tag().time().file().error(error.message) } finally { return dataToArr } } function home(req, res) { res.render('index') } function index(req, res) { var rms = new rmsRes(res) console.tag().time().file().log(req.body) lib.getNewToken((err, authUrl) => { if (err) { rms._50000(err) } else { rms._20000(authUrl) } }) } function setToken(req, res) { var rms = new rmsRes(res) console.tag().time().file().log(req.body) var code = req.body.code lib.setNewToken(code, (err, token) => { if (err) { rms._50000(err) } else { rms._20000(token) } }) } function events(req, res) { var rms = new rmsRes(res) lib.authorize((err, auth, authUrl) => { if (err) { rms._50000(err) } else { lib.listEvents(auth, (err, response) => { if (err) { if (authUrl) { console.tag().time().file().info(authUrl) rms._20000(authUrl) } else { rms._50000(err) } } else { // console.tag().time().file().info(response) res.jsonp(ggToKendo(response)) res.end() } }) } }) } function eventCreate(req, res) { var rms = new rmsRes(res) console.tag().time().file().log(req.body) let payload = req.body if (typeof payload.models == "string") { payload.models = JSON.parse(req.body.models) payload = payload.models[0] } lib.authorize((err, auth) => { let options = lib.eventBuilder(payload) if (err) { rms._50000(err) } else { options.auth = auth } lib.createEvent(options, (err, result) => { if (err) { rms._50000(err) } else { rms._20000(result) } }) }) } function oauth2callback(req, res) { var rms = new rmsRes(res) var code = req.query.code lib.setNewToken(code, (err, token) => { if (err) { rms._50000(err) } else { res.redirect('http://localhost:3030/home') } }) } function eventDelete(req, res) { var rms = new rmsRes(res) console.tag().time().file().log(req.body) let payload = req.body if (typeof payload.models == "string") { payload.models = JSON.parse(req.body.models) payload = payload.models[0] } lib.authorize((err, auth) => { let options = lib.deleteBuilder(payload) if (err) { rms._50000(err) } else { console.tag().time().file().info(auth) options.auth = auth } lib.deleteEvent(options, (err, result) => { if (err) { rms._50000(err) } else { rms._20000(result) } }) }) } function eventUpdate(req, res) { var rms = new rmsRes(res) console.tag().time().file().log(req.body) let payload = req.body if (typeof payload.models == "string") { payload.models = JSON.parse(req.body.models) payload = payload.models[0] } lib.authorize((err, auth) => { let options = lib.updateBuilder(payload) if (err) { rms._50000(err) } else { console.tag().time().file().info(auth) options.auth = auth } lib.updateEvent(options, (err, result) => { if (err) { rms._50000(err) } else { rms._20000(result) } }) }) } function checkObjEmpty(obj, parm, name) { if (obj) { if (Object.getOwnPropertyNames(obj)) { if (name == 'EventTypeID') { return obj[parm].eventTypeID } else if (name == 'PropertyID') { return obj[parm].propertyID } } } else { return } } module.exports.index = index module.exports.events = events module.exports.eventCreate = eventCreate module.exports.eventUpdate = eventUpdate module.exports.eventDelete = eventDelete module.exports.home = home module.exports.setToken = setToken module.exports.oauth2callback = oauth2callback