flatten google config structure, add address fields

This commit is contained in:
Riku Rouvila
2017-07-08 10:37:19 +01:00
parent a49a779cf5
commit c58485aafa
2 changed files with 37 additions and 44 deletions

View File

@@ -18,11 +18,9 @@
"tokenSecret": ""
},
"google": {
"spreadsheet_id": "",
"credentials": {
"client_email": "",
"private_key": ""
}
"spreadsheetId": "",
"clientEmail": "",
"privateKey": ""
}
},
"production": {

View File

@@ -9,42 +9,44 @@ var slack = require('../services/slack');
var config = require('../lib/config');
var stripe = require('stripe')(config.stripe.secretKey);
function log(message) {
console.log(message);
slack.createMessage(message);
}
function addNewMemberToSheets(name, email, residence, slackHandle) {
function addNewMemberToSheets(data, callback) {
var {name, email, address, postcode, city, handle} = data;
var doc = new GoogleSpreadsheet(config.google.spreadsheet_id);
var sheet;
async.series([
function setAuth(step) {
async.waterfall([
function setAuth(cb) {
console.log('Start Google Spreadsheed auth.');
doc.useServiceAccountAuth(config.google.credentials, step);
doc.useServiceAccountAuth({
clientEmail: config.google.clientEmail,
privateKey: config.google.privateKey
}, () => cb());
},
function getInfoAndWorksheets(step) {
function getInfoAndWorksheets(cb) {
console.log('Start Google Spreadsheet info fetch.');
doc.getInfo(function(err, info) {
sheet = info.worksheets[0];
step();
cb(null, info.worksheets[0]);
});
},
function addRow(step) {
function addRow(sheet, cb) {
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,
'katuosoite': address,
'postinumero': postcode,
'paikkakunta': city,
'slack': handle,
'sähköposti': email
}, function(err){
console.log(`Error: ${err}`);
});
}, cb);
}
], function(err){
if( err ) {
console.log(`Error: ${err}`);
}
});
], callback);
}
module.exports = function (app) {
@@ -56,33 +58,26 @@ module.exports = function (app) {
console.log(`Start membership addition with body: ${JSON.stringify(req.body)}`);
stripe.charges.create({
amount: 1000,
amount: config.membership.price,
card: req.body.stripeToken,
currency: 'eur',
description: `Koodiklinikka ry jäsenyys: ${req.body.name}`
}, function(err, charge) {
if (err) {
console.log(JSON.stringify(err, null, 2));
var message = 'Membership payment FAILED for: ```' + JSON.stringify(req.body) + '``` Reason: ```' + err + '```';
console.log(message);
slack.createMessage(message);
res.status(500).send({status_text: 'payment_error'});
log(`Membership payment FAILED for: ${JSON.stringify(req.body)}. Reason: ${err.message}`);
res.status(500).send('payment_error');
return;
} else {
var message = 'Membership payment SUCCESS for: ```' + JSON.stringify(req.body) + '```';
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;
}
log(`Membership payment SUCCESSFUL for: ${JSON.stringify(req.body)}`);
addNewMemberToSheets(req.body.userInfo, (err) => {
if(err) {
log(`Storing membership info FAILED for: ${JSON.stringify(req.body)}. Reason: ${err.message}`);
res.status(500).send('membership_storage_error');
return;
}
res.status(200).send('payment_success');
});
});
});
};