|
13 | 13 | var service = {
|
14 | 14 | getChallenges: getChallenges,
|
15 | 15 | getUserChallenges: getUserChallenges,
|
16 |
| - getSpotlightChallenges: getSpotlightChallenges, |
17 | 16 | getiOSChallenges: getiOSChallenges,
|
18 |
| - getMyMarathonMatches: _getMyMarathonMatches, |
19 | 17 | getReviewEndDate: getReviewEndDate,
|
20 |
| - getChallengeDetails: getChallengeDetails |
| 18 | + getChallengeDetails: getChallengeDetails, |
| 19 | + processChallenges: processChallenges |
21 | 20 | };
|
22 | 21 | return service;
|
23 | 22 |
|
|
31 | 30 | return api.one('members', handle).all('challenges').getList(params);
|
32 | 31 | }
|
33 | 32 |
|
34 |
| - function getSpotlightChallenges() { |
35 |
| - var deferred = $q.defer(); |
36 |
| - |
37 |
| - var mockChallenges = [ |
38 |
| - { |
39 |
| - challengeName: 'Styx iOS Video Mobile App Bug Fixes - 177+214', |
40 |
| - challengeType: 'Code', |
41 |
| - totalPrize: '1200', |
42 |
| - registrationStartDate: '2015-05-01T00:00:00.000-0400', |
43 |
| - track: 'DESIGN', |
44 |
| - numRegistrants: 21, |
45 |
| - numSubmissions: 8 |
46 |
| - }, |
47 |
| - { |
48 |
| - challengeName: 'Styx iOS Video Mobile App Bug Fixes - 177+214', |
49 |
| - challengeType: 'Code', |
50 |
| - totalPrize: '1200', |
51 |
| - registrationStartDate: '2015-05-01T00:00:00.000-0400', |
52 |
| - track: 'DESIGN', |
53 |
| - numRegistrants: 21, |
54 |
| - numSubmissions: 8 |
55 |
| - } |
56 |
| - ]; |
57 |
| - |
58 |
| - deferred.resolve(mockChallenges); |
59 |
| - |
60 |
| - return deferred.promise; |
61 |
| - } |
62 |
| - |
63 | 33 | function getiOSChallenges(params) {
|
64 | 34 | return api.all('challenges').getList(params);
|
65 | 35 | }
|
66 | 36 |
|
67 |
| - /** NOT USED NEEDS TO BE REFACTORED **/ |
68 |
| - |
69 |
| - function _getMyActiveChallenges(request) { |
70 |
| - var deferred = $q.defer(); |
71 |
| - |
72 |
| - var prevRequest = rApi.request; |
73 |
| - |
74 |
| - // If my active challenges has already been retrieved, simply return it |
75 |
| - if(rApi.myActiveChallenges && rApi.myActiveChallenges != "waiting" && !uniqueRequest(prevRequest, request)) { |
76 |
| - deferred.resolve(rApi.myActiveChallenges); |
77 |
| - } else { |
78 |
| - // Otherwise, set state to waiting, so that only one call is done to the server |
79 |
| - rApi.myActiveChallenges = "waiting"; |
80 |
| - |
81 |
| - // Add promise to list to it can be resolved when call returns |
82 |
| - rApi.activeChallengeDeferredList.push(deferred); |
83 |
| - |
84 |
| - // add default paging |
85 |
| - var pageIndex = request && request.pageIndex ? request.pageIndex : 1; |
86 |
| - var pageSize = request && request.pageSize ? request.pageSize : 10; |
87 |
| - var sortColumn = request && request.sortColumn ? request.sortColumn : 'submissionEndDate'; |
88 |
| - var sortOrder = request && request.sortOrder ? request.sortOrder : 'asc'; |
89 |
| - var listType = request && request.listType ? request.listType : 'active'; |
90 |
| - var userId = request && request.userId ? request.userId : null; |
91 |
| - |
92 |
| - rApi.request = request; |
93 |
| - |
94 |
| - var filter = []; |
95 |
| - if (listType) { |
96 |
| - filter.push("listType=" + listType); |
97 |
| - } |
98 |
| - if (userId) { |
99 |
| - filter.push("userId=" + userId); |
100 |
| - } |
101 |
| - filter = filter.join("&"); |
102 |
| - |
103 |
| - // Fetch list of active challenges for current user |
104 |
| - rApi.all("challenges").getList({ |
105 |
| - type: listType, |
106 |
| - pageIndex: pageIndex, |
107 |
| - pageSize: pageSize, |
108 |
| - sortColumn: sortColumn, |
109 |
| - sortOrder: sortOrder |
110 |
| - }).then(function(data) { |
111 |
| - // Sets the data, and returns it to all pending promises |
112 |
| - rApi.myActiveChallenges = data; |
113 |
| - angular.forEach(rApi.activeChallengeDeferredList, function(def) { |
114 |
| - def.resolve(rApi.myActiveChallenges); |
115 |
| - }); |
116 |
| - rApi.activeChallengeDeferredList = []; |
117 |
| - return rApi.myActiveChallenges; |
118 |
| - }); |
119 |
| - } |
120 |
| - |
121 |
| - return deferred.promise; |
122 |
| - } |
123 |
| - |
124 |
| - function _getMyMarathonMatches(request) { |
125 |
| - var deferred, listType, prevRequest, sortColumn, sortOrder; |
126 |
| - deferred = $q.defer(); |
127 |
| - prevRequest = rApi.mmRequest; |
128 |
| - if (rApi.myMarathonMatches && rApi.myMarathonMatches !== 'waiting') { |
129 |
| - deferred.resolve(rApi.myMarathonMatches); |
130 |
| - } else { |
131 |
| - rApi.myMarathonMatches = 'waiting'; |
132 |
| - rApi.marathonMatchesDeferredList.push(deferred); |
133 |
| - sortColumn = request && request.sortColumn ? request.sortColumn : 'submissionEndDate'; |
134 |
| - sortOrder = request && request.sortOrder ? request.sortOrder : 'asc'; |
135 |
| - listType = request && request.type ? request.type : 'active'; |
136 |
| - rApi.request = request; |
137 |
| - rApi.all('marathonMatches').getList({ |
138 |
| - listType: listType, |
139 |
| - sortColumn: sortColumn, |
140 |
| - sortOrder: sortOrder |
141 |
| - }).then(function(data) { |
142 |
| - rApi.myMarathonMatches = data; |
143 |
| - angular.forEach(rApi.marathonMatchesDeferredList, function(def) { |
144 |
| - def.resolve(rApi.myMarathonMatches); |
145 |
| - }); |
146 |
| - rApi.marathonMatchesDeferredList = []; |
147 |
| - return rApi.myMarathonMatches; |
148 |
| - }); |
149 |
| - } |
150 |
| - return deferred.promise; |
151 |
| - } |
152 |
| - function _uniqueRequest(prevRequest, currRequest) { |
153 |
| - if (!prevRequest || !currRequest) return true; |
154 |
| - return prevRequest.pageIndex != currRequest.pageIndex || |
155 |
| - prevRequest.pageSize != currRequest.pageSize || |
156 |
| - prevRequest.sortColumn != currRequest.sortColumn || |
157 |
| - prevRequest.sortOrder != currRequest.sortOrder || |
158 |
| - prevRequest.listType != currRequest.listType; |
159 |
| - } |
160 |
| - |
161 | 37 | function getReviewEndDate(challengeId) {
|
162 | 38 | var url = CONSTANTS.API_URL + '/phases/?filter=' + encodeURIComponent('challengeId=' + challengeId + ' & phaseType=4');
|
163 | 39 | return ApiService.requestHandler('GET', url);
|
|
168 | 44 | return ApiService.requestHandler('GET', url, {}, true);
|
169 | 45 | }
|
170 | 46 |
|
| 47 | + function processChallenges(challenges) { |
| 48 | + angular.forEach(challenges, function(challenge) { |
| 49 | + var phases = challenge.currentPhases; |
| 50 | + var hasCurrentPhase = false; |
| 51 | + // If currentPhase is null, the challenge is stalled and there is no end time |
| 52 | + challenge.userCurrentPhase = 'Stalled'; |
| 53 | + challenge.userCurrentPhaseEndTime = null; |
| 54 | + challenge.userAction = null; |
| 55 | + |
| 56 | + if (phases && phases.length) { |
| 57 | + hasCurrentPhase = true; |
| 58 | + challenge.userCurrentPhase = phases[0].phaseType; |
| 59 | + challenge.userCurrentPhaseEndTime = phases[0].scheduledEndTime; |
| 60 | + } |
| 61 | + |
| 62 | + if (hasCurrentPhase && phases.length > 1) { |
| 63 | + angular.forEach(challenge.currentPhases, function(phase, index, phases) { |
| 64 | + if (phase.phaseType === 'Submission') { |
| 65 | + challenge.userAction = 'Submit'; |
| 66 | + |
| 67 | + if (challenge.userDetails.hasUserSubmittedForReview) { |
| 68 | + challenge.userCurrentPhase = phase.phaseType; |
| 69 | + challenge.userCurrentPhaseEndTime = phase.scheduledEndTime; |
| 70 | + challenge.userAction = 'Submitted'; |
| 71 | + |
| 72 | + if (phases[index + 1]) { |
| 73 | + challenge.userCurrentPhase = phases[index + 1].phaseType; |
| 74 | + challenge.userCurrentPhaseEndTime = phases[index + 1].scheduledEndTime; |
| 75 | + challenge.userAction = null; |
| 76 | + } |
| 77 | + } |
| 78 | + } |
| 79 | + }); |
| 80 | + } |
| 81 | + |
| 82 | + if (challenge.userCurrentPhaseEndTime) { |
| 83 | + var timeAndUnit = moment(challenge.userCurrentPhaseEndTime).fromNow(true); |
| 84 | + timeAndUnit = timeAndUnit.split(' '); |
| 85 | + if (timeAndUnit[0] === 'a' || timeAndUnit[0] === 'an') { |
| 86 | + timeAndUnit[0] = '1'; |
| 87 | + } |
| 88 | + challenge.userCurrentPhaseEndTime = timeAndUnit; |
| 89 | + } |
| 90 | + }); |
| 91 | + } |
| 92 | + |
171 | 93 | /**
|
172 | 94 | * Helper method to parse the filter param as required by v3 API from JSON format
|
173 | 95 | */
|
|
0 commit comments