diff --git a/package.json b/package.json index 80a4eae..7d1a714 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "cors": "^2.7.1", "express": "^4.11.0", "lodash": "^3.10.1", + "moment": "^2.18.1", "morgan": "^1.5.1", "newrelic": "^1.18.0", "node-twitter": "0.5.2", diff --git a/routes/membership.js b/routes/membership.js index c7af8a2..7641e33 100644 --- a/routes/membership.js +++ b/routes/membership.js @@ -1,10 +1,54 @@ 'use strict'; -var Promise = require('bluebird'); +var Promise = require('bluebird'); +var GoogleSpreadsheet = require('google-spreadsheet'); +var async = require('async'); +var moment = require('moment'); + +// spreadsheet key is the long id in the sheets URL +var doc = new GoogleSpreadsheet('1BUL1pjaXVlO5MRuOk-W5MEmKqxfzGnj7eFMif8tIVaU'); +var sheet; + var slack = require('../services/slack'); var config = require('../lib/config'); var stripe = require('stripe')(config.stripe.secretKey); + +function addNewMemberToSheets(name, email, residence, slackHandle) { + async.series([ + function setAuth(step) { + console.log('Start Google Spreadsheed auth.'); + var creds = require('../Koodiklinikka-f802649bba5e.json'); + doc.useServiceAccountAuth(creds, step); + }, + function getInfoAndWorksheets(step) { + console.log('Start Google Spreadsheet info fetch.'); + doc.getInfo(function(err, info) { + sheet = info.worksheets[0]; + step(); + }); + }, + function workingWithRows(step) { + console.log('Start Google Spreadsheet row write.'); + sheet.addRow({ + 'jäsenmaksu': true, + 'koko nimi': name, + 'liittymispäivä': moment().format('DD.MM.YYYY'), + 'lisääjä': 'Koodiklinikka.fi-api', + 'paikkakunta': residence, + 'slack': slackHandle, + 'sähköposti': email + }, function(err){ + console.log(`Error: ${err}`); + }); + } + ], function(err){ + if( err ) { + console.log(`Error: ${err}`); + } + }); +} + module.exports = function (app) { /* * POST /membership @@ -35,6 +79,8 @@ module.exports = function (app) { console.log(message); slack.createMessage(message); + addNewMemberToSheets(req.body.userInfo.name, req.body.userInfo.email, req.body.userInfo.residence, req.body.userInfo.handle); + res.status(200).send({status_text: 'payment_success'}); return;