From 2716183810fb94c31b05d65dff4284c9040c423c Mon Sep 17 00:00:00 2001 From: soe Date: Wed, 23 Jan 2013 01:50:36 +0100 Subject: [PATCH 1/2] updateMember function refactored to accept tabs --- lib/cloudspokes.js | 35 ++++++++++++++++++++++++++++++++++- routes/index.js | 12 +++++++++--- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/lib/cloudspokes.js b/lib/cloudspokes.js index fe9b1ae..91e7101 100644 --- a/lib/cloudspokes.js +++ b/lib/cloudspokes.js @@ -5,7 +5,7 @@ var nforce = require('nforce') var oauth; -exports.updateMember = function(memberId) { +exports.updateMember = function(memberId, memberTabs) { var org = nforce.createConnection({ clientId: process.env.DATABASEDOTCOM_CLIENT_ID, @@ -28,6 +28,39 @@ exports.updateMember = function(memberId) { member.Paperwork_Received__c = 'Paper Work Received'; member.Paperwork_Year__c = new Date().getFullYear(); + // challenge 2026 + // update member info here + var memberTextTabs = memberTabs.textTabs; + + // loop through text tabs and set member's fields + for(var i = 0; i < memberTextTabs.length; i++) { + var label = memberTextTabs[i].tabLabel; + var value = memberTextTabs[i].value; + + console.log(label +' -> '+ value); + + // please do pairing here + // please refer to this JSON output for tabs + // https://gist.github.com/4599410 + + /* + if(label == 'Name') { + member.Name__c = value; + } else if(label == 'Address') { + member.Address__c = value; + } else if(label == 'CityStateZip') { + // maybe split the string by comma? + + var chunks = value.split(','); + member.City__c = chunks[0]; + member.State__c = chunks[1]; + member.Zip__c = chunks[2]; + } + + */ + + } + org.update(member, oauth, function(err, resp){ if(!err) console.log('Member successfully updated'); }); diff --git a/routes/index.js b/routes/index.js index 294e80a..e8e8e59 100644 --- a/routes/index.js +++ b/routes/index.js @@ -19,7 +19,7 @@ exports.root = function(req, res) { exports.embeddedSigning = function (req, res) { console.log("embedded signing"); console.log(req.params) - res.render ('embeddedSigning', { title: "DocuSign CloudSpokes Documents", data: req.params } ); + res.render ('embeddedSigning', { title: "DocuSign CloudSpokes Documents", data: req.params } ); } @@ -36,7 +36,10 @@ exports.embeddedSigningComplete = function(req, res) { // // jeff?: do you want to do anything if this fails? // - cs.updateMember(userId); + + // challenge 2026 + // moved inside processGetEnvelope and extended the function + // cs.updateMember(userId); res.render('SigningComplete/success' , { title: "Signing Complete Success!", user: userId }); @@ -66,7 +69,10 @@ exports.embeddedSigningComplete = function(req, res) { // function processGetEnvelope(arguments) { - console.log(JSON.stringify(arguments)); + // challenge 2026 + // pass userTabs + var userTabs = arguments[1].replace(/(\r\n|\n|\r)/gm,""); + cs.updateMember(userId, JSON.parse(userTabs).signers[0].tabs); } function loginComplete (arguments) { From 750586c2c4b1f5ef5f8af696e707f9d2e82e92ef Mon Sep 17 00:00:00 2001 From: soe Date: Wed, 23 Jan 2013 10:28:45 +0100 Subject: [PATCH 2/2] tabs 2 fields mapping --- lib/cloudspokes.js | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/lib/cloudspokes.js b/lib/cloudspokes.js index 91e7101..9710706 100644 --- a/lib/cloudspokes.js +++ b/lib/cloudspokes.js @@ -22,7 +22,9 @@ exports.updateMember = function(memberId, memberTabs) { oauth = resp; console.log('Updating memberId: '+memberId); - org.query('select id, name from member__c where id = \''+memberId+'\'', oauth, function(err, resp){ + var query = 'select id, name from member__c where id = \''+memberId+'\''; + org.query(query, oauth, function(err, resp){ + console.log(resp); var member = resp.records[0]; member.Paperwork_Received__c = 'Paper Work Received'; @@ -32,6 +34,8 @@ exports.updateMember = function(memberId, memberTabs) { // update member info here var memberTextTabs = memberTabs.textTabs; + console.log(memberTabs.textTabs); + // loop through text tabs and set member's fields for(var i = 0; i < memberTextTabs.length; i++) { var label = memberTextTabs[i].tabLabel; @@ -39,28 +43,33 @@ exports.updateMember = function(memberId, memberTabs) { console.log(label +' -> '+ value); - // please do pairing here - // please refer to this JSON output for tabs - // https://gist.github.com/4599410 + // tabs 2 fields pairing here + // please refer to this JSON output for tabs - https://gist.github.com/4599410 + + if(label == 'Name') { // First_Name__c and Last_Name__c + var chunks = value.split(' '); + + member.First_Name__c = chunks[0].trim(); - /* - if(label == 'Name') { - member.Name__c = value; - } else if(label == 'Address') { - member.Address__c = value; + member.Last_Name__c = ''; + for(var i = 1; i < chunks.length; i++) { + member.Last_Name__c += ' '+ chunks[i].trim(); + } + } else if(label == 'Address') { // Address_Line1__c + member.Address_Line1__c = value; } else if(label == 'CityStateZip') { // maybe split the string by comma? var chunks = value.split(','); - member.City__c = chunks[0]; - member.State__c = chunks[1]; - member.Zip__c = chunks[2]; + + if(chunks[0]) member.City__c = chunks[0].trim(); + if(chunks[1]) member.State__c = chunks[1].trim(); + if(chunks[2]) member.Zip__c = chunks[2].trim(); } - - */ } - + console.log(member); + org.update(member, oauth, function(err, resp){ if(!err) console.log('Member successfully updated'); });