diff --git a/server/boot/commit.js b/server/boot/commit.js index be08d85348..c04169f732 100644 --- a/server/boot/commit.js +++ b/server/boot/commit.js @@ -19,6 +19,18 @@ import { const sendNonUserToFront = ifNoUserRedirectTo('/'); const debug = debugFactory('freecc:commit'); +function findNonprofit(name) { + let nonprofit; + if (name) { + nonprofit = _.find(nonprofits, (nonprofit) => { + return name === nonprofit.name; + }); + } + + nonprofit = nonprofit || nonprofits[0]; + return nonprofit; +} + export default function commit(app) { const router = app.loopback.Router(); const { Pledge } = app.models; @@ -38,16 +50,9 @@ export default function commit(app) { function commitToNonprofit(req, res) { let nonprofitName = unDasherize(req.query.nonprofit); - let nonprofit; + const nonprofit = findNonprofit(nonprofitName); debug('looking for nonprofit', nonprofitName); - if (nonprofitName) { - nonprofit = _.find(nonprofits, (nonprofit) => { - return nonprofitName === nonprofit.name; - }); - } - - nonprofit = nonprofit || nonprofits[0]; res.render( 'commit/', @@ -61,20 +66,26 @@ export default function commit(app) { function pledge(req, res, next) { const { user } = req; const { - nonprofit = 'girl develop it', + nonprofit: nonprofitName = 'girl develop it', amount = '5', goal = 'Front End Development Certification' } = req.query; + const nonprofit = findNonprofit(nonprofitName); + observeQuery(user, 'pledge') .flatMap(oldPledge => { // create new pledge for user - const pledge = Pledge({ - nonprofit, - amount, - goal, - userId: user.id - }); + const pledge = Pledge( + Object.assign( + { + amount, + goal, + userId: user.id + }, + nonprofit + ) + ); if (oldPledge) { debug('user already has pledge, creating a new one'); diff --git a/server/boot/user.js b/server/boot/user.js index ae6453f5d8..f266fa6f12 100644 --- a/server/boot/user.js +++ b/server/boot/user.js @@ -164,7 +164,10 @@ module.exports = function(app) { const username = req.params.username.toLowerCase(); const { path } = req; User.findOne( - { where: { username } }, + { + where: { username }, + include: 'pledge' + }, function(err, profileUser) { if (err) { return next(err); @@ -175,6 +178,7 @@ module.exports = function(app) { }); return res.redirect('/'); } + profileUser = profileUser.toJSON(); var cals = profileUser .progressTimestamps @@ -217,7 +221,6 @@ module.exports = function(app) { return (obj.name || '').match(/^Waypoint/i); }); - debug('user is fec', profileUser.isFrontEndCert); res.render('account/show', { title: 'Camper ' + profileUser.username + '\'s portfolio', username: profileUser.username, @@ -227,6 +230,8 @@ module.exports = function(app) { isGithubCool: profileUser.isGithubCool, isLocked: !!profileUser.isLocked, + pledge: profileUser.pledge, + isFrontEndCert: profileUser.isFrontEndCert, isFullStackCert: profileUser.isFullStackCert, isHonest: profileUser.isHonest, diff --git a/server/views/account/show.jade b/server/views/account/show.jade index e48c80eff9..ae7c9a3e0e 100644 --- a/server/views/account/show.jade +++ b/server/views/account/show.jade @@ -58,6 +58,12 @@ block content h1.flat-top.wrappable= name h1.flat-top.wrappable= location h1.flat-top.text-primary= "[ " + (progressTimestamps.length) + " ]" + if pledge + .spacer + h4 I am commited to giving $#{pledge.amount} to + a(href='#{pledge.donate}') #{pledge.displayName} + | each month until I have complete the #{pledge.goal} + .spacer if isFrontEndCert a.btn.btn-primary(href='/' + username + '/front-end-certification') View My Front End Development Certification if isFullStackCert