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

Commit dd1524d

Browse files
committed
Merge pull request #168 from Ghost141/challenges_api_fix
revert
2 parents 76e852e + 19a7947 commit dd1524d

4 files changed

+352
-486
lines changed
Lines changed: 114 additions & 144 deletions
Original file line numberDiff line numberDiff line change
@@ -1,150 +1,120 @@
11
SELECT
22
SKIP @firstRowIndex@
33
FIRST @pageSize@
4-
CASE WHEN (p.project_studio_spec_id IS NOT NULL) THEN 1 ELSE 0 END AS is_studio
5-
, p.project_id AS challenge_id
6-
, pcl.description AS challenge_type
7-
, pi.challenge_name
8-
, p.tc_direct_project_id AS project_id
9-
, screening.parameter AS screening_scorecard_id
10-
, review.parameter AS review_scorecard_id
11-
, pi.cmc_task_id
12-
, pi.forum_id
13-
, (SELECT COUNT(*) FROM submission s1 INNER JOIN upload u1 ON s1.upload_id = u1.upload_id
14-
WHERE u1.project_id = p.project_id
15-
AND s1.submission_type_id IN (1, 3)
16-
AND s1.submission_status_id <> 5) AS num_submissions
17-
, (SELECT COUNT(*) FROM resource r WHERE r.project_id = p.project_id AND r.resource_role_id = 1) AS num_registrants
18-
, 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
19-
, pr.top_checkpoint_prize
20-
, pr.prize1
21-
, pr.prize2
22-
, pr.prize3
23-
, pr.prize4
24-
, pr.prize5
25-
, pr.prize6
26-
, pr.prize7
27-
, pr.prize8
28-
, NVL(pp.registration_actual_start_time, pp.registration_scheduled_start_time) AS posting_date
29-
, NVL(pp.registration_actual_end_time, pp.registration_scheduled_end_time) AS registration_end_date
30-
, NVL(pp.checkpoint_actual_end_time , pp.checkpoint_scheduled_end_time) AS checkpoint_submission_end_date
31-
, NVL(pp.submission_actual_end_time, pp.submission_scheduled_end_time) AS submission_end_date
32-
, NVL(pp.appeals_scheduled_end_time, review.scheduled_end_time) AS appeals_end_date
33-
, NVL(pp.final_fix_actual_end_time, pp.final_fix_scheduled_end_time) AS final_fix_end_date
34-
, NVL(nd_phase.actual_end_time, nd_phase.scheduled_end_time) AS current_phase_end_date
35-
, (( nd_phase.scheduled_end_time - CURRENT)::interval second(9) to second)::char(10)::int8 AS current_phase_remaining_time
36-
, pstatus.name AS current_status
37-
, CASE WHEN (nd_phase.scheduled_end_time IS NOT NULL) THEN
38-
(SELECT phase_type_lu.description FROM phase_type_lu
39-
WHERE phase_type_id = nd_phase.phase_type_id)
40-
ELSE NULL
41-
END AS current_phase_name
42-
, CASE WHEN pi.digital_run_flag = 'On' THEN NVL(pi.digital_run_points, pi.payments)
43-
ELSE NULL
44-
END AS digital_run_points
45-
, 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
46-
, (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
47-
, technology_list(p.project_id) AS technology
48-
, platform_list(p.project_id) AS platforms
49-
FROM project p
50-
LEFT JOIN (
51-
SELECT
52-
project_id
53-
, MAX(CASE WHEN prize_type_id = 14 AND place = 1 THEN prize_amount ELSE NULL END) AS top_checkpoint_prize
54-
, MAX(CASE WHEN prize_type_id = 15 AND place = 1 THEN prize_amount ELSE NULL END) AS prize1
55-
, MAX(CASE WHEN prize_type_id = 15 AND place = 2 THEN prize_amount ELSE NULL END) AS prize2
56-
, MAX(CASE WHEN prize_type_id = 15 AND place = 3 THEN prize_amount ELSE NULL END) AS prize3
57-
, MAX(CASE WHEN prize_type_id = 15 AND place = 4 THEN prize_amount ELSE NULL END) AS prize4
58-
, MAX(CASE WHEN prize_type_id = 15 AND place = 5 THEN prize_amount ELSE NULL END) AS prize5
59-
, MAX(CASE WHEN prize_type_id = 15 AND place = 6 THEN prize_amount ELSE NULL END) AS prize6
60-
, MAX(CASE WHEN prize_type_id = 15 AND place = 7 THEN prize_amount ELSE NULL END) AS prize7
61-
, MAX(CASE WHEN prize_type_id = 15 AND place = 8 THEN prize_amount ELSE NULL END) AS prize8
62-
FROM prize
63-
WHERE prize_type_id IN (14, 15)
64-
GROUP BY project_id
65-
) pr ON pr.project_id = p.project_id
66-
INNER JOIN (
67-
SELECT
68-
project_id
69-
, MAX(DECODE(phase_type_id, 1, actual_end_time, NULL)) AS registration_actual_end_time
70-
, MAX(DECODE(phase_type_id, 1, scheduled_end_time, NULL)) AS registration_scheduled_end_time
71-
, MAX(DECODE(phase_type_id, 1, scheduled_start_time, NULL)) AS registration_scheduled_start_time
72-
, MAX(DECODE(phase_type_id, 1, actual_start_time, NULL)) AS registration_actual_start_time
73-
, MAX(DECODE(phase_type_id, 2, actual_end_time, NULL)) AS submission_actual_end_time
74-
, MAX(DECODE(phase_type_id, 2, scheduled_end_time, NULL)) AS submission_scheduled_end_time
75-
, MAX(DECODE(phase_type_id, 6, scheduled_end_time, NULL)) AS appeals_scheduled_end_time
76-
, MAX(DECODE(phase_type_id, 9, actual_end_time, NULL)) AS final_fix_actual_end_time
77-
, MAX(DECODE(phase_type_id, 9, scheduled_end_time, NULL)) AS final_fix_scheduled_end_time
78-
, MAX(DECODE(phase_type_id, 15, actual_end_time, NULL)) AS checkpoint_actual_end_time
79-
, MAX(DECODE(phase_type_id, 15, scheduled_end_time, NULL)) AS checkpoint_scheduled_end_time
80-
FROM project_phase
81-
WHERE phase_type_id IN (1,2,6,9,15)
82-
GROUP BY project_id
83-
) pp ON pp.project_id = p.project_id
84-
INNER JOIN (
85-
SELECT
86-
project_id
87-
, MAX(DECODE(project_info_type_id, 4, value, '')) AS forum_id
88-
, MAX(DECODE(project_info_type_id, 16, value, '')) AS payments
89-
, MAX(DECODE(project_info_type_id, 26, value, '')) AS digital_run_flag
90-
, MAX(DECODE(project_info_type_id, 30, value, '')) AS digital_run_points
91-
, MAX(DECODE(project_info_type_id, 70, value, '')) AS cmc_task_id
92-
, MAX(DECODE(project_info_type_id, 6, value, '')) AS challenge_name
93-
FROM project_info
94-
WHERE project_info_type_id IN (70, 30, 16, 26, 4, 6)
95-
GROUP BY project_id
96-
) pi ON pi.project_id = p.project_id
97-
LEFT OUTER JOIN (
98-
SELECT
99-
pp3.project_id
100-
, pc3.parameter
101-
FROM project_phase pp3
102-
LEFT OUTER JOIN phase_criteria pc3 ON pp3.project_phase_id = pc3.project_phase_id
103-
WHERE pp3.phase_type_id = 3
104-
AND pc3.phase_criteria_type_id = 1
105-
) screening ON screening.project_id = p.project_id
106-
LEFT OUTER JOIN (
107-
SELECT
108-
pp4.project_id
109-
, pc4.parameter
110-
, pp4.scheduled_end_time
111-
FROM project_phase pp4
112-
LEFT OUTER JOIN phase_criteria pc4 ON pp4.project_phase_id = pc4.project_phase_id
113-
WHERE pp4.phase_type_id = 4
114-
AND pc4.phase_criteria_type_id = 1
115-
) review ON review.project_id = p.project_id
116-
LEFT OUTER JOIN (
117-
SELECT
118-
scheduled_end_time
119-
, actual_end_time
120-
, phase_type_id
121-
, pp.project_id
4+
CASE WHEN (p.project_studio_spec_id IS NOT NULL) THEN 1 ELSE 0 END AS is_studio
5+
, pcl.description AS challenge_type
6+
, pn.value AS challenge_name
7+
, p.project_id AS challenge_id
8+
, p.tc_direct_project_id AS project_id
9+
, p.project_category_id AS project_type
10+
, pc3.parameter AS screening_scorecard_id
11+
, pc4.parameter AS review_scorecard_id
12+
, (select value from project_info pi70 where pi70.project_id = p.project_id and project_info_type_id = 70) AS cmc_task_id
13+
, pi4.value AS forum_id
14+
, (SELECT COUNT(*) FROM submission s1 INNER JOIN upload u1 ON s1.upload_id = u1.upload_id
15+
WHERE u1.project_id = p.project_id
16+
AND s1.submission_type_id IN (1, 3)
17+
AND s1.submission_status_id <> 5) AS num_submissions
18+
, (SELECT COUNT(*) FROM resource r WHERE r.project_id = p.project_id AND r.resource_role_id = 1) AS num_registrants
19+
, 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
20+
, (SELECT pr.prize_amount FROM prize pr WHERE pr.project_id = p.project_id AND pr.prize_type_id = 14 AND pr.place = 1)::DECIMAL(10,2) AS top_checkpoint_prize
21+
, (SELECT pr.prize_amount FROM prize pr WHERE pr.project_id = p.project_id AND pr.prize_type_id = 15 AND pr.place = 1)::DECIMAL(10,2) AS prize1
22+
, (SELECT pr.prize_amount FROM prize pr WHERE pr.project_id = p.project_id AND pr.prize_type_id = 15 AND pr.place = 2)::DECIMAL(10,2) AS prize2
23+
, (SELECT pr.prize_amount FROM prize pr WHERE pr.project_id = p.project_id AND pr.prize_type_id = 15 AND pr.place = 3)::DECIMAL(10,2) AS prize3
24+
, (SELECT pr.prize_amount FROM prize pr WHERE pr.project_id = p.project_id AND pr.prize_type_id = 15 AND pr.place = 4)::DECIMAL(10,2) AS prize4
25+
, (SELECT pr.prize_amount FROM prize pr WHERE pr.project_id = p.project_id AND pr.prize_type_id = 15 AND pr.place = 5)::DECIMAL(10,2) AS prize5
26+
, (SELECT pr.prize_amount FROM prize pr WHERE pr.project_id = p.project_id AND pr.prize_type_id = 15 AND pr.place = 6)::DECIMAL(10,2) AS prize6
27+
, (SELECT pr.prize_amount FROM prize pr WHERE pr.project_id = p.project_id AND pr.prize_type_id = 15 AND pr.place = 7)::DECIMAL(10,2) AS prize7
28+
, (SELECT pr.prize_amount FROM prize pr WHERE pr.project_id = p.project_id AND pr.prize_type_id = 15 AND pr.place = 8)::DECIMAL(10,2) AS prize8
29+
, (SELECT NVL(NVL(ppd.actual_start_time, psd.actual_start_time), ppd.scheduled_start_time)
30+
FROM project proj
31+
, OUTER project_phase psd
32+
, OUTER project_phase ppd
33+
WHERE psd.project_id = proj.project_id
34+
AND psd.phase_type_id = 2
35+
AND ppd.project_id = proj.project_id
36+
AND proj.project_id = p.project_id
37+
AND ppd.phase_type_id = 1) AS posting_date
38+
, NVL(NVL(pp1.actual_end_time, pp1.scheduled_end_time), NVL(pp2.actual_end_time, pp2.scheduled_end_time)) AS registration_end_date
39+
, NVL(pp15.actual_end_time , pp15.scheduled_end_time) AS checkpoint_submission_end_date
40+
, NVL(pp2.actual_end_time, pp2.scheduled_end_time) AS submission_end_date
41+
, NVL(NVL(pp6.actual_end_time, pp6.scheduled_end_time), NVL(pp4.actual_end_time, pp4.scheduled_end_time)) AS appeals_end_date
42+
, NVL(pp9.actual_end_time, pp9.scheduled_end_time) AS final_fix_end_date
43+
, NVL(nd_phase.actual_end_time, nd_phase.scheduled_end_time) AS current_phase_end_date
44+
, (( nd_phase.scheduled_end_time - CURRENT)::interval second(9) to second)::char(10)::int8 AS current_phase_remaining_time
45+
, pstatus.name AS current_status
46+
, CASE WHEN (nd_phase.scheduled_end_time IS NOT NULL) THEN
47+
(SELECT phase_type_lu.description FROM phase_type_lu
48+
WHERE phase_type_id = nd_phase.phase_type_id)
49+
ELSE NULL
50+
END AS current_phase_name
51+
, CASE WHEN pidr.value = 'On' THEN
52+
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))
53+
ELSE NULL END AS digital_run_points
12254
FROM project p
123-
LEFT OUTER JOIN project_phase pp ON pp.project_id = p.project_id
124-
WHERE project_phase_id = (SELECT MAX(project_phase_id) FROM project_phase pp WHERE pp.project_id = p.project_id AND pp.phase_status_id = 2 AND pp.phase_type_id IN (1,2,3,4,5,6,7,8,9,10,11,12))
125-
) nd_phase ON nd_phase.project_id = p.project_id
126-
INNER JOIN project_phase pp1 ON pp1.project_id = p.project_id AND pp1.phase_type_id = 1
127-
INNER JOIN project_status_lu pstatus ON p.project_status_id = pstatus.project_status_id
128-
, project_category_lu pcl
129-
WHERE 1=1
130-
AND p.project_category_id = pcl.project_category_id
131-
-- Filter the private challenge
132-
AND p.project_id IN (SELECT
133-
contest_id
134-
FROM contest_eligibility ce
135-
, group_contest_eligibility gce
136-
WHERE ce.contest_eligibility_id = gce.contest_eligibility_id
137-
AND gce.group_id = @communityId@)
138-
AND pcl.project_category_id NOT IN (27, 37) --exclude when spec review was a 'contest.' Also exclude MM, which is in there as a 'software' contest.
139-
AND p.project_status_id IN (@project_status_id@)
140-
AND pcl.project_type_id IN (@project_type_id@)
141-
AND pp1.phase_status_id IN (@registration_phase_status@)
142-
AND NVL(pp.submission_actual_end_time, pp.submission_scheduled_end_time) BETWEEN TO_DATE('@submissionEndFrom@ 00:00:00', '%Y-%m-%d %H:%M:%S') AND TO_DATE('@submissionEndTo@ 23:59:59', '%Y-%m-%d %H:%M:%S')
55+
, project_status_lu pstatus
56+
, project_phase pp1 --registration phase
57+
, project_phase pp2 --submission phase
58+
, outer project_phase pp6 --appeals phase
59+
, outer project_phase pp15 --checkpoint submission phase
60+
, outer project_phase pp9 --final fix phase
61+
, outer ( project_phase pp3 --screening phase
62+
, outer phase_criteria pc3 ) --screening phase scorecard
63+
, outer ( project_phase pp4 --review phase
64+
, outer phase_criteria pc4) --review phase scorecard
65+
, project_info pn
66+
, outer project_info pidr
67+
, outer project_phase nd_phase
68+
, project_category_lu pcl
69+
, outer project_info pi4 --forum id
70+
WHERE 1=1
71+
AND p.project_status_id = pstatus.project_status_id
72+
AND p.project_id = pn.project_id
73+
AND pn.project_info_type_id = 6
74+
AND pp1.project_id = p.project_id
75+
AND pp1.phase_type_id = 1 --registration phase
76+
AND pp2.project_id = p.project_id
77+
AND pp2.phase_type_id = 2 --submission phase
78+
AND pp6.project_id = p.project_id
79+
AND pp6.phase_type_id = 6 --appeals phase
80+
AND pp15.project_id = p.project_id
81+
AND pp15.phase_type_id = 15 --checkpoint submission phase
82+
AND pp9.project_id = p.project_id
83+
AND pp9.phase_type_id = 9 --final fix phase
84+
AND pp9.project_phase_id = (SELECT MAX(project_phase_id) FROM project_phase WHERE project_id = p.project_id AND phase_type_id = 9) --last final fix only
85+
AND pp3.project_id = p.project_id
86+
AND pp3.phase_type_id = 3 --screening phase
87+
AND pp3.project_phase_id = pc3.project_phase_id
88+
AND pc3.phase_criteria_type_id = 1 -- scorecardid type
89+
AND pp4.project_id = p.project_id
90+
AND pp4.phase_type_id = 4 --review phase
91+
AND pp4.project_phase_id = pc4.project_phase_id
92+
AND pc4.phase_criteria_type_id = 1 -- scorecardid type
93+
AND pidr.project_id = p.project_id
94+
AND pidr.project_info_type_id = 26 --digital run
95+
AND pi4.project_id = p.project_id
96+
AND pi4.project_info_type_id = 4 --forum id
97+
AND p.project_Id = nd_phase.project_id
98+
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))
99+
AND p.project_category_id = pcl.project_category_id
100+
-- Filter the private challenge
101+
AND p.project_id IN (SELECT
102+
contest_id
103+
FROM contest_eligibility ce
104+
, group_contest_eligibility gce
105+
WHERE ce.contest_eligibility_id = gce.contest_eligibility_id
106+
AND gce.group_id = @communityId@)
107+
AND pcl.project_category_id NOT IN (27, 37) --exclude when spec review was a 'contest.' Also exclude MM, which is in there as a 'software' contest.
108+
-- start of parameters
109+
AND pstatus.project_status_id IN (@project_status_id@)
110+
AND pcl.project_type_id IN (@project_type_id@)
111+
AND pp1.phase_status_id IN (@registration_phase_status@)
112+
AND NVL(pp2.actual_end_time, pp2.scheduled_end_time) BETWEEN TO_DATE('@submissionEndFrom@ 00:00:00', '%Y-%m-%d %H:%M:%S') AND TO_DATE('@submissionEndTo@ 23:59:59', '%Y-%m-%d %H:%M:%S')
143113

144-
AND LOWER(pcl.description) = DECODE('@categoryName@', '', LOWER(pcl.description), '@categoryName@')
145-
AND LOWER(pi.challenge_name) LIKE ('@challengeName@')
146-
AND NVL(pr.prize1, 0) >= @prilower@
147-
AND NVL(pr.prize1, 0) <= @priupper@
148-
AND p.tc_direct_project_id = DECODE(@tcdirectid@, 0, p.tc_direct_project_id, @tcdirectid@)
149-
AND NVL(LOWER(pi.cmc_task_id), '') = DECODE('@cmc@', '', NVL(LOWER(pi.cmc_task_id), ''), '@cmc@')
114+
AND LOWER(pcl.description) = DECODE('@categoryName@', '', LOWER(pcl.description), '@categoryName@')
115+
AND LOWER(pn.value) LIKE ('@challengeName@')
116+
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) >= @prilower@
117+
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) <= @priupper@
118+
AND p.tc_direct_project_id = DECODE(@tcdirectid@, 0, p.tc_direct_project_id, @tcdirectid@)
119+
AND NVL(LOWER((select value from project_info pi70 where pi70.project_id = p.project_id and project_info_type_id = 70)), '') = DECODE('@cmc@', '', NVL(LOWER((select value from project_info pi70 where pi70.project_id = p.project_id and project_info_type_id = 70)), ''), '@cmc@')
150120
ORDER BY @sortColumn@ @sortOrder@

0 commit comments

Comments
 (0)