mirror of
https://github.com/koodiklinikka/koodiklinikka.fi-api.git
synced 2026-02-21 06:55:26 +00:00
89 lines
2.6 KiB
JavaScript
89 lines
2.6 KiB
JavaScript
'use strict';
|
|
|
|
var Promise = require('bluebird');
|
|
var GoogleSpreadsheet = require('google-spreadsheet');
|
|
var async = require('async');
|
|
var moment = require('moment');
|
|
|
|
var slack = require('../services/slack');
|
|
var config = require('../lib/config');
|
|
var stripe = require('stripe')(config.stripe.secretKey);
|
|
|
|
|
|
function addNewMemberToSheets(name, email, residence, slackHandle) {
|
|
var doc = new GoogleSpreadsheet(config.google.spreadsheet_id);
|
|
var sheet;
|
|
|
|
async.series([
|
|
function setAuth(step) {
|
|
console.log('Start Google Spreadsheed auth.');
|
|
doc.useServiceAccountAuth(config.google.credentials, step);
|
|
},
|
|
function getInfoAndWorksheets(step) {
|
|
console.log('Start Google Spreadsheet info fetch.');
|
|
doc.getInfo(function(err, info) {
|
|
sheet = info.worksheets[0];
|
|
step();
|
|
});
|
|
},
|
|
function addRow(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
|
|
* Endpoint for adding a new member to the association
|
|
*/
|
|
app.post('/membership', function(req, res, next) {
|
|
console.log(`Start membership addition with body: ${JSON.stringify(req.body)}`);
|
|
|
|
stripe.charges.create({
|
|
amount: 1000,
|
|
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'});
|
|
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;
|
|
|
|
}
|
|
});
|
|
});
|
|
};
|