home.controller.js 3.16 KB
'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 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].etag,
                "OwnerID": 2,
                "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) {
    lib.getNewToken((err, authUrl) => {
        if (err) {
            console.error(err.message)
        } else {
            res.send(authUrl)
        }
    })
}

function setToken(req, res) {
    var code = req.body.code
    lib.setNewToken(code, (err, token) => {
        if (err) {
            res.send(err)
            res.end()
        } else {
            res.send(token)
            res.end()
        }
    })
}

function events(req, res) {
    lib.authorize((err, auth, authUrl) => {
        if (err) {
            res.send(err)
        } else if (authUrl) {
            console.info(authUrl)
            res.send(authUrl)
            res.end()
        } else {
            lib.listEvents(auth, (err, response) => {
                if (err) {
                    res.send(err)
                } else {
                    res.jsonp(ggToKendo(response))
                }
            })
        }

    })
}

function create(req, res) {
    let payload = req.body

    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

    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 {
                res.send(result)
            }
        })
    })
}

module.exports.index = index
module.exports.events = events
module.exports.create = create
module.exports.home = home
module.exports.setToken = setToken