Skip to content
This repository was archived by the owner on Dec 14, 2023. It is now read-only.

Commit 7419454

Browse files
committed
Merge pull request #184 from Wardormeur/bugfix/timeouts
Moved salesforce related functionnalities into remote queue in cp-sal…
2 parents effe416 + 42e9a66 commit 7419454

File tree

3 files changed

+12
-74
lines changed

3 files changed

+12
-74
lines changed

profiles.js

Lines changed: 1 addition & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ module.exports = function (options) {
173173
if (err) return done(err);
174174

175175
if (process.env.SALESFORCE_ENABLED === 'true') {
176-
process.nextTick(function () { updateSalesForce(profile); });
176+
seneca.act({role: 'cd-salesforce', cmd: 'queud_update_profiles', param: profile, fatal$: false});
177177
}
178178

179179
syncUserObj(profile, function (err, res) {
@@ -189,50 +189,6 @@ module.exports = function (options) {
189189
}
190190
}
191191

192-
function salesForceLogger (level, message) {
193-
if (level === 'error') {
194-
seneca.log.error(message);
195-
} else if (level === 'success') {
196-
seneca.log.info(message);
197-
} else if (level === 'info') {
198-
seneca.log.info(message);
199-
}
200-
}
201-
202-
function updateSalesForce (profile) {
203-
seneca.make$(ENTITY_NS).load$(profile.id, function (err, res) {
204-
if (err) return salesForceLogger('error', '[error][salesforce] profile id: ' + profile.id + ' not present');
205-
206-
if (res.userType.toLowerCase() === 'champion') {
207-
var dobOffset = moment(profile.dob).utcOffset();
208-
var account = {
209-
PlatformId__c: profile.userId
210-
};
211-
_.extend(account, {
212-
Name: profile.name,
213-
Email__c: profile.email,
214-
DateofBirth__c: moment.utc(profile.dob).add(dobOffset, 'minutes'),
215-
BillingCountry: profile.country.countryName || null,
216-
BillingCity: profile.place.nameWithHierarchy || null,
217-
BillingState: profile.place.admin2Name || null,
218-
BillingStreet: profile.address || null,
219-
Phone: profile.phone || null,
220-
Linkedin__c: profile.linkedin || null,
221-
Twitter__c: (profile.twitter) ? 'https://twitter.com/' + profile.twitter : null,
222-
Notes__c: profile.notes || null,
223-
Projects__c: profile.projects || null,
224-
ProgrammingLanguages__c: (profile.programmingLanguages) ? profile.programmingLanguages.join(';') : null,
225-
LanguagesSpoken__c: (profile.languagesSpoken) ? profile.languagesSpoken.join(';') : null
226-
});
227-
228-
seneca.act('role:cd-salesforce,cmd:save_account', {userId: profile.userId, account: account}, function (err, res) {
229-
if (err) return salesForceLogger('error', '[error][salesforce] error saving champion account id: ' + profile.userId);
230-
return salesForceLogger('success', '[salesforce] updated champion account id: ' + profile.userId);
231-
});
232-
}
233-
});
234-
}
235-
236192
function syncUserObj (profile, done) {
237193
var updatedFields = {};
238194
updatedFields.id = profile.userId;

service.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,18 @@ require('./migrate-psql-db.js')(function (err) {
2626

2727
seneca.use(require('./email-notifications.js'));
2828
seneca.use(require('./agreements.js'));
29-
seneca.use(require('./profiles.js'), {postgresql: config['postgresql-store']});
29+
seneca.use(require('./profiles.js'), { postgresql: config['postgresql-store'] });
3030
seneca.use(require('./oauth2.js'), config.oauth2);
3131
seneca.use('user');
3232
seneca.use('auth');
33-
seneca.use(require('./users.js'), {'email-notifications': config['email-notifications'], 'postgresql': config['postgresql-store'], 'users': config['users']});
33+
seneca.use(require('./users.js'),
34+
{ 'email-notifications': config['email-notifications'],
35+
'postgresql': config['postgresql-store'],
36+
'users': config['users']
37+
});
3438
seneca.use(require('./nodebb-api.js'), config.nodebb);
3539

3640
seneca.listen()
37-
.client({type: 'web', port: 10304, pin: 'role:cd-salesforce,cmd:*'})
38-
.client({type: 'web', port: 10301, pin: 'role:cd-dojos,cmd:*'});
41+
.client({ type: 'web', port: 10304, pin: { role: 'cd-salesforce', cmd: '*' } })
42+
.client({ type: 'web', port: 10301, pin: 'role:cd-dojos,cmd:*' });
3943
});

users.js

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ module.exports = function (options) {
3737
var seneca = this;
3838
seneca.act({role: plugin, cmd: 'load', id: args.id}, function (err, user) {
3939
if (err) return done(err);
40-
4140
return done(null, _.pick(user, ['id', 'email', 'name']));
4241
});
4342
}
@@ -59,29 +58,6 @@ module.exports = function (options) {
5958
seneca.make(ENTITY_NS).list$(query, done);
6059
}
6160

62-
// We create an Account in Salesforce with the champion information and we also create a Lead.
63-
// The user.id is used for both Account and Leads.
64-
function updateSalesForce (user) {
65-
// ideally would be done in a workqueue
66-
process.nextTick(function () {
67-
if (process.env.SALESFORCE_ENABLED !== 'true') return;
68-
69-
var account = {
70-
PlatformId__c: user.id,
71-
PlatformUrl__c: 'https://zen.coderdojo.com/dashboard/profile/' + user.id,
72-
Email__c: user.email,
73-
Name: user.name,
74-
UserType__c: 'Champion',
75-
RecordTypeId: process.env.SALESFORCE_ACC_RECORDTYPEID
76-
};
77-
78-
seneca.act('role:cd-salesforce,cmd:save_account', {userId: user.id, account: account}, function (err, res) {
79-
if (err) return seneca.log.error('Error creating Account in SalesForce!', err);
80-
seneca.log.info('Created Account in SalesForce', account, res);
81-
});
82-
});
83-
}
84-
8561
function cmd_register (args, done) {
8662
var isChampion = args.isChampion === true;
8763
var locality = args.locality || 'en_US';
@@ -163,7 +139,9 @@ module.exports = function (options) {
163139
};
164140
seneca.act({role: 'cd-profiles', cmd: 'save', profile: profileData}, function (err, profile) {
165141
if (err) return done(err);
166-
if (registerResponse.ok === true && isChampion === true) updateSalesForce(registerResponse.user);
142+
if (registerResponse.ok === true && isChampion === true) {
143+
seneca.act({role: 'cd-salesforce', cmd: 'queud_update_users', param: {user: registerResponse.user}, fatal$: false});
144+
}
167145
done(null, registerResponse);
168146
});
169147
});

0 commit comments

Comments
 (0)