From 23455204fa3b618ae27e88bbdc7a27604cba680e Mon Sep 17 00:00:00 2001 From: Renyu Liu Date: Wed, 19 Mar 2014 18:05:47 +0800 Subject: [PATCH] add studio checkpoint submissions and submitter count --- actions/challenges.js | 35 +++++++++++++++---- ...kpoints_passed_screening_submissions_count | 8 +++++ ...ts_passed_screening_submissions_count.json | 5 +++ ...ckpoints_passed_screening_submitters_count | 11 ++++++ ...nts_passed_screening_submitters_count.json | 5 +++ ...io_challenge_checkpoints_submissions_count | 7 ++++ ...allenge_checkpoints_submissions_count.json | 5 +++ ...dio_challenge_checkpoints_submitters_count | 10 ++++++ ...hallenge_checkpoints_submitters_count.json | 5 +++ test/sqls/checkpoint/tcs_catalog__clean | 3 +- .../tcs_catalog__insert_test_data.part1 | 8 +++++ .../tcs_catalog__insert_test_data.part2 | 2 ++ .../tcs_catalog__insert_test_data.part3 | 6 +++- .../expected_checkpoint_studio.json | 32 ++++++++++------- .../expected_checkpoint_studio_2.json | 8 +++-- .../expected_checkpoint_studio_3.json | 8 +++-- .../expected_checkpoint_studio_priv.json | 28 ++++++++------- 17 files changed, 149 insertions(+), 37 deletions(-) create mode 100644 queries/get_studio_challenge_checkpoints_passed_screening_submissions_count create mode 100644 queries/get_studio_challenge_checkpoints_passed_screening_submissions_count.json create mode 100644 queries/get_studio_challenge_checkpoints_passed_screening_submitters_count create mode 100644 queries/get_studio_challenge_checkpoints_passed_screening_submitters_count.json create mode 100644 queries/get_studio_challenge_checkpoints_submissions_count create mode 100644 queries/get_studio_challenge_checkpoints_submissions_count.json create mode 100644 queries/get_studio_challenge_checkpoints_submitters_count create mode 100644 queries/get_studio_challenge_checkpoints_submitters_count.json diff --git a/actions/challenges.js b/actions/challenges.js index a8146a1eb..777306c48 100755 --- a/actions/challenges.js +++ b/actions/challenges.js @@ -1,7 +1,7 @@ /* * Copyright (C) 2013 - 2014 TopCoder Inc., All Rights Reserved. * - * @version 1.15 + * @version 1.16 * @author Sky_, mekanizumu, TCSASSEMBLER, freegod, Ghost_141, kurtrips, xjtufreeman, ecnu_haozi, hesibo, LazyChild * @changes from 1.0 * merged with Member Registration API @@ -38,6 +38,8 @@ * changes in 1.15: * Change the open and active status filter behaviour. OPEN for only reg phase is open, ACTIVE for reg is closed and * the challenge status is active. + * changes in 1.16: + * add studio checkpoint submissions and submitter count */ "use strict"; @@ -1164,6 +1166,11 @@ var getCheckpoint = function (api, connection, dbConnectionMap, isStudio, next) challengeId: challengeId, user_id: connection.caller.userId || 0, projectCategory: isStudio ? helper.studio.category : helper.software.category + }, + execQuery = function (name) { + return function (cbx) { + api.dataAccess.executeQuery(name, sqlParams, dbConnectionMap, cbx); + }; }; async.waterfall([ function (cb) { @@ -1171,12 +1178,8 @@ var getCheckpoint = function (api, connection, dbConnectionMap, isStudio, next) validateChallenge(api, connection, dbConnectionMap, challengeId, isStudio, cb); }, function (cb) { async.parallel({ - detail: function (cbx) { - api.dataAccess.executeQuery('get_checkpoint_detail', sqlParams, dbConnectionMap, cbx); - }, - feedback: function (cbx) { - api.dataAccess.executeQuery(feedbackQueryName, sqlParams, dbConnectionMap, cbx); - } + detail: execQuery('get_checkpoint_detail'), + feedback: execQuery(feedbackQueryName) }, cb); }, function (res, cb) { var generalFeedback = "", hasGeneralFeedback = true; @@ -1198,6 +1201,24 @@ var getCheckpoint = function (api, connection, dbConnectionMap, isStudio, next) }; }); result.generalFeedback = generalFeedback; + + if (isStudio) { + async.parallel({ + numberOfSubmissions: execQuery("get_studio_challenge_checkpoints_submissions_count"), + numberOfPassedScreeningSubmissions: execQuery("get_studio_challenge_checkpoints_passed_screening_submissions_count"), + numberOfPassedScreeningUniqueSubmitters: execQuery('get_studio_challenge_checkpoints_passed_screening_submitters_count'), + numberOfUniqueSubmitters: execQuery('get_studio_challenge_checkpoints_submitters_count') + }, cb); + } else { + cb(null, cb); + } + }, function (res, cb) { + if (isStudio) { + result.numberOfSubmissions = res.numberOfSubmissions[0].total; + result.numberOfPassedScreeningSubmissions = res.numberOfPassedScreeningSubmissions[0].total; + result.numberOfPassedScreeningUniqueSubmitters = res.numberOfPassedScreeningUniqueSubmitters[0].total; + result.numberOfUniqueSubmitters = res.numberOfUniqueSubmitters[0].total; + } cb(); } ], function (err) { diff --git a/queries/get_studio_challenge_checkpoints_passed_screening_submissions_count b/queries/get_studio_challenge_checkpoints_passed_screening_submissions_count new file mode 100644 index 000000000..108f5e5e5 --- /dev/null +++ b/queries/get_studio_challenge_checkpoints_passed_screening_submissions_count @@ -0,0 +1,8 @@ +select + COUNT(*) AS total +from upload u, + submission s +where u.project_id = @challengeId@ + and s.upload_id = u.upload_id + and s.submission_type_id = 3 + and s.submission_status_id in (1,4) diff --git a/queries/get_studio_challenge_checkpoints_passed_screening_submissions_count.json b/queries/get_studio_challenge_checkpoints_passed_screening_submissions_count.json new file mode 100644 index 000000000..fb3f948f1 --- /dev/null +++ b/queries/get_studio_challenge_checkpoints_passed_screening_submissions_count.json @@ -0,0 +1,5 @@ +{ + "name" : "get_studio_challenge_checkpoints_passed_screening_submissions_count", + "db" : "tcs_catalog", + "sqlfile" : "get_studio_challenge_checkpoints_passed_screening_submissions_count" +} diff --git a/queries/get_studio_challenge_checkpoints_passed_screening_submitters_count b/queries/get_studio_challenge_checkpoints_passed_screening_submitters_count new file mode 100644 index 000000000..6740fb480 --- /dev/null +++ b/queries/get_studio_challenge_checkpoints_passed_screening_submitters_count @@ -0,0 +1,11 @@ +select + COUNT (DISTINCT ri.value) AS total +from upload u, + submission s, + resource_info ri +where u.project_id = @challengeId@ + and s.upload_id = u.upload_id + and s.submission_type_id = 3 + and s.submission_status_id in (1,4) + and ri.resource_id = u.resource_id + and ri.resource_info_type_id = 2 diff --git a/queries/get_studio_challenge_checkpoints_passed_screening_submitters_count.json b/queries/get_studio_challenge_checkpoints_passed_screening_submitters_count.json new file mode 100644 index 000000000..248bcc80d --- /dev/null +++ b/queries/get_studio_challenge_checkpoints_passed_screening_submitters_count.json @@ -0,0 +1,5 @@ +{ + "name" : "get_studio_challenge_checkpoints_passed_screening_submitters_count", + "db" : "tcs_catalog", + "sqlfile" : "get_studio_challenge_checkpoints_passed_screening_submitters_count" +} diff --git a/queries/get_studio_challenge_checkpoints_submissions_count b/queries/get_studio_challenge_checkpoints_submissions_count new file mode 100644 index 000000000..19fa747ec --- /dev/null +++ b/queries/get_studio_challenge_checkpoints_submissions_count @@ -0,0 +1,7 @@ +select + COUNT(*) AS total +from upload u, + submission s +where u.project_id = @challengeId@ + and s.upload_id = u.upload_id + and s.submission_type_id = 3 diff --git a/queries/get_studio_challenge_checkpoints_submissions_count.json b/queries/get_studio_challenge_checkpoints_submissions_count.json new file mode 100644 index 000000000..c21b45852 --- /dev/null +++ b/queries/get_studio_challenge_checkpoints_submissions_count.json @@ -0,0 +1,5 @@ +{ + "name" : "get_studio_challenge_checkpoints_submissions_count", + "db" : "tcs_catalog", + "sqlfile" : "get_studio_challenge_checkpoints_submissions_count" +} diff --git a/queries/get_studio_challenge_checkpoints_submitters_count b/queries/get_studio_challenge_checkpoints_submitters_count new file mode 100644 index 000000000..2117ff26a --- /dev/null +++ b/queries/get_studio_challenge_checkpoints_submitters_count @@ -0,0 +1,10 @@ +select + COUNT (DISTINCT ri.value) AS total +from upload u, + submission s, + resource_info ri +where u.project_id = @challengeId@ + and s.upload_id = u.upload_id + and s.submission_type_id = 3 + and ri.resource_id = u.resource_id + and ri.resource_info_type_id = 2 diff --git a/queries/get_studio_challenge_checkpoints_submitters_count.json b/queries/get_studio_challenge_checkpoints_submitters_count.json new file mode 100644 index 000000000..ac277af6e --- /dev/null +++ b/queries/get_studio_challenge_checkpoints_submitters_count.json @@ -0,0 +1,5 @@ +{ + "name" : "get_studio_challenge_checkpoints_submitters_count", + "db" : "tcs_catalog", + "sqlfile" : "get_studio_challenge_checkpoints_submitters_count" +} diff --git a/test/sqls/checkpoint/tcs_catalog__clean b/test/sqls/checkpoint/tcs_catalog__clean index a6dd648ad..dba5c2621 100755 --- a/test/sqls/checkpoint/tcs_catalog__clean +++ b/test/sqls/checkpoint/tcs_catalog__clean @@ -5,6 +5,7 @@ DELETE FROM review WHERE submission_id >= 2001 AND submission_id <= 5000; DELETE FROM submission WHERE submission_id >= 2001 AND submission_id <= 5000; DELETE FROM prize WHERE prize_id >= 2001 AND prize_id <= 5000; DELETE FROM upload WHERE project_id >= 2001 AND project_id <= 5000; +DELETE FROM resource_info WHERE resource_id >= 2001 AND resource_id <= 5000; DELETE FROM resource WHERE project_id >= 2001 AND project_id <= 5000; DELETE FROM project_phase WHERE project_id >= 2001 AND project_id <= 5000; DELETE FROM project WHERE project_id >= 2001 AND project_id <= 5000; @@ -12,4 +13,4 @@ DELETE FROM project_studio_specification WHERE project_studio_spec_id >= 2001 A DELETE user_group_xref WHERE user_group_id IN (2001, 2002); DELETE group_contest_eligibility WHERE contest_eligibility_id IN (1000, 1001); DELETE contest_eligibility WHERE contest_eligibility_id IN (1000, 1001); -DELETE security_groups WHERE group_id IN (2001, 2002); \ No newline at end of file +DELETE security_groups WHERE group_id IN (2001, 2002); diff --git a/test/sqls/checkpoint/tcs_catalog__insert_test_data.part1 b/test/sqls/checkpoint/tcs_catalog__insert_test_data.part1 index 0c806d4ae..5887b24a5 100755 --- a/test/sqls/checkpoint/tcs_catalog__insert_test_data.part1 +++ b/test/sqls/checkpoint/tcs_catalog__insert_test_data.part1 @@ -10,6 +10,8 @@ VALUES(2002, 2002, 17, 3, current, current + 2 units day, current + 2 units day, INSERT INTO resource(resource_id, resource_role_id, project_id, create_user, create_date, modify_user, modify_date) VALUES(2001, 20, 2001, 132456, current, 132456, current); INSERT INTO resource(resource_id, resource_role_id, project_id, create_user, create_date, modify_user, modify_date) VALUES(2002, 20, 2002, 132456, current, 132456, current); +INSERT INTO resource_info (resource_id, resource_info_type_id, value, create_user, create_date, modify_user, modify_date) VALUES (2001, 2, '132457', 132457, CURRENT, 132457, CURRENT); +INSERT INTO resource_info (resource_id, resource_info_type_id, value, create_user, create_date, modify_user, modify_date) VALUES (2002, 2, '132456', 132456, CURRENT, 132456, CURRENT); INSERT INTO comp_milestone_feedback(comp_milestone_feedback_id, project_id, feedback) VALUES(2001, 2001, 'General feedback for challenge 2001'); INSERT INTO comp_milestone_feedback(comp_milestone_feedback_id, project_id, feedback) VALUES(2002, 2002, 'General feedback for challenge 2002'); @@ -86,3 +88,9 @@ INSERT INTO review_item(review_item_id, review_id, scorecard_question_id, answer INSERT INTO review_item_comment(review_item_comment_id, resource_id, review_item_id, comment_type_id, content, sort, create_user, create_date, modify_user, modify_date) VALUES(2010, 2002, 2010, 11, 'Checkpoint review for submission 2010', 1, 132456, current, 132456, current); +INSERT INTO upload(upload_id, project_id, resource_id, upload_type_id, upload_status_id, parameter, create_user, create_date, modify_user, modify_date) VALUES(2011, 2002, 2001, 1, 1, 'test', 132456, CURRENT, 132456, CURRENT); +INSERT INTO prize(prize_id, project_id, place, prize_amount, prize_type_id, number_of_submissions, create_user, create_date, modify_user, modify_date) VALUES(2011, 2002, 6, 200, 14, 1, 'heffan', CURRENT, 'heffan', CURRENT); +INSERT INTO submission(submission_id, upload_id, submission_status_id, placement, submission_type_id, prize_id, create_user, create_date, modify_user, modify_date) VALUES(2011, 2011, 6, 2, 3, 2010, 132456, CURRENT, 132456, CURRENT); +INSERT INTO review(review_id, resource_id, submission_id, project_phase_id, scorecard_id, committed, create_user, create_date, modify_user, modify_date) VALUES(2011, 2002, 2011, 2002, 30000417, 1, 132456, current, 132456, current); +INSERT INTO review_item(review_item_id, review_id, scorecard_question_id, answer, sort, create_user, create_date, modify_user, modify_date) VALUES(2011, 2010, 30003113, 'test', 1, 132456, current, 132456, current); +INSERT INTO review_item_comment(review_item_comment_id, resource_id, review_item_id, comment_type_id, content, sort, create_user, create_date, modify_user, modify_date) VALUES(2011, 2002, 2011, 11, 'Checkpoint review for submission 2010', 1, 132456, current, 132456, current); diff --git a/test/sqls/checkpoint/tcs_catalog__insert_test_data.part2 b/test/sqls/checkpoint/tcs_catalog__insert_test_data.part2 index c8d4f9a66..3b833c7c2 100755 --- a/test/sqls/checkpoint/tcs_catalog__insert_test_data.part2 +++ b/test/sqls/checkpoint/tcs_catalog__insert_test_data.part2 @@ -11,6 +11,8 @@ VALUES(3002, 3002, 17, 3, current, current + 2 units day, current + 2 units day, INSERT INTO resource(resource_id, resource_role_id, project_id, create_user, create_date, modify_user, modify_date) VALUES(3001, 20, 3001, 132456, current, 132456, current); INSERT INTO resource(resource_id, resource_role_id, project_id, create_user, create_date, modify_user, modify_date) VALUES(3002, 20, 3002, 132456, current, 132456, current); +INSERT INTO resource_info (resource_id, resource_info_type_id, value, create_user, create_date, modify_user, modify_date) VALUES (3001, 2, '132457', 132457, CURRENT, 132457, CURRENT); +INSERT INTO resource_info (resource_id, resource_info_type_id, value, create_user, create_date, modify_user, modify_date) VALUES (3002, 2, '132456', 132456, CURRENT, 132456, CURRENT); INSERT INTO comp_milestone_feedback(comp_milestone_feedback_id, project_id, feedback) VALUES(3001, 3001, 'General feedback for challenge 3001'); INSERT INTO comp_milestone_feedback(comp_milestone_feedback_id, project_id, feedback) VALUES(3002, 3002, 'General feedback for challenge 3002'); diff --git a/test/sqls/checkpoint/tcs_catalog__insert_test_data.part3 b/test/sqls/checkpoint/tcs_catalog__insert_test_data.part3 index ffe251348..04ec082bd 100755 --- a/test/sqls/checkpoint/tcs_catalog__insert_test_data.part3 +++ b/test/sqls/checkpoint/tcs_catalog__insert_test_data.part3 @@ -19,6 +19,10 @@ INSERT INTO resource(resource_id, resource_role_id, project_id, create_user, cre INSERT INTO resource(resource_id, resource_role_id, project_id, create_user, create_date, modify_user, modify_date) VALUES(4002, 20, 4002, 132456, current, 132456, current); INSERT INTO resource(resource_id, resource_role_id, project_id, create_user, create_date, modify_user, modify_date) VALUES(4003, 20, 4003, 132456, current, 132456, current); INSERT INTO resource(resource_id, resource_role_id, project_id, create_user, create_date, modify_user, modify_date) VALUES(4004, 20, 4004, 132456, current, 132456, current); +INSERT INTO resource_info (resource_id, resource_info_type_id, value, create_user, create_date, modify_user, modify_date) VALUES (4001, 2, '132457', 132457, CURRENT, 132457, CURRENT); +INSERT INTO resource_info (resource_id, resource_info_type_id, value, create_user, create_date, modify_user, modify_date) VALUES (4002, 2, '132456', 132456, CURRENT, 132456, CURRENT); +INSERT INTO resource_info (resource_id, resource_info_type_id, value, create_user, create_date, modify_user, modify_date) VALUES (4003, 2, '132457', 132457, CURRENT, 132457, CURRENT); +INSERT INTO resource_info (resource_id, resource_info_type_id, value, create_user, create_date, modify_user, modify_date) VALUES (4004, 2, '132456', 132456, CURRENT, 132456, CURRENT); INSERT INTO comp_milestone_feedback(comp_milestone_feedback_id, project_id, feedback) VALUES(4003, 4003, 'General feedback for challenge 4003'); INSERT INTO comp_milestone_feedback(comp_milestone_feedback_id, project_id, feedback) VALUES(4004, 4004, 'General feedback for challenge 4004'); @@ -40,4 +44,4 @@ INSERT INTO review_item_comment(review_item_comment_id, resource_id, review_item INSERT INTO project_studio_specification(project_studio_spec_id, general_feedback, create_user, create_date, modify_user, modify_date) VALUES(4011, null, 132456, current, 132456, current); INSERT INTO project(project_id, project_status_id, project_category_id, tc_direct_project_id, create_user, create_date, modify_user, modify_date) VALUES(4010, 2, 14, 132456, 4010, current, 132456, current); -INSERT INTO project(project_id, project_status_id, project_category_id, tc_direct_project_id, project_studio_spec_id, create_user, create_date, modify_user, modify_date) VALUES(4011, 2, 17, 132456, 4011, 4011, current, 132456, current); \ No newline at end of file +INSERT INTO project(project_id, project_status_id, project_category_id, tc_direct_project_id, project_studio_spec_id, create_user, create_date, modify_user, modify_date) VALUES(4011, 2, 17, 132456, 4011, 4011, current, 132456, current); diff --git a/test/test_files/expected_checkpoint_studio.json b/test/test_files/expected_checkpoint_studio.json index aef11eee1..850045400 100755 --- a/test/test_files/expected_checkpoint_studio.json +++ b/test/test_files/expected_checkpoint_studio.json @@ -1,25 +1,33 @@ { "checkpointResults": [ { - "feedback": "Checkpoint review for submission 2006", - "submissionId": 2006 + "submissionId": 2006, + "feedback": "Checkpoint review for submission 2006" }, { - "feedback": "Checkpoint review for submission 2007", - "submissionId": 2007 + "submissionId": 2007, + "feedback": "Checkpoint review for submission 2007" }, { - "feedback": "Checkpoint review for submission 2008", - "submissionId": 2008 + "submissionId": 2008, + "feedback": "Checkpoint review for submission 2008" }, { - "feedback": "Checkpoint review for submission 2009", - "submissionId": 2009 + "submissionId": 2009, + "feedback": "Checkpoint review for submission 2009" }, { - "feedback": "Checkpoint review for submission 2010", - "submissionId": 2010 + "submissionId": 2010, + "feedback": "Checkpoint review for submission 2010" + }, + { + "submissionId": 2010, + "feedback": "Checkpoint review for submission 2010" } ], - "generalFeedback": "general feedback for challenge 2002" -} \ No newline at end of file + "generalFeedback": "general feedback for challenge 2002", + "numberOfSubmissions": 6, + "numberOfPassedScreeningSubmissions": 5, + "numberOfPassedScreeningUniqueSubmitters": 1, + "numberOfUniqueSubmitters": 2 +} diff --git a/test/test_files/expected_checkpoint_studio_2.json b/test/test_files/expected_checkpoint_studio_2.json index 32e1fdf73..00ca0d1d8 100755 --- a/test/test_files/expected_checkpoint_studio_2.json +++ b/test/test_files/expected_checkpoint_studio_2.json @@ -5,5 +5,9 @@ "submissionId": 4006 } ], - "generalFeedback": "" -} \ No newline at end of file + "generalFeedback": "", + "numberOfSubmissions": 1, + "numberOfPassedScreeningSubmissions": 1, + "numberOfPassedScreeningUniqueSubmitters": 1, + "numberOfUniqueSubmitters": 1 +} diff --git a/test/test_files/expected_checkpoint_studio_3.json b/test/test_files/expected_checkpoint_studio_3.json index 4f46f5c3c..fd7179f48 100755 --- a/test/test_files/expected_checkpoint_studio_3.json +++ b/test/test_files/expected_checkpoint_studio_3.json @@ -1,4 +1,8 @@ { "checkpointResults": [], - "generalFeedback": "general feedback for challenge 4004" -} \ No newline at end of file + "generalFeedback": "general feedback for challenge 4004", + "numberOfSubmissions": 0, + "numberOfPassedScreeningSubmissions": 0, + "numberOfPassedScreeningUniqueSubmitters": 0, + "numberOfUniqueSubmitters": 0 +} diff --git a/test/test_files/expected_checkpoint_studio_priv.json b/test/test_files/expected_checkpoint_studio_priv.json index e2b286237..3f91e5f21 100755 --- a/test/test_files/expected_checkpoint_studio_priv.json +++ b/test/test_files/expected_checkpoint_studio_priv.json @@ -1,25 +1,29 @@ { "checkpointResults": [ { - "feedback": "Checkpoint review for submission 3006", - "submissionId": 3006 + "submissionId": 3006, + "feedback": "Checkpoint review for submission 3006" }, { - "feedback": "Checkpoint review for submission 3007", - "submissionId": 3007 + "submissionId": 3007, + "feedback": "Checkpoint review for submission 3007" }, { - "feedback": "Checkpoint review for submission 3008", - "submissionId": 3008 + "submissionId": 3008, + "feedback": "Checkpoint review for submission 3008" }, { - "feedback": "Checkpoint review for submission 3009", - "submissionId": 3009 + "submissionId": 3009, + "feedback": "Checkpoint review for submission 3009" }, { - "feedback": "Checkpoint review for submission 3010", - "submissionId": 3010 + "submissionId": 3010, + "feedback": "Checkpoint review for submission 3010" } ], - "generalFeedback": "general feedback for challenge 3002" -} \ No newline at end of file + "generalFeedback": "general feedback for challenge 3002", + "numberOfSubmissions": 5, + "numberOfPassedScreeningSubmissions": 5, + "numberOfPassedScreeningUniqueSubmitters": 1, + "numberOfUniqueSubmitters": 1 +}