diff --git a/config.template.json b/config.template.json index 58c078a..f49fbaa 100644 --- a/config.template.json +++ b/config.template.json @@ -18,11 +18,9 @@ "tokenSecret": "" }, "google": { - "spreadsheet_id": "", - "credentials": { - "client_email": "", - "private_key": "" - } + "spreadsheetId": "", + "clientEmail": "", + "privateKey": "" } }, "production": { diff --git a/routes/membership.js b/routes/membership.js index 228a785..7bac04b 100644 --- a/routes/membership.js +++ b/routes/membership.js @@ -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'); + }); }); }); };