Skip to content
This repository was archived by the owner on Mar 4, 2025. It is now read-only.

Commit 41b847e

Browse files
author
vikasrohit
committed
AS#118090147171048, Mail chimp Integration
-- Added mail chimp angular service -- Added user to member list on page load
1 parent a8ef1df commit 41b847e

File tree

4 files changed

+96
-2
lines changed

4 files changed

+96
-2
lines changed

app/services/api.service.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ import _ from 'lodash'
7474
case 'SUBMISSIONS':
7575
case 'USER':
7676
return _getRestangularV3(CONSTANTS.AUTH_API_URL)
77+
case 'MAILCHIMP':
78+
return _getRestangularV3(CONSTANTS.INTERNAL_API_URL)
7779
default:
7880
return _getRestangularV3()
7981
}

app/services/mailchimp.service.js

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
import angular from 'angular'
2+
import _ from 'lodash'
3+
4+
(function() {
5+
'use strict'
6+
7+
angular.module('tc.services').factory('MailchimpService', MailchimpService)
8+
9+
MailchimpService.$inject = ['$http', 'logger', 'Restangular', 'CONSTANTS', 'ApiService', '$q']
10+
11+
function MailchimpService($http, logger, Restangular, CONSTANTS, ApiService, $q) {
12+
var mailchimpApi = ApiService.getApiServiceProvider('MAILCHIMP')
13+
var service = {
14+
getMemberSubscription: getMemberSubscription,
15+
addSubscription: addSubscription
16+
}
17+
return service
18+
19+
function getMemberSubscription(user) {
20+
return $q(function(resolve, reject) {
21+
mailchimpApi.one('mailchimp/lists', CONSTANTS.MAILCHIMP_LIST_ID)
22+
.one('members', user.userId).get()
23+
.then(function(resp) {
24+
resolve(resp)
25+
})
26+
.catch(function(err) {
27+
logger.error('Error adding member to subscription list', err)
28+
29+
var errorStatus = 'FATAL_ERROR'
30+
reject({
31+
status: errorStatus,
32+
msg: err.data.result.content
33+
})
34+
})
35+
})
36+
}
37+
38+
39+
function addSubscription(user) {
40+
var subscription = {
41+
userId: user.userId,
42+
firstName: user.firstName,
43+
lastName: user.lastName,
44+
interests: {}
45+
}
46+
subscription.interests[CONSTANTS.MAILCHIMP_NL_TCO] = true
47+
subscription.interests[CONSTANTS.MAILCHIMP_NL_IOS] = true
48+
subscription.interests[CONSTANTS.MAILCHIMP_NL_DEV] = true
49+
subscription.interests[CONSTANTS.MAILCHIMP_NL_DESIGN] = true
50+
subscription.interests[CONSTANTS.MAILCHIMP_NL_DATA] = true
51+
return $q(function(resolve, reject) {
52+
mailchimpApi.one('mailchimp/lists', CONSTANTS.MAILCHIMP_LIST_ID)
53+
.customPUT(subscription, 'members')
54+
.then(function(resp) {
55+
resolve(resp)
56+
})
57+
.catch(function(err) {
58+
logger.error('Error adding member to subscription list', err)
59+
60+
var errorStatus = 'FATAL_ERROR'
61+
62+
reject({
63+
status: errorStatus,
64+
msg: err.data.result.content
65+
})
66+
})
67+
})
68+
}
69+
}
70+
})()

app/skill-picker/skill-picker.controller.js

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import _ from 'lodash'
66

77
angular.module('tc.skill-picker').controller('SkillPickerController', SkillPickerController)
88

9-
SkillPickerController.$inject = ['$scope', 'CONSTANTS', 'ProfileService', '$state', 'userProfile', 'featuredSkills', 'logger', 'toaster', 'MemberCertService', '$q']
9+
SkillPickerController.$inject = ['$scope', 'CONSTANTS', 'ProfileService', '$state', 'userProfile', 'featuredSkills', 'logger', 'toaster', 'MemberCertService', '$q', 'MailchimpService']
1010

11-
function SkillPickerController($scope, CONSTANTS, ProfileService, $state, userProfile, featuredSkills, logger, toaster, MemberCertService, $q) {
11+
function SkillPickerController($scope, CONSTANTS, ProfileService, $state, userProfile, featuredSkills, logger, toaster, MemberCertService, $q, MailchimpService) {
1212
var vm = this
1313
vm.ASSET_PREFIX = CONSTANTS.ASSET_PREFIX
1414
vm.IOS_PROGRAM_ID = CONSTANTS.SWIFT_PROGRAM_ID
@@ -32,6 +32,7 @@ import _ from 'lodash'
3232
* Activates the controller.
3333
*/
3434
function activate() {
35+
addToMailingList()
3536
initCommunities()
3637
checkCommunityStatus()
3738
}
@@ -137,6 +138,20 @@ import _ from 'lodash'
137138
}
138139
}
139140

141+
function addToMailingList() {
142+
return MailchimpService.getMemberSubscription(userProfile).then(function(subscription) {
143+
console.log(subscription)
144+
if (!subscription) {
145+
return MailchimpService.addSubscription(userProfile).then(function(resp) {
146+
console.log(resp)
147+
})
148+
}
149+
}).catch(function(err) {
150+
//TODO some error alert to community admin
151+
console.log('error in adding user to member list')
152+
})
153+
}
154+
140155
/**
141156
* Persists the user's altered information.
142157
*/

app/topcoder.constants.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ angular.module('CONSTANTS', []).constant('CONSTANTS', {
44
'API_URL' : process.env.API_URL,
55
'AUTH_API_URL' : process.env.AUTH_API_URL,
66
'API_URL_V2' : process.env.API_URL_V2,
7+
'INTERNAL_API_URL' : process.env.INTERNAL_API_URL,
78
'ASSET_PREFIX' : process.env.ASSET_PREFIX || '',
89
'auth0Callback' : process.env.auth0Callback,
910
'auth0Domain' : process.env.auth0Domain,
@@ -19,6 +20,12 @@ angular.module('CONSTANTS', []).constant('CONSTANTS', {
1920
'PHOTO_LINK_LOCATION' : process.env.PHOTO_LINK_LOCATION,
2021
'SWIFT_PROGRAM_URL' : process.env.SWIFT_PROGRAM_URL,
2122
'TCO16_URL' : process.env.TCO16_URL,
23+
'MAILCHIMP_LIST_ID' : process.env.MAILCHIMP_LIST_ID,
24+
'MAILCHIMP_NL_TCO' : process.env.MAILCHIMP_NL_TCO,
25+
'MAILCHIMP_NL_IOS' : process.env.MAILCHIMP_NL_IOS,
26+
'MAILCHIMP_NL_DEV' : process.env.MAILCHIMP_NL_DEV,
27+
'MAILCHIMP_NL_DESIGN' : process.env.MAILCHIMP_NL_DESIGN,
28+
'MAILCHIMP_NL_DATA' : process.env.MAILCHIMP_NL_DATA,
2229

2330
'NEW_CHALLENGES_URL' : 'https://www.topcoder.com/challenges/develop/upcoming/',
2431
'SWIFT_PROGRAM_ID' : 3445,

0 commit comments

Comments
 (0)