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

Improve develop review opportunity detail api. #183

Merged
merged 1 commit into from
Apr 9, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 20 additions & 15 deletions actions/reviewOpportunities.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* Copyright (C) 2013 - 2014 TopCoder Inc., All Rights Reserved.
*
* @version 1.4
* @author Sky_, Ghost_141, TCSASSEMBLER
* @author Sky_, Ghost_141
* changes in 1.1
* - Implement the studio review opportunities.
* changes in 1.2
Expand Down Expand Up @@ -555,7 +555,7 @@ var getReviewOpportunities = function (api, connection, isStudio, next) {
*/
var getSoftwareReviewOpportunity = function (api, connection, next) {
var helper = api.helper, dbConnectionMap = connection.dbConnectionMap, challengeId, sqlParams, result = {},
phases, positions, applications, basic, adjustPayment,
phases, positions, applications, basic, adjustPayment, assignedResource,
execQuery = function (name) {
return function (cb) {
api.dataAccess.executeQuery(name, sqlParams, dbConnectionMap, cb);
Expand All @@ -576,6 +576,7 @@ var getSoftwareReviewOpportunity = function (api, connection, next) {
}

sqlParams = {
challenge_id: challengeId,
challengeId: challengeId,
user_id: connection.caller.userId
};
Expand All @@ -602,13 +603,15 @@ var getSoftwareReviewOpportunity = function (api, connection, next) {
phases: execQuery('get_review_opportunity_detail_phases'),
positions: execQuery('get_review_opportunity_detail_positions'),
applications: execQuery('get_review_opportunity_detail_applications'),
resource: execQuery('get_assigned_review_resource_role'),
adjustPayment: execQuery('search_software_review_opportunities_adjust_payment')
}, cb);
},
function (results, cb) {
phases = results.phases;
positions = results.positions;
applications = results.applications;
assignedResource = results.resource;
basic = results.basic[0];
adjustPayment = results.adjustPayment;

Expand All @@ -630,16 +633,21 @@ var getSoftwareReviewOpportunity = function (api, connection, next) {
});
});

