'use strict' const console = process.console const yamlConfig = require('node-yaml-config') const path = require('path') const async = require('async') const config = yamlConfig.load(path.join(__dirname, '/../../config/config.yml')) const lib = require('../lib') // lib.authorize() // lib.listEvents() // lib.createEvent() const url = config.server.url const port = config.server.port function responseJSON(code, description, data, status) { return { "code": code, "description": description, "result": { "data": data, "status": status } } } 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'), "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.error(error.message) } finally { return dataToArr } } function home(req, res) { res.render('index') } function index(req, res) { console.log(req.body) lib.getNewToken((err, authUrl) => { if (err) { console.error(err) } else { console.info(authUrl) res.send(authUrl) } }) } function setToken(req, res) { console.log(req.body) var code = req.body.code lib.setNewToken(code, (err, token) => { if (err) { console.error(err) res.send(err) res.end() } else { console.info(token) res.send(token) res.end() } }) } function events(req, res) { // console.log(req.body) lib.authorize((err, auth, authUrl) => { if (err) { console.error(err) res.send(err) } else { lib.listEvents(auth, (err, response) => { if (err) { if (authUrl) { console.info(authUrl) res.json(responseJSON(res.code, "redirect to get auth code", authUrl, "redirect")) res.end() } else { console.error(err) res.json(responseJSON(res.code, "response error", err.message, "failed")) res.end() } } else { // console.info(response) res.jsonp(ggToKendo(response)) res.end() } }) } }) } function eventCreate(req, res) { console.log(req.body) let payload = req.body if (typeof payload.models == "string") { payload.models = JSON.parse(req.body.models) payload = payload.models[0] } // let summary = payload.summary // let description = payload.description // let email = payload.email // let startDate = payload.startDate // let startTimezone = payload.startTimezone // let endDate = payload.endDate // let endTimezone = payload.endTimezone // // let extendedProperties = payload.extendedProperties // payload.extendedProperties = { // "private": { // "eventTypeID": payload.EventTypeID // } // } lib.authorize((err, auth) => { let options = lib.eventBuilder(payload) if (err) { res.send(err) } else { options.auth = auth } lib.createEvent(options, (err, result) => { if (err) { res.send(err) } else { console.info(result) res.send(result) res.end() } }) }) } function oauth2callback(req, res) { var code = req.query.code lib.setNewToken(code, (err, token) => { if (err) { res.send(err) res.end() } else { res.redirect('http://localhost:8000/calendar') } }) } function eventDelete(req, res) { console.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) { console.error(err.message) res.send(err) } else { console.info(auth) options.auth = auth } lib.deleteEvent(options, (err, result) => { if (err) { console.error(err.message) res.send(err) } else { console.info(result) res.send(result) res.end() } }) }) } function eventUpdate(req, res) { console.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) { console.error(err.message) res.send(err) } else { console.info(auth) options.auth = auth } lib.updateEvent(options, (err, result) => { if (err) { console.error(err) res.send(err) } else { console.info(result) res.send(result) res.end() } }) }) } function checkObjEmpty(obj, parm) { if (obj) { if (Object.getOwnPropertyNames(obj)) { return obj[parm].eventTypeID } } 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