Challenge Overview
Currently, we use a separate tool (Admin Tool) for Marathon Match management. For this challenge, we'd like to move the basic logic for Marathon Match management to Direct app.
Basically, when creating/updating Marathon Match type challenges, it should hold the information in placholder challenge and also update the tables used by real marathon matches like contest, round etc. So, for every marathon match we'll create a challenge that will show in Direct/Online Review as well as the appropriate round, round_segment, etc. data that is required by the marathon engine.
Revise the Launch Challenge Flow (Creation)
1. In Challenge Schedule section, add a new input for Registration End.
2. Remove input field for Problem Statement selection
3. When save the draft challenge, besides saving all the related information in tcs_catalog database, it also do as following
3.1 Create a Contest for marathon match, see https://github.com/appirio-tech/app/blob/dev/src/main/com/topcoder/server/ejb/AdminServices/AdminServicesBean.java#L1485
3.2 Create a new Round, see https://github.com/appirio-tech/app/blob/dev/src/main/com/topcoder/server/ejb/AdminServices/AdminServicesBean.java#L2259
3.3 Create Round Segments use the challenge phases info, see https://github.com/appirio-tech/app/blob/dev/src/main/com/topcoder/server/ejb/AdminServices/AdminServicesBean.java#L2673
3.4 The marathon spec that is entered should get saved as the problem statement.
4. The contest id and round id created should be properly stored as challenge properties info, so we can use it then updating Marathon Match challenge.
Edit Marathon Match Challenge
When updating challenge, it should keep the data in tcs_catalog and informixoltp database synced. So besides populating the tables in tcs_catalog database, it should also update the related information using the cached contest id and round id.
Please use the update approach, avoiding doing operations like removal and insertion, like the current setRoundSegments - https://github.com/appirio-tech/app/blob/dev/src/main/com/topcoder/server/ejb/AdminServices/AdminServicesBean.java#L2673
Verification
For data inserted into informixoltp database, currently, it is hard to setup admin tool to use, so you can just query the database, so make sure the data are always synced with what in tcs_catalog database.
About Local Setup
- Please use the dev branch of https://github.com/appirio-tech/direct-app
- Please follow https://github.com/appirio-tech/tc-common-tutorials/tree/master/docker/direct-app to use the Docker and Docker Compose approach to run it locally
- Deployment And Verification Steps.
Basically, when creating/updating Marathon Match type challenges, it should hold the information in placholder challenge and also update the tables used by real marathon matches like contest, round etc. So, for every marathon match we'll create a challenge that will show in Direct/Online Review as well as the appropriate round, round_segment, etc. data that is required by the marathon engine.
Revise the Launch Challenge Flow (Creation)
1. In Challenge Schedule section, add a new input for Registration End.
2. Remove input field for Problem Statement selection
3. When save the draft challenge, besides saving all the related information in tcs_catalog database, it also do as following
3.1 Create a Contest for marathon match, see https://github.com/appirio-tech/app/blob/dev/src/main/com/topcoder/server/ejb/AdminServices/AdminServicesBean.java#L1485
3.2 Create a new Round, see https://github.com/appirio-tech/app/blob/dev/src/main/com/topcoder/server/ejb/AdminServices/AdminServicesBean.java#L2259
3.3 Create Round Segments use the challenge phases info, see https://github.com/appirio-tech/app/blob/dev/src/main/com/topcoder/server/ejb/AdminServices/AdminServicesBean.java#L2673
3.4 The marathon spec that is entered should get saved as the problem statement.
4. The contest id and round id created should be properly stored as challenge properties info, so we can use it then updating Marathon Match challenge.
Edit Marathon Match Challenge
When updating challenge, it should keep the data in tcs_catalog and informixoltp database synced. So besides populating the tables in tcs_catalog database, it should also update the related information using the cached contest id and round id.
Please use the update approach, avoiding doing operations like removal and insertion, like the current setRoundSegments - https://github.com/appirio-tech/app/blob/dev/src/main/com/topcoder/server/ejb/AdminServices/AdminServicesBean.java#L2673
Verification
For data inserted into informixoltp database, currently, it is hard to setup admin tool to use, so you can just query the database, so make sure the data are always synced with what in tcs_catalog database.
About Local Setup
- Please use the dev branch of https://github.com/appirio-tech/direct-app
- Please follow https://github.com/appirio-tech/tc-common-tutorials/tree/master/docker/direct-app to use the Docker and Docker Compose approach to run it locally
Final Submission Guidelines
- Code Changes- Deployment And Verification Steps.