// Iterative each positions that this challenge have.
positions.forEach(function (row) {
var positionOpen,
approvedNumber = _.countBy(applications,
function (item) {
return item.review_application_role_id === row.review_application_role_id
&& item.status === 'Approved';
})['true'] || 0;

if (approvedNumber === row.num_positions) {
// There is no spaces for new reviewer on this role.
isClosed = false,
i,
reviewApplicationRole = _.filter(results.basic, function (item) { return item.review_application_role_id === row.review_application_role_id; });

for (i = 0; i < reviewApplicationRole.length; i += 1) {
if (!isClosed && reviewApplicationRole[i].is_unique && assignedResource.indexOf(reviewApplicationRole[i].resource_role_id) >= 0) {
isClosed = true;
}
}

if (isClosed) {
// Review application role is closed.
return;
}

Expand Down Expand Up @@ -762,7 +770,6 @@ var applyDevelopReviewOpportunity = function (api, connection, next) {
.value(),
privateCheck = res.privateCheck[0],
positionsLeft,
reviewersCount,
assignedResourceRoles = res.resourceRoles,
currentUserResourceRole = _.filter(assignedResourceRoles, function (item) { return item.user_id === caller.userId; });

Expand All @@ -776,8 +783,6 @@ var applyDevelopReviewOpportunity = function (api, connection, next) {
// Initialize it after the definition check.
// The total review positions left for this challenge.
positionsLeft = details[0].positions_left;
// The needed reviewer count.
reviewersCount = details[0].reviewers_count;
// The reviewer assignment date.
reviewAssignmentDate = details[0].assignment_date;
// The review auction id. This will bed used when insert new review application.
Expand Down Expand Up @@ -833,12 +838,12 @@ var applyDevelopReviewOpportunity = function (api, connection, next) {
}

for (i = 0; i < reviewApplicationRole.length; i += 1) {
if (reviewApplicationRole[i].is_unique && assignedRoles.indexOf(reviewApplicationRole[i].resource_role_id) >= 0) {
if (!isClosed && reviewApplicationRole[i].is_unique && assignedRoles.indexOf(reviewApplicationRole[i].resource_role_id) >= 0) {
isClosed = true;
}
}
console.log('isClosed: ' + isClosed);

// The review application role is closed so no need to calculate the positions left(we already did in query).
if (isClosed) {
cb(new BadRequestError('There is no open positions for selected review application role: ' + reviewApplicationRole[0].role_name + '.'));
return;
Expand Down
4 changes: 2 additions & 2 deletions queries/check_challenge_review_opportunity
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
SELECT 1
FROM project p
INNER JOIN review_auction ra ON ra.project_id = @challengeId@
INNER JOIN review_auction ra ON ra.project_id = @challenge_id@
INNER JOIN project_category_lu pcl ON pcl.project_category_id = p.project_category_id
WHERE 1=1
AND p.project_id = @challengeId@
AND p.project_id = @challenge_id@
AND p.project_category_id != 29 -- filter out the copilot posting challenge.
AND p.project_category_id != 37 -- filter out the marathon match challenge.
AND pcl.display = 't'
Expand Down
9 changes: 4 additions & 5 deletions queries/get_review_opportunity_detail_applications
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
SELECT
u.handle
, rarl.name AS role
, rarl.review_application_role_id AS role_id
, ratingTable.rating AS reviewer_rating
, rasl.name AS status
, ra.create_date AS application_date
Expand All @@ -10,24 +9,24 @@ INNER JOIN user u ON u.user_id = ra.user_id
INNER JOIN review_auction rauc ON rauc.review_auction_id = ra.review_auction_id
INNER JOIN review_application_role_lu rarl ON rarl.review_application_role_id = ra.review_application_role_id
INNER JOIN review_application_status_lu rasl ON rasl.review_application_status_id = ra.review_application_status_id
INNER JOIN project p ON p.project_id = @challengeId@ AND p.project_id = rauc.project_id
INNER JOIN project p ON p.project_id = @challenge_id@ AND p.project_id = rauc.project_id
LEFT OUTER JOIN (
SELECT
DISTINCT
rating
, rr.user_id
, rr.review_date
FROM reviewer_rating rr
INNER JOIN project p1 ON p1.project_id = @challengeId@
INNER JOIN project p1 ON p1.project_id = @challenge_id@
INNER JOIN project p2 ON p2.project_id = rr.project_id
WHERE 1=1
AND p1.project_category_id = p2.project_category_id
AND review_date = (SELECT
max(rr.review_date)
FROM reviewer_rating rr
INNER JOIN project p1 ON p1.project_id = @challengeId@
INNER JOIN project p1 ON p1.project_id = @challenge_id@
INNER JOIN project p2 ON p2.project_id = rr.project_id
WHERE 1=1
AND p1.project_category_id = p2.project_category_id)
) ratingTable ON ratingTable.user_id = u.user_id
ORDER BY ra.create_date ASC
ORDER BY ra.create_date ASC
11 changes: 7 additions & 4 deletions queries/get_review_opportunity_detail_basic
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ SELECT
, 1 - (SELECT count(r.resource_id) FROM resource r WHERE r.project_id=p.project_id AND r.resource_role_id = 18) AS reviewers_required
, rarl.review_application_role_id
, dpp.resource_role_id
, rarrrx.unique_role AS is_unique
, dpp.fixed_amount
, dpp.base_coefficient
, dpp.incremental_coefficient
Expand All @@ -24,7 +25,7 @@ SELECT
END AS submission_count
FROM review_auction ra
INNER JOIN review_auction_type_lu ratl ON ratl.review_auction_type_id=ra.review_auction_type_id AND ratl.review_auction_category_id=2
INNER JOIN project p ON p.project_id=ra.project_id AND p.project_id = @challengeId@
INNER JOIN project p ON p.project_id=ra.project_id AND p.project_id = @challenge_id@
INNER JOIN project_category_lu pcl ON p.project_category_id = pcl.project_category_id
INNER JOIN project_info pi ON pi.project_id = p.project_id AND pi.project_info_type_id = 6
INNER JOIN project_phase pp13 ON pp13.project_id=p.project_id AND pp13.phase_type_id=13 AND not exists (SELECT 1 FROM phase_dependency WHERE dependent_phase_id=pp13.project_phase_id)
Expand All @@ -45,6 +46,7 @@ SELECT
, pc.parameter::int - (SELECT count(r.resource_id) FROM resource r WHERE r.project_id=p.project_id AND r.resource_role_id IN (4,5,6,7)) AS reviewers_required
, rarl.review_application_role_id
, dpp.resource_role_id
, rarrrx.unique_role AS is_unique
, dpp.fixed_amount
, dpp.base_coefficient
, dpp.incremental_coefficient
Expand All @@ -62,7 +64,7 @@ SELECT
END AS submission_count
FROM review_auction ra
INNER JOIN review_auction_type_lu ratl ON ratl.review_auction_type_id=ra.review_auction_type_id AND ratl.review_auction_category_id=1
INNER JOIN project p ON p.project_id=ra.project_id AND p.project_id = @challengeId@
INNER JOIN project p ON p.project_id=ra.project_id AND p.project_id = @challenge_id@
INNER JOIN project_category_lu pcl ON p.project_category_id = pcl.project_category_id
INNER JOIN project_info pi ON pi.project_id = p.project_id AND pi.project_info_type_id = 6
INNER JOIN project_phase pp2 ON pp2.project_id=p.project_id AND pp2.phase_type_id=2
Expand All @@ -83,6 +85,7 @@ SELECT
, pc.parameter::int - (SELECT count(r.resource_id) FROM resource r WHERE r.project_id=p.project_id AND r.resource_role_id = 21) AS reviewers_required
, rarl.review_application_role_id
, dpp.resource_role_id
, rarrrx.unique_role AS is_unique
, dpp.fixed_amount
, dpp.base_coefficient
, dpp.incremental_coefficient
Expand All @@ -100,7 +103,7 @@ SELECT
END AS submission_count
FROM review_auction ra
INNER JOIN review_auction_type_lu ratl ON ratl.review_auction_type_id=ra.review_auction_type_id AND ratl.review_auction_category_id=3
INNER JOIN project p ON p.project_id=ra.project_id AND p.project_id = @challengeId@
INNER JOIN project p ON p.project_id=ra.project_id AND p.project_id = @challenge_id@
INNER JOIN project_category_lu pcl ON p.project_category_id = pcl.project_category_id
INNER JOIN project_info pi ON pi.project_id = p.project_id AND pi.project_info_type_id = 6
INNER JOIN project_phase pp2 ON pp2.project_id=p.project_id AND pp2.phase_type_id=2
Expand All @@ -110,4 +113,4 @@ INNER JOIN phase_criteria pc ON pc.project_phase_id=pp18.project_phase_id AND pc
INNER JOIN review_application_role_lu rarl ON rarl.review_auction_type_id = ra.review_auction_type_id
INNER JOIN review_application_role_resource_role_xref rarrrx ON rarrrx.review_application_role_id = rarl.review_application_role_id
INNER JOIN default_project_payment dpp ON dpp.resource_role_id = rarrrx.resource_role_id AND p.project_category_id = dpp.project_category_id
WHERE dpp.resource_role_id = 21
WHERE dpp.resource_role_id = 21
4 changes: 2 additions & 2 deletions queries/get_review_opportunity_detail_phases
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ SELECT
FROM project_phase pp
INNER JOIN phase_status_lu psl ON psl.phase_status_id = pp.phase_status_id
INNER JOIN phase_type_lu ptl ON ptl.phase_type_id = pp.phase_type_id
WHERE pp.project_id = @challengeId@
ORDER BY NVL(actual_start_time, scheduled_start_time) ASC
WHERE pp.project_id = @challenge_id@
ORDER BY NVL(actual_start_time, scheduled_start_time) ASC
4 changes: 3 additions & 1 deletion queries/get_review_opportunity_detail_positions
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ SELECT
rarl.name AS role
, rarl.review_application_role_id
, rarl.positions AS num_positions
, rarl.order_index
FROM review_auction ra
INNER JOIN project p ON p.project_id = @challengeId@ AND ra.project_id = @challengeId@
INNER JOIN project p ON p.project_id = @challenge_id@ AND ra.project_id = @challenge_id@
INNER JOIN review_auction_type_lu ratl ON ratl.review_auction_type_id = ra.review_auction_type_id
INNER JOIN review_application_role_lu rarl ON rarl.review_auction_type_id = ra.review_auction_type_id
ORDER BY rarl.order_index ASC
5 changes: 2 additions & 3 deletions queries/review_opportunity_detail
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
SELECT
ra.review_auction_id
, 1 - (SELECT COUNT(r.resource_id) FROM resource r WHERE r.project_id=p.project_id AND r.resource_role_id = 18) AS positions_left
, 1 AS reviewers_count
, rarl.name AS role_name
, rarl.review_application_role_id
, rarl.positions
Expand Down Expand Up @@ -31,7 +30,6 @@ UNION ALL
SELECT
ra.review_auction_id
, pc.parameter::int - (SELECT COUNT(r.resource_id) FROM resource r WHERE r.project_id=p.project_id AND r.resource_role_id IN (4,5,6,7)) AS positions_left
, pc.parameter::int AS reviewers_count
, rarl.name AS role_name
, rarl.review_application_role_id
, rarl.positions
Expand Down Expand Up @@ -61,7 +59,6 @@ UNION ALL
SELECT
ra.review_auction_id
, pc.parameter::int - (SELECT COUNT(r.resource_id) FROM resource r WHERE r.project_id=p.project_id AND r.resource_role_id = 21) AS positions_left
, pc.parameter::int AS reviewers_count
, rarl.name AS role_name
, rarl.review_application_role_id
, rarl.positions
Expand All @@ -85,3 +82,5 @@ AND p.project_status_id = 1
AND pp2.phase_status_id IN (2, 3)
AND pp18.phase_status_id IN (1, 2)
AND not exists (SELECT 1 FROM project_phase pp12 WHERE pp12.project_id=p.project_id AND pp12.phase_type_id=12)

ORDER BY rarl.order_index ASC
6 changes: 3 additions & 3 deletions queries/search_software_review_opportunities_adjust_payment
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ DISTINCT
FROM project_payment_adjustment ppa
INNER JOIN review_auction ra ON ra.project_id = ppa.project_id
INNER JOIN review_auction_type_lu ratl ON ratl.review_auction_type_id=ra.review_auction_type_id AND ratl.review_auction_category_id=2
INNER JOIN project p ON p.project_id=ra.project_id AND p.project_id = DECODE(@challengeId@, 0, p.project_id, @challengeId@)
INNER JOIN project p ON p.project_id=ra.project_id AND p.project_id = DECODE(@challenge_id@, 0, p.project_id, @challenge_id@)
INNER JOIN project_phase pp13 ON pp13.project_id=p.project_id AND pp13.phase_type_id=13 AND not exists (SELECT 1 FROM phase_dependency WHERE dependent_phase_id=pp13.project_phase_id)
INNER JOIN phase_dependency pd ON pd.dependency_phase_id=pp13.project_phase_id
INNER JOIN project_phase pp14 ON pp14.project_id=p.project_id AND pp14.phase_type_id=14 AND pp14.project_phase_id=pd.dependent_phase_id
Expand All @@ -27,7 +27,7 @@ DISTINCT
FROM project_payment_adjustment ppa
INNER JOIN review_auction ra ON ra.project_id = ppa.project_id
INNER JOIN review_auction_type_lu ratl ON ratl.review_auction_type_id=ra.review_auction_type_id AND ratl.review_auction_category_id=1
INNER JOIN project p ON p.project_id=ra.project_id AND p.project_id = DECODE(@challengeId@, 0, p.project_id, @challengeId@)
INNER JOIN project p ON p.project_id=ra.project_id AND p.project_id = DECODE(@challenge_id@, 0, p.project_id, @challenge_id@)
INNER JOIN project_phase pp2 ON pp2.project_id=p.project_id AND pp2.phase_type_id=2
INNER JOIN project_phase pp4 ON pp4.project_id=p.project_id AND pp4.phase_type_id=4
INNER JOIN phase_criteria pc ON pc.project_phase_id=pp4.project_phase_id AND pc.phase_criteria_type_id=6
Expand All @@ -46,7 +46,7 @@ DISTINCT
FROM project_payment_adjustment ppa
INNER JOIN review_auction ra ON ra.project_id = ppa.project_id
INNER JOIN review_auction_type_lu ratl ON ratl.review_auction_type_id=ra.review_auction_type_id AND ratl.review_auction_category_id=3
INNER JOIN project p ON p.project_id=ra.project_id AND p.project_id = DECODE(@challengeId@, 0, p.project_id, @challengeId@)
INNER JOIN project p ON p.project_id=ra.project_id AND p.project_id = DECODE(@challenge_id@, 0, p.project_id, @challenge_id@)
INNER JOIN project_phase pp2 ON pp2.project_id=p.project_id AND pp2.phase_type_id=2
INNER JOIN project_phase pp18 ON pp18.project_id=p.project_id AND pp18.phase_type_id=18
INNER JOIN phase_dependency pd ON pd.dependent_phase_id=pp18.project_phase_id AND pd.dependent_start=1 AND pd.dependency_phase_id=pp2.project_phase_id AND pd.dependency_start=1
Expand Down
2 changes: 1 addition & 1 deletion test/test.applyDevelopReviewOpportunity.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* Copyright (C) 2014 TopCoder Inc., All Rights Reserved.
*
* @version 1.0
* @author TCSASSEMBLER
* @author Ghost_141
*/
'use strict';
/*global describe, it, before, beforeEach, after, afterEach */
Expand Down
2 changes: 1 addition & 1 deletion test/test.softwareReviewOpportunityDetails.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* Copyright (C) 2014 TopCoder Inc., All Rights Reserved.
*
* @version 1.0
* @author TCSASSEMBLER
* @author Ghost_141
*/
'use strict';
/*global describe, it, before, beforeEach, after, afterEach */
Expand Down
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy