add functionality for writing new member to google sheets

This commit is contained in:
Keksike
2017-07-07 11:23:07 +03:00
parent 03c5af65ce
commit 45ac5ff2bd
2 changed files with 48 additions and 1 deletions

View File

@@ -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",

View File

@@ -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;