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

Commit e22ebf5

Browse files
committed
Merge pull request #424 from appirio-tech/qa
Release qa to prod
2 parents 3972fe8 + ef4820f commit e22ebf5

9 files changed

+156
-33
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ test/tmp/design_submissions/*.zip
88
test/tmp/design_tmp_submissions/*.zip
99
test/tmp/memberPhoto/*
1010
.idea
11+
.settings

actions/challenges.js

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,10 @@ var TECHNOLOGY_FILTER = ' AND EXISTS (SELECT DISTINCT 1 FROM comp_technology ct
133133
var PLATFORM_FILTER = ' AND EXISTS (SELECT 1 FROM project_platform pp WHERE pp.project_platform_id IN (@filter@) ' +
134134
'AND p.project_id = pp.project_id)';
135135

136+
/* Filter based on review type */
137+
var REVIEW_FILTER = ' AND EXISTS (SELECT 1 FROM project_info pi WHERE project_info_type_id = 79 AND value IN (@filter@) ' +
138+
'AND p.project_id = pi.project_id)';
139+
136140
/**
137141
* The challenge type filter for challenges api.
138142
* @since 1.30
@@ -176,7 +180,7 @@ var MY_CHALLENGES_FILTER = 'AND EXISTS ' +
176180
var ALLOWABLE_QUERY_PARAMETER = [
177181
"listType", "challengeType", "challengeName", "projectId", SORT_COLUMN,
178182
"sortOrder", "pageIndex", "pageSize", "prizeLowerBound", "prizeUpperBound", "cmcTaskId", 'communityId',
179-
"submissionEndFrom", "submissionEndTo", "technologies", "platforms"];
183+
"submissionEndFrom", "submissionEndTo", "technologies", "platforms", 'review'];
180184

181185
/**
182186
* Represents a list of valid query parameter for split challenges api.
@@ -185,7 +189,7 @@ var ALLOWABLE_QUERY_PARAMETER = [
185189
var SPLIT_API_ALLOWABLE_QUERY_PARAMETER = [
186190
"challengeType", "challengeName", "projectId", SORT_COLUMN,
187191
"sortOrder", "pageIndex", "pageSize", "prizeLowerBound", "prizeUpperBound", 'communityId',
188-
"submissionEndFrom", "submissionEndTo", 'type', 'platforms', 'technologies'];
192+
"submissionEndFrom", "submissionEndTo", 'type', 'platforms', 'technologies', 'review'];
189193

190194
/**
191195
* Represents a predefined list of valid sort column for active challenge.
@@ -763,7 +767,7 @@ var editSql = function (sql, template, content) {
763767
* @since 1.23
764768
*/
765769
var addFilter = function (sql, filter, isMyChallenges, helper, caller) {
766-
var platform, technology, challengeFilter, challengeType;
770+
var platform, technology, review, challengeFilter, challengeType;
767771
if (_.isDefined(filter.platforms)) {
768772
platform = filter.platforms.join(', ');
769773
sql.count = editSql(sql.count, PLATFORM_FILTER, platform);
@@ -781,6 +785,16 @@ var addFilter = function (sql, filter, isMyChallenges, helper, caller) {
781785
sql.count = editSql(sql.count, CHALLENGE_TYPE_FILTER, challengeType);
782786
sql.data = editSql(sql.data, CHALLENGE_TYPE_FILTER, challengeType);
783787
}
788+
789+
if (_.isDefined(filter.review)) {
790+
review = "'" + filter.review.toUpperCase().replace(/,/g, "','") + "'";
791+
}
792+
else {
793+
review = "'COMMUNITY','INTERNAL'";
794+
}
795+
796+
sql.count = editSql(sql.count, REVIEW_FILTER, review);
797+
sql.data = editSql(sql.data, REVIEW_FILTER, review);
784798

785799
if (isMyChallenges) {
786800
sql.count = editSql(sql.count, MY_CHALLENGES_FILTER, null);
@@ -876,7 +890,7 @@ var searchChallenges = function (api, connection, dbConnectionMap, community, ne
876890
query = connection.rawConnection.parsedURL.query,
877891
caller = connection.caller,
878892
copyToFilter = ["challengeType", "challengeName", "projectId", "prizeLowerBound",
879-
"prizeUpperBound", "cmcTaskId", 'communityId', "submissionEndFrom", "submissionEndTo", "technologies", "platforms"],
893+
"prizeUpperBound", "cmcTaskId", 'communityId', "submissionEndFrom", "submissionEndTo", "technologies", "platforms", "review"],
880894
sqlParams = {},
881895
filter = {},
882896
pageIndex,
@@ -2443,6 +2457,7 @@ exports.getSoftwareChallenge = {
24432457
outputExample: {},
24442458
version: 'v2',
24452459
transaction : 'read', // this action is read-only
2460+
cacheLifetime: 1000 * 60 * 10,
24462461
databases : ["tcs_catalog"],
24472462
run: function (api, connection, next) {
24482463
if (connection.dbConnectionMap) {
@@ -2468,6 +2483,7 @@ exports.getStudioChallenge = {
24682483
outputExample: {},
24692484
version: 'v2',
24702485
transaction: 'read', // this action is read-only
2486+
cacheLifetime: 1000 * 60 * 10,
24712487
databases: ["tcs_catalog", "tcs_dw"],
24722488
run: function (api, connection, next) {
24732489
if (connection.dbConnectionMap) {
@@ -2495,6 +2511,7 @@ exports.getChallenge = {
24952511
outputExample: {},
24962512
version: 'v2',
24972513
transaction: 'read', // this action is read-only
2514+
cacheLifetime: 1000 * 60 * 10,
24982515
databases: ["tcs_catalog", "tcs_dw"],
24992516
run: function (api, connection, next) {
25002517
var challengeId = Number(connection.params.challengeId),
@@ -2537,6 +2554,7 @@ exports.searchSoftwareChallenges = {
25372554
outputExample: {},
25382555
version: 'v2',
25392556
transaction : 'read', // this action is read-only
2557+
cacheLifetime: 1000 * 60 * 10,
25402558
databases : ["tcs_catalog"],
25412559
run: function (api, connection, next) {
25422560
if (connection.dbConnectionMap) {
@@ -2562,6 +2580,7 @@ exports.searchStudioChallenges = {
25622580
outputExample: {},
25632581
version: 'v2',
25642582
transaction : 'read', // this action is read-only
2583+
cacheLifetime: 1000 * 60 * 10,
25652584
databases : ["tcs_catalog"],
25662585
run: function (api, connection, next) {
25672586
if (connection.dbConnectionMap) {
@@ -2587,6 +2606,7 @@ exports.searchSoftwareAndStudioChallenges = {
25872606
outputExample: {},
25882607
version: 'v2',
25892608
transaction : 'read', // this action is read-only
2609+
cacheLifetime: 1000 * 60 * 10,
25902610
databases : ["tcs_catalog"],
25912611
run: function (api, connection, next) {
25922612
if (connection.dbConnectionMap) {
@@ -3630,7 +3650,7 @@ var getChallenges = function (api, connection, listType, isMyChallenges, next) {
36303650
query = connection.rawConnection.parsedURL.query,
36313651
caller = connection.caller,
36323652
copyToFilter = ["challengeType", "challengeName", "projectId", "prizeLowerBound",
3633-
"prizeUpperBound", 'communityId', "submissionEndFrom", "submissionEndTo", 'type', 'technologies', 'platforms'],
3653+
"prizeUpperBound", 'communityId', "submissionEndFrom", "submissionEndTo", 'type', 'technologies', 'platforms', 'review'],
36343654
dbConnectionMap = connection.dbConnectionMap,
36353655
sqlParams = {},
36363656
filter = {},
@@ -3650,7 +3670,8 @@ var getChallenges = function (api, connection, listType, isMyChallenges, next) {
36503670
}
36513671
}
36523672

3653-
sortOrder = query.sortorder || "desc";
3673+
sortOrder = query.sortorder ||
3674+
(!query.sortcolumn && (listType == api.helper.ListType.ACTIVE || listType == api.helper.ListType.UPCOMING) ? "asc" : "desc");
36543675
sortColumn = query.sortcolumn || DEFAULT_SORT_COLUMN;
36553676
pageIndex = Number(query.pageindex || 1);
36563677
pageSize = Number(query.pagesize || 150);
@@ -3841,6 +3862,7 @@ exports.getOpenChallenges = {
38413862
outputExample: {},
38423863
version: 'v2',
38433864
transaction: 'read',
3865+
cacheLifetime: 1000 * 60 * 10,
38443866
databases: ['tcs_catalog'],
38453867
run: function (api, connection, next) {
38463868
if (connection.dbConnectionMap) {
@@ -4027,6 +4049,7 @@ exports.getMyChallenges = {
40274049
outputExample: {},
40284050
version: 'v2',
40294051
transaction: 'read',
4052+
cacheLifetime: 1000 * 60 * 10,
40304053
databases: ['tcs_catalog'],
40314054
run: function (api, connection, next) {
40324055
if (connection.dbConnectionMap) {

initializers/helper.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ var apiName2dbNameMap = {
261261
currentphaseremainingtime: 'current_phase_remaining_time',
262262
currentphasename: 'current_phase_name',
263263
registrationopen: 'registration_open',
264-
totalPrize: 'total_prize',
264+
totalprize: 'total_prize',
265265
registrationstartdate: 'registration_start_date',
266266
challengecommunity: 'challenge_community',
267267
problemid: 'problem_id',
@@ -280,7 +280,8 @@ var apiName2dbNameMap = {
280280
challengestarttime: "challenge_start_time",
281281
challengeendtime: "challenge_end_time",
282282
systeststarttime: "systest_start_time",
283-
systestendtime: "systest_end_time"
283+
systestendtime: "systest_end_time",
284+
firstplaceprize: "first_place_prize"
284285
};
285286

286287
/**

queries/get_active_challenges

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
SELECT
2+
SKIP @first_row_index@
3+
FIRST @page_size@
24
CASE WHEN (p.project_studio_spec_id IS NOT NULL) THEN 1 ELSE 0 END AS is_studio
35
, pcl.description AS challenge_type
46
, pn.value AS challenge_name
57
, p.project_id AS challenge_id
68
, pi4.value AS forum_id
9+
, pi79.value AS review_type
710
, (SELECT COUNT(*) FROM submission s1 INNER JOIN upload u1 ON s1.upload_id = u1.upload_id
811
WHERE u1.project_id = p.project_id
912
AND s1.submission_type_id = 1
@@ -41,6 +44,7 @@ FROM project p
4144
, outer project_phase nd_phase
4245
, project_category_lu pcl
4346
, outer project_info pi4 --forum id
47+
, outer project_info pi79
4448
, project_info pi1 -- external id
4549
WHERE p.project_status_id = pstatus.project_status_id
4650
AND p.project_id = pn.project_id
@@ -56,6 +60,8 @@ AND pidr.project_info_type_id = 26 --digital run
5660
AND pi4.project_id = p.project_id
5761
AND pi4.project_info_type_id = 4 --forum id
5862
AND p.project_Id = nd_phase.project_id
63+
AND pi79.project_info_type_id = 79 -- review type (COMMUNITY, INTERNAL, PEER)
64+
AND pi79.project_id = p.project_id
5965
AND nd_phase.project_phase_id = (SELECT MIN(project_phase_id) FROM project_phase WHERE project_id = p.project_id AND phase_status_id = 2 AND phase_type_id IN (1,2,3,4,5,6,7,8,9,10,11,12))
6066
AND p.project_category_id = pcl.project_category_id
6167
AND p.project_status_id = 1
@@ -67,4 +73,4 @@ AND pp1.phase_status_id IN (2, 3)
6773
AND pi1.project_info_type_id = 1 -- external reference id
6874
AND pi1.project_id = p.project_id
6975

70-
ORDER BY NVL(pp2.actual_end_time, pp2.scheduled_end_time) ASC
76+
ORDER BY @sort_column@ @sort_order@

queries/get_open_challenges

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,31 @@
1+
SELECT is_studio
2+
, challenge_type
3+
, challenge_name
4+
, challenge_id
5+
, forum_id
6+
, review_type
7+
, num_submissions
8+
, num_registrants
9+
, number_of_checkpoints_prizes
10+
, first_place_prize
11+
, total_prize
12+
, total_checkpoint_prize
13+
, registration_end_date
14+
, registration_start_date
15+
, checkpoint_submission_end_date
16+
, submission_end_date
17+
, current_phase_end_date
18+
, current_phase_remaining_time
19+
, status
20+
, current_phase_name
21+
, digital_run_points
22+
, nvl((SELECT max(event_id) from contest_project_xref x, contest c where project_id = challenge_id and c.contest_id = x.contest_id), 0) as event_id
23+
, (SELECT event_short_desc from event e where e.event_id = nvl((SELECT max(event_id) from contest_project_xref x, contest c where project_id = challenge_id and c.contest_id = x.contest_id), 0)) as event_name
24+
, technology_list(value_for_technology) AS technologies
25+
, platform_list(id_for_platform) as platforms
26+
, registration_open
27+
, NVL((SELECT CAST('t' AS boolean) FROM contest_eligibility WHERE contest_id =challenge_id), CAST('f' AS boolean)) AS is_private
28+
FROM (
129
SELECT
230
SKIP @first_row_index@
331
FIRST @page_size@
@@ -6,6 +34,7 @@ FIRST @page_size@
634
, pn.value AS challenge_name
735
, p.project_id AS challenge_id
836
, pi4.value AS forum_id
37+
, pi79.value as review_type
938
, (SELECT COUNT(*) FROM submission s1 INNER JOIN upload u1 ON s1.upload_id = u1.upload_id
1039
WHERE u1.project_id = p.project_id
1140
AND s1.submission_type_id = 1
@@ -26,12 +55,9 @@ FIRST @page_size@
2655
, CASE WHEN pidr.value = 'On' THEN
2756
NVL((SELECT value::decimal FROM project_info pi_dr WHERE pi_dr.project_info_type_id = 30 AND pi_dr.project_id = p.project_id), (SELECT round(NVL(pi16.value::decimal, 0)) FROM project_info pi16 WHERE pi16.project_info_type_id = 16 AND pi16.project_id = p.project_id))
2857
ELSE NULL END AS digital_run_points
29-
, nvl((SELECT max(event_id) from contest_project_xref x, contest c where project_id = p.project_id and c.contest_id = x.contest_id), 0) as event_id
30-
, (SELECT event_short_desc from event e where e.event_id = nvl((SELECT max(event_id) from contest_project_xref x, contest c where project_id = p.project_id and c.contest_id = x.contest_id), 0)) as event_name
31-
, technology_list(pi1.value) AS technologies
32-
, platform_list(p.project_id) as platforms
58+
, pi1.value AS value_for_technology
59+
, p.project_id as id_for_platform
3360
, CASE WHEN (pp1.phase_status_id = 2) THEN 'Yes' ELSE 'No' END AS registration_open
34-
, NVL((SELECT CAST('t' AS boolean) FROM contest_eligibility WHERE contest_id = p.project_id), CAST('f' AS boolean)) AS is_private
3561
FROM project p
3662
, project_status_lu pstatus
3763
, project_phase pp1 --registration phase
@@ -42,6 +68,7 @@ FROM project p
4268
, outer project_phase nd_phase
4369
, project_category_lu pcl
4470
, outer project_info pi4 --forum id
71+
, outer project_info pi79
4572
, project_info pi1 -- external id
4673
WHERE p.project_status_id = pstatus.project_status_id
4774
AND p.project_id = pn.project_id
@@ -56,6 +83,8 @@ AND pidr.project_id = p.project_id
5683
AND pidr.project_info_type_id = 26 --digital run
5784
AND pi4.project_id = p.project_id
5885
AND pi4.project_info_type_id = 4 --forum id
86+
AND pi79.project_info_type_id = 79 -- review type (COMMUNITY, INTERNAL, PEER)
87+
AND pi79.project_id = p.project_id
5988
AND p.project_Id = nd_phase.project_id
6089
AND nd_phase.project_phase_id = (SELECT MAX(project_phase_id) FROM project_phase WHERE project_id = p.project_id AND phase_status_id = 2 AND phase_type_id IN (1,2,3,4,5,6,7,8,9,10,11,12))
6190
AND p.project_category_id = pcl.project_category_id
@@ -74,3 +103,4 @@ AND NVL((SELECT pr.prize_amount FROM prize pr WHERE pr.project_id = p.project_id
74103
AND NVL((SELECT pr.prize_amount FROM prize pr WHERE pr.project_id = p.project_id AND pr.prize_type_id = 15 AND pr.place = 1), 0) <= @prize_upper_bound@
75104
AND p.tc_direct_project_id = DECODE(@project_id@, 0, p.tc_direct_project_id, @project_id@)
76105
ORDER BY @sort_column@ @sort_order@
106+
)

queries/get_past_challenges

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,35 @@
1+
SELECT is_studio
2+
, challenge_type
3+
, challenge_name
4+
, challenge_id
5+
, (SELECT value FROM project_info WHERE project_id = challenge_id AND project_info_type_id = 4) AS forum_id
6+
, num_submissions
7+
, num_registrants
8+
, number_of_checkpoints_prizes
9+
, first_place_prize
10+
, total_prize
11+
, checkpoint_total_prizes
12+
, registration_start_date
13+
, registration_end_date
14+
, checkpoint_submission_end_date
15+
, submission_end_date
16+
, status
17+
, digital_run_points
18+
, nvl((SELECT MAX(event_id) FROM contest_project_xref x, contest c WHERE project_id = challenge_id AND c.contest_id = x.contest_id), 0) AS event_id
19+
, (SELECT event_short_desc FROM event e WHERE e.event_id = nvl((SELECT MAX(event_id) FROM contest_project_xref x, contest c WHERE project_id = challenge_id AND c.contest_id = x.contest_id), 0)) AS event_name
20+
, technology_list(value_for_technology) AS technologies
21+
, platform_list(id_for_platform) AS platforms
22+
, registration_open
23+
, NVL((SELECT CAST('t' AS boolean) FROM contest_eligibility WHERE contest_id = challenge_id), CAST('f' AS boolean)) AS is_private
24+
, (SELECT value FROM project_info pi53 WHERE project_id = challenge_id AND project_info_type_id = 53) AS submissions_viewable
25+
FROM (
126
SELECT
227
SKIP @first_row_index@
328
FIRST @page_size@
429
CASE WHEN (p.project_studio_spec_id IS NOT NULL) THEN 1 ELSE 0 END AS is_studio
530
, pcl.description AS challenge_type
631
, pn.value AS challenge_name
732
, p.project_id AS challenge_id
8-
, (SELECT value FROM project_info WHERE project_id = p.project_id AND project_info_type_id = 4) AS forum_id
933
, (SELECT COUNT(*) FROM submission s1 INNER JOIN upload u1 ON s1.upload_id = u1.upload_id
1034
WHERE u1.project_id = p.project_id
1135
AND s1.submission_type_id = 1
@@ -23,13 +47,9 @@ FIRST @page_size@
2347
, CASE WHEN pidr.value = 'On' THEN
2448
NVL((SELECT value::decimal FROM project_info pi_dr WHERE pi_dr.project_info_type_id = 30 AND pi_dr.project_id = p.project_id), (SELECT round(NVL(pi16.value::decimal, 0)) FROM project_info pi16 WHERE pi16.project_info_type_id = 16 AND pi16.project_id = p.project_id))
2549
ELSE NULL END AS digital_run_points
26-
, nvl((SELECT MAX(event_id) FROM contest_project_xref x, contest c WHERE project_id = p.project_id AND c.contest_id = x.contest_id), 0) AS event_id
27-
, (SELECT event_short_desc FROM event e WHERE e.event_id = nvl((SELECT MAX(event_id) FROM contest_project_xref x, contest c WHERE project_id = p.project_id AND c.contest_id = x.contest_id), 0)) AS event_name
28-
, technology_list(pi1.value) AS technologies
29-
, platform_list(p.project_id) AS platforms
50+
, pi1.value AS value_for_technology
51+
, p.project_id AS id_for_platform
3052
, CASE WHEN (pp1.phase_status_id = 2) THEN 'Yes' ELSE 'No' END AS registration_open
31-
, NVL((SELECT CAST('t' AS boolean) FROM contest_eligibility WHERE contest_id = p.project_id), CAST('f' AS boolean)) AS is_private
32-
, (SELECT value FROM project_info pi53 WHERE project_id = p.project_id AND project_info_type_id = 53) AS submissions_viewable
3353
FROM project p
3454
INNER JOIN project_status_lu pstatus ON pstatus.project_status_id = p.project_status_id
3555
INNER JOIN project_category_lu pcl ON pcl.project_category_id = p.project_category_id
@@ -52,3 +72,4 @@ AND NVL((SELECT pr.prize_amount FROM prize pr WHERE pr.project_id = p.project_id
5272
AND NVL((SELECT pr.prize_amount FROM prize pr WHERE pr.project_id = p.project_id AND pr.prize_type_id = 15 AND pr.place = 1), 0) <= @prize_upper_bound@
5373
AND p.tc_direct_project_id = DECODE(@project_id@, 0, p.tc_direct_project_id, @project_id@)
5474
ORDER BY @sort_column@ @sort_order@
75+
)

queries/get_upcoming_challenges

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ SELECT
44
, pn.value AS challenge_name
55
, p.project_id AS challenge_id
66
, pi4.value AS forum_id
7+
, pi79.value as review_type
78
, NVL((SELECT SUM(pr.number_of_submissions) FROM prize pr WHERE pr.project_id = p.project_id AND pr.prize_type_id = 14), 0) AS number_of_checkpoints_prizes
89
, (SELECT pr.prize_amount FROM prize pr WHERE pr.project_id = p.project_id AND pr.prize_type_id = 15 AND pr.place = 1) AS first_place_prize
910
, (SELECT SUM(prize_amount) FROM prize pr WHERE pr.project_id = p.project_id AND pr.prize_type_id = 15) AS total_prize
@@ -33,6 +34,7 @@ FROM project p
3334
, outer project_info pidr
3435
, project_category_lu pcl
3536
, outer project_info pi4 --forum id
37+
, outer project_info pi79
3638
, project_info pi1 -- external id
3739
WHERE p.project_status_id = pstatus.project_status_id
3840
AND p.project_id = pn.project_id
@@ -47,6 +49,8 @@ AND pidr.project_id = p.project_id
4749
AND pidr.project_info_type_id = 26 --digital run
4850
AND pi4.project_id = p.project_id
4951
AND pi4.project_info_type_id = 4 --forum id
52+
AND pi79.project_id = p.project_id
53+
AND pi79.project_info_type_id = 79 -- review type (COMMUNITY, INTERNAL, PEER)
5054
AND pi32.project_id = p.project_id
5155
AND pi32.project_info_type_id = 32
5256
AND pcl.project_type_id IN (@track@)
@@ -64,4 +68,4 @@ AND pp1.scheduled_start_time < CURRENT + 90 UNITS DAY
6468
AND pi1.project_info_type_id = 1 -- external reference id
6569
AND pi1.project_id = p.project_id
6670

67-
ORDER BY pp2.scheduled_end_time ASC
71+
ORDER BY @sort_column@ @sort_order@

0 commit comments

Comments
 (0)