Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Practice Mode - autodeploy practice challenge #227

Closed
sei-bstein opened this issue Aug 3, 2023 · 1 comment
Closed

Practice Mode - autodeploy practice challenge #227

sei-bstein opened this issue Aug 3, 2023 · 1 comment
Assignees
Labels
enhancement New feature or request

Comments

@sei-bstein
Copy link
Contributor

To minimize friction in starting a practice challenge, update the practice session page such that it automatically deploys the challenge once the practice session has started.

@sei-bstein sei-bstein added the enhancement New feature or request label Aug 3, 2023
@sei-bstein sei-bstein self-assigned this Aug 3, 2023
@sei-bstein
Copy link
Contributor Author

Addressing this with a new component encapsulating the play interface - will eventually migrate to competitive mode also.

sei-bstein added a commit that referenced this issue Aug 4, 2023
sei-jbooz pushed a commit that referenced this issue Sep 7, 2023
* Initial groundwork for reports rewrite.

* Add reports service and fix service registration tech debt.

* More iteration on reports revamp

* Checkpoint for reports revamp

* More reports backend

* Use challenge specs instead of challenges for reporting.

* More reports plumbing

* More report plumbing

* Add support report to db

* Work on support report

* Polishing support report

* Add reports and initial unit tests

* More work on reports

* Refactor - move SimpleEntity into Gameboard.Api.Features.Common.

* Don't bootstrap JobsService in integration test env

* Address an issue where Gameboard was incorrectly evaluating whether a challenge has a deployed gamespace after destroy. Resolves #182.

* Add registration date range to challenges report

* Fix player report bugs

* Server-side hardening for illegal mime type upload. Removed bare repositories.
Updated recommended extensions.

* Add improved file upload validation. Add editor config to suppress private member warnings.

* Update unit tests

* Remove server-side html escaping of user input (handled client side).

* Resolved an issue that prevented assignees from being display in the support ticket list.

* Remove unnecessary dependency injection from the app hub.

* Fix build error in ticket service

* Fix merge issue from main

* Resolve changes from the merge

* Initial version of enrollment report and refactor

* Add minimal unit tests for enrollment report

* Additional refinements to enrollment report

* Remove gamebrain schema generator (no longer needed)

* Add WhenCreated to player table.

* Added export for enrollment report.

* Remove unnecessary pragma warning for new C# tools, unbreak player service tests.

* More work on enrollment report

* Clarify comments on Enrollment report query

* Fix line chart for enrollment, update validation strategies, add new query extension to deal with nullish dates.

* Page to default values when illegal paging is requested. Add Challenges Attempted to enrollment csv export.

* Refactor of practice backend

* Add new user fields for created on, last login date, and login count. Pruned unused code and store implementations that weren't really doing much. Resolves #196.

* Rename reports folder

* Add tests for query extensions

* Started work on practice report

* Code cleanup

* Fix failing integration tests

* Fix a bug with date processing for the enrollment report

* Work on practice mode report

* Add metadata query

* Improvements to practice report

* Update practice report models

* Add player performance tab to practice mode report

* Wrapping up a draft of practice mode

* Fix integration test issues

* Direct dotnet restore command in Github Action to src

* Update GH actions config for correct solutions file config.

* Delete extra sln file

* Fix stackoverflow in captain resolution

* Improvements to support report and solution tooling.

* Improvements to support report filters

* Code cleanup in engine service

* Automatically sort string filters for reports

* fixed an issue with the sponsor filter on the enrollment report

* Guard against orphaned specIds in the practice mode report

* Add games filter to enrollment service.

* Guard against unexpected nulls in practice mode report

* Guard against unexpected sponsor nulls in practice mode report

* Fix criteria processing for practice mode report

* PlayerMode to challenges

- Add "PlayerMode" to challenges. Resolves #218
- Sort support service by created date by default.

* Query practice mode report based on the challenge-level PlayerMode flag rather than the game-level one.

* Code cleanup in game engine service

* Code cleanup

* Fix PlayerService constructor signature to remove unused injections

* Code cleanup

* Align parameter names

* Add stat summary for enrollment report

* Code cleanup

* Fix build

* Guard against null sponsors in enrollment report. Hide practice games on home screen.

* Present percentile for Practice Mode report as a 0-100 value (up from 0-1).

* Add challenge result to practice mode report

* Optimize sponsor count stat for the enrollment report

* Code cleanup

* Remove unused property of game model

* Improvements to practice mode workflow (allow detection of active practice session

* Change model shape for user active practice challenge.

* Enhance information available for an active practice challenge to support new launch path.

* Improvement to practice mode/playcomponent

* More support for auto-deploy of practice challenges/ new 'play' component.

* More work on autolaunch/play component

* Finish autolaunch. Resolves #227

* Fix a bug in practice report where player count per sponsor was not computed correctly.

* Fix test game engine service interface sig

* Fix failing test

* Corrected resolution of json options for integration tests.

* Code cleanup

* Allow API key authentication to resolve grader keys as well as standard user api keys.

- Moved GetUserFromApiKey to service level
- Added tests to verify resolution of user and grader keys
- Resolved an issue where integration tests were inadvertently depending on our internal test Gamebrain instance

* set default solution path

* Additional test for grader/apikey authentication.

* Revert "Additional test for grader/apikey authentication."

This reverts commit b75727d.

* Additional test for grader api key resolution.

* Added revised grader key authentication and modified _Controller to represent an authenticated grader key separately from an authenticated user.

* Remove incorrect tests

* Update game engine mapper to reflect existing mapping in ChallengeMaps between Vm count and IsActive

* Add practice admin stuff

* Improvements to practice admin

* Set default topo timeout to 300 sec (up from 100).

* Finished up practice certificates

* Fixed broken constructor sig intests

* Fixed hours/minutes display for practice certificates and added supporting unit tests.

* Always archive team challenges on reset

* Removed test (the rule is no longer true)

* Playing with various pdf rendering options?

* Various code cleanup

* Do server-side rendering of certificates in PNG format.

* Update tests

* Finish server side generation of html for both practice and competitive.

* Fix test signatures

* Make published certificate collections on User default to empty lists

* Bug fixes for various practice mode session end things.

* Test fixes

* Bug fixes to practice mode.

* Fix test types

* Update dockerfile for chromium install.

* Update Dockerfile - move chromium install to production multistage.

* Accommodate docker execution of chromium with --no-sandbox

* Disable use of dev shared memory for chromium image generation.

* Request full challenge doc from Topomojo during spec sync.

* Fix for challenge doc text in practice mode

* Try wkhtmltopdf as alternate image generation tool.

* Use correct version of wkhtmltopdf binary

* Remove stray pdf

* Decrease quality of images rendered by wkhtmltoimage

* Set wkhtmltoimage quality to 30

* Rename player-facing 'Practice Mode' to 'Practice Area'

* Fix practice area report routes

* Fix count issue on the player prac/competitive report

* Fix a count issue on the 'by challenge' grouping of the practice area report.

* allow authenticated users to retrieve practice mode settings

* Fix grouping issue with per-mode practice area report

* Code cleanup

* Fix typo in Enrollment report desc

* Correct calculation of users per sponsor in Enrollment report.

* Change roles who can access reporting.

* Improve summary info on report cards to better reflect the corresponding reports.

* - corrected an issue that caused practice challenges to appear as though they were created a million years ago in challenge admin.
- The search box on Challenge Admin now automatically trims whitespace.
(Resolves #247)

* Resolved an issue which caused the enrollment report to fail to report challenges assigned to games which are in practice mode (even if the challenge was played competitively.

* Fix failing unit test and add a new one for prac/comp challenge/game fiasco on Enrollment report.

* Resolved an issue that prevented non-registrars from extending/resetting their practice sessions.
sei-jbooz pushed a commit that referenced this issue Sep 8, 2023
* Initial groundwork for reports rewrite.

* Add reports service and fix service registration tech debt.

* More iteration on reports revamp

* Checkpoint for reports revamp

* More reports backend

* Use challenge specs instead of challenges for reporting.

* More reports plumbing

* More report plumbing

* Add support report to db

* Work on support report

* Polishing support report

* Add reports and initial unit tests

* More work on reports

* Refactor - move SimpleEntity into Gameboard.Api.Features.Common.

* Don't bootstrap JobsService in integration test env

* Address an issue where Gameboard was incorrectly evaluating whether a challenge has a deployed gamespace after destroy. Resolves #182.

* Add registration date range to challenges report

* Fix player report bugs

* Server-side hardening for illegal mime type upload. Removed bare repositories.
Updated recommended extensions.

* Add improved file upload validation. Add editor config to suppress private member warnings.

* Update unit tests

* Remove server-side html escaping of user input (handled client side).

* Resolved an issue that prevented assignees from being display in the support ticket list.

* Remove unnecessary dependency injection from the app hub.

* Fix build error in ticket service

* Fix merge issue from main

* Resolve changes from the merge

* Initial version of enrollment report and refactor

* Add minimal unit tests for enrollment report

* Additional refinements to enrollment report

* Remove gamebrain schema generator (no longer needed)

* Add WhenCreated to player table.

* Added export for enrollment report.

* Remove unnecessary pragma warning for new C# tools, unbreak player service tests.

* More work on enrollment report

* Clarify comments on Enrollment report query

* Fix line chart for enrollment, update validation strategies, add new query extension to deal with nullish dates.

* Page to default values when illegal paging is requested. Add Challenges Attempted to enrollment csv export.

* Refactor of practice backend

* Add new user fields for created on, last login date, and login count. Pruned unused code and store implementations that weren't really doing much. Resolves #196.

* Rename reports folder

* Add tests for query extensions

* Started work on practice report

* Code cleanup

* Fix failing integration tests

* Fix a bug with date processing for the enrollment report

* Work on practice mode report

* Add metadata query

* Improvements to practice report

* Update practice report models

* Add player performance tab to practice mode report

* Wrapping up a draft of practice mode

* Fix integration test issues

* Direct dotnet restore command in Github Action to src

* Update GH actions config for correct solutions file config.

* Delete extra sln file

* Fix stackoverflow in captain resolution

* Improvements to support report and solution tooling.

* Improvements to support report filters

* Code cleanup in engine service

* Automatically sort string filters for reports

* fixed an issue with the sponsor filter on the enrollment report

* Guard against orphaned specIds in the practice mode report

* Add games filter to enrollment service.

* Guard against unexpected nulls in practice mode report

* Guard against unexpected sponsor nulls in practice mode report

* Fix criteria processing for practice mode report

* PlayerMode to challenges

- Add "PlayerMode" to challenges. Resolves #218
- Sort support service by created date by default.

* Query practice mode report based on the challenge-level PlayerMode flag rather than the game-level one.

* Code cleanup in game engine service

* Code cleanup

* Fix PlayerService constructor signature to remove unused injections

* Code cleanup

* Align parameter names

* Add stat summary for enrollment report

* Code cleanup

* Fix build

* Guard against null sponsors in enrollment report. Hide practice games on home screen.

* Present percentile for Practice Mode report as a 0-100 value (up from 0-1).

* Add challenge result to practice mode report

* Optimize sponsor count stat for the enrollment report

* Code cleanup

* Remove unused property of game model

* Improvements to practice mode workflow (allow detection of active practice session

* Change model shape for user active practice challenge.

* Enhance information available for an active practice challenge to support new launch path.

* Improvement to practice mode/playcomponent

* More support for auto-deploy of practice challenges/ new 'play' component.

* More work on autolaunch/play component

* Finish autolaunch. Resolves #227

* Fix a bug in practice report where player count per sponsor was not computed correctly.

* Fix test game engine service interface sig

* Fix failing test

* Corrected resolution of json options for integration tests.

* Code cleanup

* Allow API key authentication to resolve grader keys as well as standard user api keys.

- Moved GetUserFromApiKey to service level
- Added tests to verify resolution of user and grader keys
- Resolved an issue where integration tests were inadvertently depending on our internal test Gamebrain instance

* set default solution path

* Additional test for grader/apikey authentication.

* Revert "Additional test for grader/apikey authentication."

This reverts commit b75727d.

* Additional test for grader api key resolution.

* Added revised grader key authentication and modified _Controller to represent an authenticated grader key separately from an authenticated user.

* Remove incorrect tests

* Update game engine mapper to reflect existing mapping in ChallengeMaps between Vm count and IsActive

* Add practice admin stuff

* Improvements to practice admin

* Set default topo timeout to 300 sec (up from 100).

* Finished up practice certificates

* Fixed broken constructor sig intests

* Fixed hours/minutes display for practice certificates and added supporting unit tests.

* Always archive team challenges on reset

* Removed test (the rule is no longer true)

* Playing with various pdf rendering options?

* Various code cleanup

* Do server-side rendering of certificates in PNG format.

* Update tests

* Finish server side generation of html for both practice and competitive.

* Fix test signatures

* Make published certificate collections on User default to empty lists

* Bug fixes for various practice mode session end things.

* Test fixes

* Bug fixes to practice mode.

* Fix test types

* Update dockerfile for chromium install.

* Update Dockerfile - move chromium install to production multistage.

* Accommodate docker execution of chromium with --no-sandbox

* Disable use of dev shared memory for chromium image generation.

* Request full challenge doc from Topomojo during spec sync.

* Fix for challenge doc text in practice mode

* Try wkhtmltopdf as alternate image generation tool.

* Use correct version of wkhtmltopdf binary

* Remove stray pdf

* Decrease quality of images rendered by wkhtmltoimage

* Set wkhtmltoimage quality to 30

* Rename player-facing 'Practice Mode' to 'Practice Area'

* Fix practice area report routes

* Fix count issue on the player prac/competitive report

* Fix a count issue on the 'by challenge' grouping of the practice area report.

* allow authenticated users to retrieve practice mode settings

* Fix grouping issue with per-mode practice area report

* Code cleanup

* Fix typo in Enrollment report desc

* Correct calculation of users per sponsor in Enrollment report.

* Change roles who can access reporting.

* Improve summary info on report cards to better reflect the corresponding reports.

* - corrected an issue that caused practice challenges to appear as though they were created a million years ago in challenge admin.
- The search box on Challenge Admin now automatically trims whitespace.
(Resolves #247)

* Resolved an issue which caused the enrollment report to fail to report challenges assigned to games which are in practice mode (even if the challenge was played competitively.

* Fix failing unit test and add a new one for prac/comp challenge/game fiasco on Enrollment report.

* Resolved an issue that prevented non-registrars from extending/resetting their practice sessions.

* Code cleanup and add dev env logging.

* FIxed an issue that prevented the support report's CSV export from working as expected.

* Resolved issues that caused errors upon invocation of the support and enrollment reports CSV exports from the client.

* Resolved an issue that caused the list of attempts in the practice report -> by player to be displayed out of chronological order. Resolves #251.

* Removed an unnecessary db call from the Enrollment report.
sei-jbooz pushed a commit that referenced this issue Sep 8, 2023
* Initial groundwork for reports rewrite.

* Add reports service and fix service registration tech debt.

* More iteration on reports revamp

* Checkpoint for reports revamp

* More reports backend

* Use challenge specs instead of challenges for reporting.

* More reports plumbing

* More report plumbing

* Add support report to db

* Work on support report

* Polishing support report

* Add reports and initial unit tests

* More work on reports

* Refactor - move SimpleEntity into Gameboard.Api.Features.Common.

* Don't bootstrap JobsService in integration test env

* Address an issue where Gameboard was incorrectly evaluating whether a challenge has a deployed gamespace after destroy. Resolves #182.

* Add registration date range to challenges report

* Fix player report bugs

* Server-side hardening for illegal mime type upload. Removed bare repositories.
Updated recommended extensions.

* Add improved file upload validation. Add editor config to suppress private member warnings.

* Update unit tests

* Remove server-side html escaping of user input (handled client side).

* Resolved an issue that prevented assignees from being display in the support ticket list.

* Remove unnecessary dependency injection from the app hub.

* Fix build error in ticket service

* Fix merge issue from main

* Resolve changes from the merge

* Initial version of enrollment report and refactor

* Add minimal unit tests for enrollment report

* Additional refinements to enrollment report

* Remove gamebrain schema generator (no longer needed)

* Add WhenCreated to player table.

* Added export for enrollment report.

* Remove unnecessary pragma warning for new C# tools, unbreak player service tests.

* More work on enrollment report

* Clarify comments on Enrollment report query

* Fix line chart for enrollment, update validation strategies, add new query extension to deal with nullish dates.

* Page to default values when illegal paging is requested. Add Challenges Attempted to enrollment csv export.

* Refactor of practice backend

* Add new user fields for created on, last login date, and login count. Pruned unused code and store implementations that weren't really doing much. Resolves #196.

* Rename reports folder

* Add tests for query extensions

* Started work on practice report

* Code cleanup

* Fix failing integration tests

* Fix a bug with date processing for the enrollment report

* Work on practice mode report

* Add metadata query

* Improvements to practice report

* Update practice report models

* Add player performance tab to practice mode report

* Wrapping up a draft of practice mode

* Fix integration test issues

* Direct dotnet restore command in Github Action to src

* Update GH actions config for correct solutions file config.

* Delete extra sln file

* Fix stackoverflow in captain resolution

* Improvements to support report and solution tooling.

* Improvements to support report filters

* Code cleanup in engine service

* Automatically sort string filters for reports

* fixed an issue with the sponsor filter on the enrollment report

* Guard against orphaned specIds in the practice mode report

* Add games filter to enrollment service.

* Guard against unexpected nulls in practice mode report

* Guard against unexpected sponsor nulls in practice mode report

* Fix criteria processing for practice mode report

* PlayerMode to challenges

- Add "PlayerMode" to challenges. Resolves #218
- Sort support service by created date by default.

* Query practice mode report based on the challenge-level PlayerMode flag rather than the game-level one.

* Code cleanup in game engine service

* Code cleanup

* Fix PlayerService constructor signature to remove unused injections

* Code cleanup

* Align parameter names

* Add stat summary for enrollment report

* Code cleanup

* Fix build

* Guard against null sponsors in enrollment report. Hide practice games on home screen.

* Present percentile for Practice Mode report as a 0-100 value (up from 0-1).

* Add challenge result to practice mode report

* Optimize sponsor count stat for the enrollment report

* Code cleanup

* Remove unused property of game model

* Improvements to practice mode workflow (allow detection of active practice session

* Change model shape for user active practice challenge.

* Enhance information available for an active practice challenge to support new launch path.

* Improvement to practice mode/playcomponent

* More support for auto-deploy of practice challenges/ new 'play' component.

* More work on autolaunch/play component

* Finish autolaunch. Resolves #227

* Fix a bug in practice report where player count per sponsor was not computed correctly.

* Fix test game engine service interface sig

* Fix failing test

* Corrected resolution of json options for integration tests.

* Code cleanup

* Allow API key authentication to resolve grader keys as well as standard user api keys.

- Moved GetUserFromApiKey to service level
- Added tests to verify resolution of user and grader keys
- Resolved an issue where integration tests were inadvertently depending on our internal test Gamebrain instance

* set default solution path

* Additional test for grader/apikey authentication.

* Revert "Additional test for grader/apikey authentication."

This reverts commit b75727d.

* Additional test for grader api key resolution.

* Added revised grader key authentication and modified _Controller to represent an authenticated grader key separately from an authenticated user.

* Remove incorrect tests

* Update game engine mapper to reflect existing mapping in ChallengeMaps between Vm count and IsActive

* Add practice admin stuff

* Improvements to practice admin

* Set default topo timeout to 300 sec (up from 100).

* Finished up practice certificates

* Fixed broken constructor sig intests

* Fixed hours/minutes display for practice certificates and added supporting unit tests.

* Always archive team challenges on reset

* Removed test (the rule is no longer true)

* Playing with various pdf rendering options?

* Various code cleanup

* Do server-side rendering of certificates in PNG format.

* Update tests

* Finish server side generation of html for both practice and competitive.

* Fix test signatures

* Make published certificate collections on User default to empty lists

* Bug fixes for various practice mode session end things.

* Test fixes

* Bug fixes to practice mode.

* Fix test types

* Update dockerfile for chromium install.

* Update Dockerfile - move chromium install to production multistage.

* Accommodate docker execution of chromium with --no-sandbox

* Disable use of dev shared memory for chromium image generation.

* Request full challenge doc from Topomojo during spec sync.

* Fix for challenge doc text in practice mode

* Try wkhtmltopdf as alternate image generation tool.

* Use correct version of wkhtmltopdf binary

* Remove stray pdf

* Decrease quality of images rendered by wkhtmltoimage

* Set wkhtmltoimage quality to 30

* Rename player-facing 'Practice Mode' to 'Practice Area'

* Fix practice area report routes

* Fix count issue on the player prac/competitive report

* Fix a count issue on the 'by challenge' grouping of the practice area report.

* allow authenticated users to retrieve practice mode settings

* Fix grouping issue with per-mode practice area report

* Code cleanup

* Fix typo in Enrollment report desc

* Correct calculation of users per sponsor in Enrollment report.

* Change roles who can access reporting.

* Improve summary info on report cards to better reflect the corresponding reports.

* - corrected an issue that caused practice challenges to appear as though they were created a million years ago in challenge admin.
- The search box on Challenge Admin now automatically trims whitespace.
(Resolves #247)

* Resolved an issue which caused the enrollment report to fail to report challenges assigned to games which are in practice mode (even if the challenge was played competitively.

* Fix failing unit test and add a new one for prac/comp challenge/game fiasco on Enrollment report.

* Resolved an issue that prevented non-registrars from extending/resetting their practice sessions.

* Code cleanup and add dev env logging.

* FIxed an issue that prevented the support report's CSV export from working as expected.

* Resolved issues that caused errors upon invocation of the support and enrollment reports CSV exports from the client.

* Resolved an issue that caused the list of attempts in the practice report -> by player to be displayed out of chronological order. Resolves #251.

* Removed an unnecessary db call from the Enrollment report.
sei-jbooz pushed a commit that referenced this issue Oct 5, 2023
v3.11.0-beta0

* More iteration on reports revamp

* Checkpoint for reports revamp

* More reports backend

* Use challenge specs instead of challenges for reporting.

* More reports plumbing

* More report plumbing

* Add support report to db

* Work on support report

* Polishing support report

* Add reports and initial unit tests

* More work on reports

* Refactor - move SimpleEntity into Gameboard.Api.Features.Common.

* Don't bootstrap JobsService in integration test env

* Address an issue where Gameboard was incorrectly evaluating whether a challenge has a deployed gamespace after destroy. Resolves #182.

* Add registration date range to challenges report

* Fix player report bugs

* Server-side hardening for illegal mime type upload. Removed bare repositories.
Updated recommended extensions.

* Add improved file upload validation. Add editor config to suppress private member warnings.

* Update unit tests

* Remove server-side html escaping of user input (handled client side).

* Resolved an issue that prevented assignees from being display in the support ticket list.

* Remove unnecessary dependency injection from the app hub.

* Fix build error in ticket service

* Fix merge issue from main

* Resolve changes from the merge

* Initial version of enrollment report and refactor

* Add minimal unit tests for enrollment report

* Additional refinements to enrollment report

* Remove gamebrain schema generator (no longer needed)

* Add WhenCreated to player table.

* Added export for enrollment report.

* Remove unnecessary pragma warning for new C# tools, unbreak player service tests.

* More work on enrollment report

* Clarify comments on Enrollment report query

* Fix line chart for enrollment, update validation strategies, add new query extension to deal with nullish dates.

* Page to default values when illegal paging is requested. Add Challenges Attempted to enrollment csv export.

* Refactor of practice backend

* Add new user fields for created on, last login date, and login count. Pruned unused code and store implementations that weren't really doing much. Resolves #196.

* Rename reports folder

* Add tests for query extensions

* Started work on practice report

* Code cleanup

* Fix failing integration tests

* Fix a bug with date processing for the enrollment report

* Work on practice mode report

* Add metadata query

* Improvements to practice report

* Update practice report models

* Add player performance tab to practice mode report

* Wrapping up a draft of practice mode

* Fix integration test issues

* Direct dotnet restore command in Github Action to src

* Update GH actions config for correct solutions file config.

* Delete extra sln file

* Fix stackoverflow in captain resolution

* Improvements to support report and solution tooling.

* Improvements to support report filters

* Code cleanup in engine service

* Automatically sort string filters for reports

* fixed an issue with the sponsor filter on the enrollment report

* Guard against orphaned specIds in the practice mode report

* Add games filter to enrollment service.

* Guard against unexpected nulls in practice mode report

* Guard against unexpected sponsor nulls in practice mode report

* Fix criteria processing for practice mode report

* PlayerMode to challenges

- Add "PlayerMode" to challenges. Resolves #218
- Sort support service by created date by default.

* Query practice mode report based on the challenge-level PlayerMode flag rather than the game-level one.

* Code cleanup in game engine service

* Code cleanup

* Fix PlayerService constructor signature to remove unused injections

* Code cleanup

* Align parameter names

* Add stat summary for enrollment report

* Code cleanup

* Fix build

* Guard against null sponsors in enrollment report. Hide practice games on home screen.

* Present percentile for Practice Mode report as a 0-100 value (up from 0-1).

* Add challenge result to practice mode report

* Optimize sponsor count stat for the enrollment report

* Code cleanup

* Remove unused property of game model

* Improvements to practice mode workflow (allow detection of active practice session

* Change model shape for user active practice challenge.

* Enhance information available for an active practice challenge to support new launch path.

* Improvement to practice mode/playcomponent

* More support for auto-deploy of practice challenges/ new 'play' component.

* More work on autolaunch/play component

* Finish autolaunch. Resolves #227

* Fix a bug in practice report where player count per sponsor was not computed correctly.

* Fix test game engine service interface sig

* Fix failing test

* Corrected resolution of json options for integration tests.

* Code cleanup

* Allow API key authentication to resolve grader keys as well as standard user api keys.

- Moved GetUserFromApiKey to service level
- Added tests to verify resolution of user and grader keys
- Resolved an issue where integration tests were inadvertently depending on our internal test Gamebrain instance

* set default solution path

* Additional test for grader/apikey authentication.

* Revert "Additional test for grader/apikey authentication."

This reverts commit b75727d.

* Additional test for grader api key resolution.

* Added revised grader key authentication and modified _Controller to represent an authenticated grader key separately from an authenticated user.

* Remove incorrect tests

* Update game engine mapper to reflect existing mapping in ChallengeMaps between Vm count and IsActive

* Add practice admin stuff

* Improvements to practice admin

* Set default topo timeout to 300 sec (up from 100).

* Finished up practice certificates

* Fixed broken constructor sig intests

* Fixed hours/minutes display for practice certificates and added supporting unit tests.

* Always archive team challenges on reset

* Removed test (the rule is no longer true)

* Playing with various pdf rendering options?

* Various code cleanup

* Do server-side rendering of certificates in PNG format.

* Update tests

* Finish server side generation of html for both practice and competitive.

* Fix test signatures

* Make published certificate collections on User default to empty lists

* Bug fixes for various practice mode session end things.

* Test fixes

* Bug fixes to practice mode.

* Addresses #236 along with a sister commit in GBUI.

* Fix test types

* Update dockerfile for chromium install.

* Update Dockerfile - move chromium install to production multistage.

* Accommodate docker execution of chromium with --no-sandbox

* Disable use of dev shared memory for chromium image generation.

* Request full challenge doc from Topomojo during spec sync.

* Fix for challenge doc text in practice mode

* Try wkhtmltopdf as alternate image generation tool.

* Use correct version of wkhtmltopdf binary

* DB changes for require sponsor

* Remove stray pdf

* Decrease quality of images rendered by wkhtmltoimage

* Set wkhtmltoimage quality to 30

* Rename player-facing 'Practice Mode' to 'Practice Area'

* Fix practice area report routes

* Fix count issue on the player prac/competitive report

* Fix a count issue on the 'by challenge' grouping of the practice area report.

* allow authenticated users to retrieve practice mode settings

* Fix grouping issue with per-mode practice area report

* Code cleanup

* Fix typo in Enrollment report desc

* Correct calculation of users per sponsor in Enrollment report.

* Change roles who can access reporting.

* Improve summary info on report cards to better reflect the corresponding reports.

* - corrected an issue that caused practice challenges to appear as though they were created a million years ago in challenge admin.
- The search box on Challenge Admin now automatically trims whitespace.
(Resolves #247)

* Resolved an issue which caused the enrollment report to fail to report challenges assigned to games which are in practice mode (even if the challenge was played competitively.

* Fix failing unit test and add a new one for prac/comp challenge/game fiasco on Enrollment report.

* Resolved an issue that prevented non-registrars from extending/resetting their practice sessions.

* Code cleanup and add dev env logging.

* FIxed an issue that prevented the support report's CSV export from working as expected.

* Resolved issues that caused errors upon invocation of the support and enrollment reports CSV exports from the client.

* Resolved an issue that caused the list of attempts in the practice report -> by player to be displayed out of chronological order. Resolves #251.

* Removed an unnecessary db call from the Enrollment report.

* More sponsor fixup

* Require sponsor

* More work on require sponsor

* Prohibit sponsorless players from enrolling in games.

* Prevent players from registering practice challenges (in addition to games) with no sponsor. Code cleanup also

* MOre work on require sponsor schema change.

* Remove designer from role list for admin enroll.

* More sponsor fixup

* More sponsor schema

* Finalized user/player sponsor schema changes before fixing tests

* Remove default value for HasDefaultSponsor - handling it in app logic since CLR types are weird

* Remove use of env in GameboardDbContext (we handle this in app start up now via DataStartupExtensions)

* Add migration for sponsor schema change. Add log for enabling sensitive logging in dev envs.

* Correct migration to populate HasDefaultSponsor based on pre-migration Sponsor value.

* Optimize PG migration and add SQLserver custom migration.

* Cleanup

* Allow the GEtUserActiveChallenges op to return challenges with no end date. Create distinct exceptions for practice mode gamespace count limit vs. game-level ones.

* Tone down EF query logging in non-prod environments.

* Cleaned up resolution of team gamespace limit, refactored, and added an endpoint for team gamespace limit state (Accessible only by players on the team). Will be used in the future to support better messaging around gamespace limit.

* Update test signatures

* Make practice mode gamespace limit eval use common logic with competitive.

* Add logging messages for EF logging configuration (loggingception)

* Add logger to datastartupextensions

* Log GameboardExceptions as 500-level (since they're app failures, not incorrect calls)

* Fix expected exception in player unenroll tests

* Code cleanup

* Remove logging config meta-logging - EF settings were being overridden by global Logging__LogLevel__Microsoft in the chart.

* Improvements to ef logging structure.

* Reverse changes that allow player records with no end date to yield active challenges (practice mode ends sessions by setting player endtime to nullish, so we need to use another criterion.

* Correct use of .First

* Disable the developer exception page by default, even in devenvs (because it alters API error reporting behavior)

* Return game challenge specs in alpha order.

* Code cleanup

* Supporting exception architecture for non-null/foreign key sponsors.

* Update build task to include all projects.

* Clarify default sponsor assignment.

* Improvements to specimen builders for integration tests (supporting sponsor changes)

* Enable sensitive data logging only in dev

* Consolidate data state builder interface. Don't swallow exception on add.

* Namespace cleanup

* Resolve usercontroll test errors

* Updates to tests to use fixture/specimen creation

* Revise tests to accommodate non-null sponsors

* More work on require sponsor - new schema changes.

* More backend for require sponsor - streamlined sponsor API.

* Clean up sponsor controller/command architecture.

* Update content type validation for sponsors

* More required sponsor - remove manual tracking of team sponsors, adjust API shape to serve sponsor data alongside user data.

* Start on parent sponsor

* Refactor the set avatar operation for sponsors into its own thing since it requires a different content type. Insert 'other' sponsor if it doesn't exist on migration.

* Reshape sponsors endpoints to make more sense.

* Fix broken sponsor test

* Correct resolution of captain during player enlistment by invitation code. Resolves #194.

* Resolves #156 and adds unit tests.

* Move unit test of enroll to integration test because of mocking limits (and because we didn't have an int test on enroll anyway.

* Code cleanup

* Ignore HasDeployedGamespace when cleaning up challenges after team reset (because it currently depends on whether the VMs are on)

* Guard against challenges not having players attached by team Id

* Ported fix to job service from gamebrain integration branch. Resolves #235.

* Add solution guide field for challenge specs (for practice mode). Resolves #234.

* Add extra logging for API failures during sync.

* Add suggested searches to practice area. Resolves #233.

* Add challenge search by playerId. Resolves #263.

* Also search challenges by TeamID

* Addresses an issue where asset links in challenge markdown were sometimes resolved incorrectly (leading to broken links). Resolves #213.

* Extend fix for #213 to practice.
sei-jbooz pushed a commit that referenced this issue Oct 6, 2023
* More reports backend

* Use challenge specs instead of challenges for reporting.

* More reports plumbing

* More report plumbing

* Add support report to db

* Work on support report

* Polishing support report

* Add reports and initial unit tests

* More work on reports

* Refactor - move SimpleEntity into Gameboard.Api.Features.Common.

* Don't bootstrap JobsService in integration test env

* Address an issue where Gameboard was incorrectly evaluating whether a challenge has a deployed gamespace after destroy. Resolves #182.

* Add registration date range to challenges report

* Fix player report bugs

* Server-side hardening for illegal mime type upload. Removed bare repositories.
Updated recommended extensions.

* Add improved file upload validation. Add editor config to suppress private member warnings.

* Update unit tests

* Remove server-side html escaping of user input (handled client side).

* Resolved an issue that prevented assignees from being display in the support ticket list.

* Remove unnecessary dependency injection from the app hub.

* Fix build error in ticket service

* Fix merge issue from main

* Resolve changes from the merge

* Initial version of enrollment report and refactor

* Add minimal unit tests for enrollment report

* Additional refinements to enrollment report

* Remove gamebrain schema generator (no longer needed)

* Add WhenCreated to player table.

* Added export for enrollment report.

* Remove unnecessary pragma warning for new C# tools, unbreak player service tests.

* More work on enrollment report

* Clarify comments on Enrollment report query

* Fix line chart for enrollment, update validation strategies, add new query extension to deal with nullish dates.

* Page to default values when illegal paging is requested. Add Challenges Attempted to enrollment csv export.

* Refactor of practice backend

* Add new user fields for created on, last login date, and login count. Pruned unused code and store implementations that weren't really doing much. Resolves #196.

* Rename reports folder

* Add tests for query extensions

* Started work on practice report

* Code cleanup

* Fix failing integration tests

* Fix a bug with date processing for the enrollment report

* Work on practice mode report

* Add metadata query

* Improvements to practice report

* Update practice report models

* Add player performance tab to practice mode report

* Wrapping up a draft of practice mode

* Fix integration test issues

* Direct dotnet restore command in Github Action to src

* Update GH actions config for correct solutions file config.

* Delete extra sln file

* Fix stackoverflow in captain resolution

* Improvements to support report and solution tooling.

* Improvements to support report filters

* Code cleanup in engine service

* Automatically sort string filters for reports

* fixed an issue with the sponsor filter on the enrollment report

* Guard against orphaned specIds in the practice mode report

* Add games filter to enrollment service.

* Guard against unexpected nulls in practice mode report

* Guard against unexpected sponsor nulls in practice mode report

* Fix criteria processing for practice mode report

* PlayerMode to challenges

- Add "PlayerMode" to challenges. Resolves #218
- Sort support service by created date by default.

* Query practice mode report based on the challenge-level PlayerMode flag rather than the game-level one.

* Code cleanup in game engine service

* Code cleanup

* Fix PlayerService constructor signature to remove unused injections

* Code cleanup

* Align parameter names

* Add stat summary for enrollment report

* Code cleanup

* Fix build

* Guard against null sponsors in enrollment report. Hide practice games on home screen.

* Present percentile for Practice Mode report as a 0-100 value (up from 0-1).

* Add challenge result to practice mode report

* Optimize sponsor count stat for the enrollment report

* Code cleanup

* Remove unused property of game model

* Improvements to practice mode workflow (allow detection of active practice session

* Change model shape for user active practice challenge.

* Enhance information available for an active practice challenge to support new launch path.

* Improvement to practice mode/playcomponent

* More support for auto-deploy of practice challenges/ new 'play' component.

* More work on autolaunch/play component

* Finish autolaunch. Resolves #227

* Fix a bug in practice report where player count per sponsor was not computed correctly.

* Fix test game engine service interface sig

* Fix failing test

* Corrected resolution of json options for integration tests.

* Code cleanup

* Allow API key authentication to resolve grader keys as well as standard user api keys.

- Moved GetUserFromApiKey to service level
- Added tests to verify resolution of user and grader keys
- Resolved an issue where integration tests were inadvertently depending on our internal test Gamebrain instance

* set default solution path

* Additional test for grader/apikey authentication.

* Revert "Additional test for grader/apikey authentication."

This reverts commit b75727d.

* Additional test for grader api key resolution.

* Added revised grader key authentication and modified _Controller to represent an authenticated grader key separately from an authenticated user.

* Remove incorrect tests

* Update game engine mapper to reflect existing mapping in ChallengeMaps between Vm count and IsActive

* Add practice admin stuff

* Improvements to practice admin

* Set default topo timeout to 300 sec (up from 100).

* Finished up practice certificates

* Fixed broken constructor sig intests

* Fixed hours/minutes display for practice certificates and added supporting unit tests.

* Always archive team challenges on reset

* Removed test (the rule is no longer true)

* Playing with various pdf rendering options?

* Various code cleanup

* Do server-side rendering of certificates in PNG format.

* Update tests

* Finish server side generation of html for both practice and competitive.

* Fix test signatures

* Make published certificate collections on User default to empty lists

* Bug fixes for various practice mode session end things.

* Test fixes

* Bug fixes to practice mode.

* Addresses #236 along with a sister commit in GBUI.

* Fix test types

* Update dockerfile for chromium install.

* Update Dockerfile - move chromium install to production multistage.

* Accommodate docker execution of chromium with --no-sandbox

* Disable use of dev shared memory for chromium image generation.

* Request full challenge doc from Topomojo during spec sync.

* Fix for challenge doc text in practice mode

* Try wkhtmltopdf as alternate image generation tool.

* Use correct version of wkhtmltopdf binary

* DB changes for require sponsor

* Remove stray pdf

* Decrease quality of images rendered by wkhtmltoimage

* Set wkhtmltoimage quality to 30

* Rename player-facing 'Practice Mode' to 'Practice Area'

* Fix practice area report routes

* Fix count issue on the player prac/competitive report

* Fix a count issue on the 'by challenge' grouping of the practice area report.

* allow authenticated users to retrieve practice mode settings

* Fix grouping issue with per-mode practice area report

* Code cleanup

* Fix typo in Enrollment report desc

* Correct calculation of users per sponsor in Enrollment report.

* Change roles who can access reporting.

* Improve summary info on report cards to better reflect the corresponding reports.

* - corrected an issue that caused practice challenges to appear as though they were created a million years ago in challenge admin.
- The search box on Challenge Admin now automatically trims whitespace.
(Resolves #247)

* Resolved an issue which caused the enrollment report to fail to report challenges assigned to games which are in practice mode (even if the challenge was played competitively.

* Fix failing unit test and add a new one for prac/comp challenge/game fiasco on Enrollment report.

* Resolved an issue that prevented non-registrars from extending/resetting their practice sessions.

* Code cleanup and add dev env logging.

* FIxed an issue that prevented the support report's CSV export from working as expected.

* Resolved issues that caused errors upon invocation of the support and enrollment reports CSV exports from the client.

* Resolved an issue that caused the list of attempts in the practice report -> by player to be displayed out of chronological order. Resolves #251.

* Removed an unnecessary db call from the Enrollment report.

* More sponsor fixup

* Require sponsor

* More work on require sponsor

* Prohibit sponsorless players from enrolling in games.

* Prevent players from registering practice challenges (in addition to games) with no sponsor. Code cleanup also

* MOre work on require sponsor schema change.

* Remove designer from role list for admin enroll.

* More sponsor fixup

* More sponsor schema

* Finalized user/player sponsor schema changes before fixing tests

* Remove default value for HasDefaultSponsor - handling it in app logic since CLR types are weird

* Remove use of env in GameboardDbContext (we handle this in app start up now via DataStartupExtensions)

* Add migration for sponsor schema change. Add log for enabling sensitive logging in dev envs.

* Correct migration to populate HasDefaultSponsor based on pre-migration Sponsor value.

* Optimize PG migration and add SQLserver custom migration.

* Cleanup

* Allow the GEtUserActiveChallenges op to return challenges with no end date. Create distinct exceptions for practice mode gamespace count limit vs. game-level ones.

* Tone down EF query logging in non-prod environments.

* Cleaned up resolution of team gamespace limit, refactored, and added an endpoint for team gamespace limit state (Accessible only by players on the team). Will be used in the future to support better messaging around gamespace limit.

* Update test signatures

* Make practice mode gamespace limit eval use common logic with competitive.

* Add logging messages for EF logging configuration (loggingception)

* Add logger to datastartupextensions

* Log GameboardExceptions as 500-level (since they're app failures, not incorrect calls)

* Fix expected exception in player unenroll tests

* Code cleanup

* Remove logging config meta-logging - EF settings were being overridden by global Logging__LogLevel__Microsoft in the chart.

* Improvements to ef logging structure.

* Reverse changes that allow player records with no end date to yield active challenges (practice mode ends sessions by setting player endtime to nullish, so we need to use another criterion.

* Correct use of .First

* Disable the developer exception page by default, even in devenvs (because it alters API error reporting behavior)

* Return game challenge specs in alpha order.

* Code cleanup

* Supporting exception architecture for non-null/foreign key sponsors.

* Update build task to include all projects.

* Clarify default sponsor assignment.

* Improvements to specimen builders for integration tests (supporting sponsor changes)

* Enable sensitive data logging only in dev

* Consolidate data state builder interface. Don't swallow exception on add.

* Namespace cleanup

* Resolve usercontroll test errors

* Updates to tests to use fixture/specimen creation

* Revise tests to accommodate non-null sponsors

* More work on require sponsor - new schema changes.

* More backend for require sponsor - streamlined sponsor API.

* Clean up sponsor controller/command architecture.

* Update content type validation for sponsors

* More required sponsor - remove manual tracking of team sponsors, adjust API shape to serve sponsor data alongside user data.

* Start on parent sponsor

* Refactor the set avatar operation for sponsors into its own thing since it requires a different content type. Insert 'other' sponsor if it doesn't exist on migration.

* Reshape sponsors endpoints to make more sense.

* Fix broken sponsor test

* Correct resolution of captain during player enlistment by invitation code. Resolves #194.

* Resolves #156 and adds unit tests.

* Move unit test of enroll to integration test because of mocking limits (and because we didn't have an int test on enroll anyway.

* Code cleanup

* Ignore HasDeployedGamespace when cleaning up challenges after team reset (because it currently depends on whether the VMs are on)

* Guard against challenges not having players attached by team Id

* Ported fix to job service from gamebrain integration branch. Resolves #235.

* Add solution guide field for challenge specs (for practice mode). Resolves #234.

* Add extra logging for API failures during sync.

* Add suggested searches to practice area. Resolves #233.

* Add challenge search by playerId. Resolves #263.

* Also search challenges by TeamID

* Addresses an issue where asset links in challenge markdown were sometimes resolved incorrectly (leading to broken links). Resolves #213.

* Extend fix for #213 to practice.

* Resolve an issue that was causing overcorrection of absolute urls in challenge docs.

* Update gitignore

* Add toggle to allow display of solution guides in competitive mode. Always show the solution guide input in admin.
sei-jbooz pushed a commit that referenced this issue Oct 6, 2023
* Use challenge specs instead of challenges for reporting.

* More reports plumbing

* More report plumbing

* Add support report to db

* Work on support report

* Polishing support report

* Add reports and initial unit tests

* More work on reports

* Refactor - move SimpleEntity into Gameboard.Api.Features.Common.

* Don't bootstrap JobsService in integration test env

* Address an issue where Gameboard was incorrectly evaluating whether a challenge has a deployed gamespace after destroy. Resolves #182.

* Add registration date range to challenges report

* Fix player report bugs

* Server-side hardening for illegal mime type upload. Removed bare repositories.
Updated recommended extensions.

* Add improved file upload validation. Add editor config to suppress private member warnings.

* Update unit tests

* Remove server-side html escaping of user input (handled client side).

* Resolved an issue that prevented assignees from being display in the support ticket list.

* Remove unnecessary dependency injection from the app hub.

* Fix build error in ticket service

* Fix merge issue from main

* Resolve changes from the merge

* Initial version of enrollment report and refactor

* Add minimal unit tests for enrollment report

* Additional refinements to enrollment report

* Remove gamebrain schema generator (no longer needed)

* Add WhenCreated to player table.

* Added export for enrollment report.

* Remove unnecessary pragma warning for new C# tools, unbreak player service tests.

* More work on enrollment report

* Clarify comments on Enrollment report query

* Fix line chart for enrollment, update validation strategies, add new query extension to deal with nullish dates.

* Page to default values when illegal paging is requested. Add Challenges Attempted to enrollment csv export.

* Refactor of practice backend

* Add new user fields for created on, last login date, and login count. Pruned unused code and store implementations that weren't really doing much. Resolves #196.

* Rename reports folder

* Add tests for query extensions

* Started work on practice report

* Code cleanup

* Fix failing integration tests

* Fix a bug with date processing for the enrollment report

* Work on practice mode report

* Add metadata query

* Improvements to practice report

* Update practice report models

* Add player performance tab to practice mode report

* Wrapping up a draft of practice mode

* Fix integration test issues

* Direct dotnet restore command in Github Action to src

* Update GH actions config for correct solutions file config.

* Delete extra sln file

* Fix stackoverflow in captain resolution

* Improvements to support report and solution tooling.

* Improvements to support report filters

* Code cleanup in engine service

* Automatically sort string filters for reports

* fixed an issue with the sponsor filter on the enrollment report

* Guard against orphaned specIds in the practice mode report

* Add games filter to enrollment service.

* Guard against unexpected nulls in practice mode report

* Guard against unexpected sponsor nulls in practice mode report

* Fix criteria processing for practice mode report

* PlayerMode to challenges

- Add "PlayerMode" to challenges. Resolves #218
- Sort support service by created date by default.

* Query practice mode report based on the challenge-level PlayerMode flag rather than the game-level one.

* Code cleanup in game engine service

* Code cleanup

* Fix PlayerService constructor signature to remove unused injections

* Code cleanup

* Align parameter names

* Add stat summary for enrollment report

* Code cleanup

* Fix build

* Guard against null sponsors in enrollment report. Hide practice games on home screen.

* Present percentile for Practice Mode report as a 0-100 value (up from 0-1).

* Add challenge result to practice mode report

* Optimize sponsor count stat for the enrollment report

* Code cleanup

* Remove unused property of game model

* Improvements to practice mode workflow (allow detection of active practice session

* Change model shape for user active practice challenge.

* Enhance information available for an active practice challenge to support new launch path.

* Improvement to practice mode/playcomponent

* More support for auto-deploy of practice challenges/ new 'play' component.

* More work on autolaunch/play component

* Finish autolaunch. Resolves #227

* Fix a bug in practice report where player count per sponsor was not computed correctly.

* Fix test game engine service interface sig

* Fix failing test

* Corrected resolution of json options for integration tests.

* Code cleanup

* Allow API key authentication to resolve grader keys as well as standard user api keys.

- Moved GetUserFromApiKey to service level
- Added tests to verify resolution of user and grader keys
- Resolved an issue where integration tests were inadvertently depending on our internal test Gamebrain instance

* set default solution path

* Additional test for grader/apikey authentication.

* Revert "Additional test for grader/apikey authentication."

This reverts commit b75727d.

* Additional test for grader api key resolution.

* Added revised grader key authentication and modified _Controller to represent an authenticated grader key separately from an authenticated user.

* Remove incorrect tests

* Update game engine mapper to reflect existing mapping in ChallengeMaps between Vm count and IsActive

* Add practice admin stuff

* Improvements to practice admin

* Set default topo timeout to 300 sec (up from 100).

* Finished up practice certificates

* Fixed broken constructor sig intests

* Fixed hours/minutes display for practice certificates and added supporting unit tests.

* Always archive team challenges on reset

* Removed test (the rule is no longer true)

* Playing with various pdf rendering options?

* Various code cleanup

* Do server-side rendering of certificates in PNG format.

* Update tests

* Finish server side generation of html for both practice and competitive.

* Fix test signatures

* Make published certificate collections on User default to empty lists

* Bug fixes for various practice mode session end things.

* Test fixes

* Bug fixes to practice mode.

* Addresses #236 along with a sister commit in GBUI.

* Fix test types

* Update dockerfile for chromium install.

* Update Dockerfile - move chromium install to production multistage.

* Accommodate docker execution of chromium with --no-sandbox

* Disable use of dev shared memory for chromium image generation.

* Request full challenge doc from Topomojo during spec sync.

* Fix for challenge doc text in practice mode

* Try wkhtmltopdf as alternate image generation tool.

* Use correct version of wkhtmltopdf binary

* DB changes for require sponsor

* Remove stray pdf

* Decrease quality of images rendered by wkhtmltoimage

* Set wkhtmltoimage quality to 30

* Rename player-facing 'Practice Mode' to 'Practice Area'

* Fix practice area report routes

* Fix count issue on the player prac/competitive report

* Fix a count issue on the 'by challenge' grouping of the practice area report.

* allow authenticated users to retrieve practice mode settings

* Fix grouping issue with per-mode practice area report

* Code cleanup

* Fix typo in Enrollment report desc

* Correct calculation of users per sponsor in Enrollment report.

* Change roles who can access reporting.

* Improve summary info on report cards to better reflect the corresponding reports.

* - corrected an issue that caused practice challenges to appear as though they were created a million years ago in challenge admin.
- The search box on Challenge Admin now automatically trims whitespace.
(Resolves #247)

* Resolved an issue which caused the enrollment report to fail to report challenges assigned to games which are in practice mode (even if the challenge was played competitively.

* Fix failing unit test and add a new one for prac/comp challenge/game fiasco on Enrollment report.

* Resolved an issue that prevented non-registrars from extending/resetting their practice sessions.

* Code cleanup and add dev env logging.

* FIxed an issue that prevented the support report's CSV export from working as expected.

* Resolved issues that caused errors upon invocation of the support and enrollment reports CSV exports from the client.

* Resolved an issue that caused the list of attempts in the practice report -> by player to be displayed out of chronological order. Resolves #251.

* Removed an unnecessary db call from the Enrollment report.

* More sponsor fixup

* Require sponsor

* More work on require sponsor

* Prohibit sponsorless players from enrolling in games.

* Prevent players from registering practice challenges (in addition to games) with no sponsor. Code cleanup also

* MOre work on require sponsor schema change.

* Remove designer from role list for admin enroll.

* More sponsor fixup

* More sponsor schema

* Finalized user/player sponsor schema changes before fixing tests

* Remove default value for HasDefaultSponsor - handling it in app logic since CLR types are weird

* Remove use of env in GameboardDbContext (we handle this in app start up now via DataStartupExtensions)

* Add migration for sponsor schema change. Add log for enabling sensitive logging in dev envs.

* Correct migration to populate HasDefaultSponsor based on pre-migration Sponsor value.

* Optimize PG migration and add SQLserver custom migration.

* Cleanup

* Allow the GEtUserActiveChallenges op to return challenges with no end date. Create distinct exceptions for practice mode gamespace count limit vs. game-level ones.

* Tone down EF query logging in non-prod environments.

* Cleaned up resolution of team gamespace limit, refactored, and added an endpoint for team gamespace limit state (Accessible only by players on the team). Will be used in the future to support better messaging around gamespace limit.

* Update test signatures

* Make practice mode gamespace limit eval use common logic with competitive.

* Add logging messages for EF logging configuration (loggingception)

* Add logger to datastartupextensions

* Log GameboardExceptions as 500-level (since they're app failures, not incorrect calls)

* Fix expected exception in player unenroll tests

* Code cleanup

* Remove logging config meta-logging - EF settings were being overridden by global Logging__LogLevel__Microsoft in the chart.

* Improvements to ef logging structure.

* Reverse changes that allow player records with no end date to yield active challenges (practice mode ends sessions by setting player endtime to nullish, so we need to use another criterion.

* Correct use of .First

* Disable the developer exception page by default, even in devenvs (because it alters API error reporting behavior)

* Return game challenge specs in alpha order.

* Code cleanup

* Supporting exception architecture for non-null/foreign key sponsors.

* Update build task to include all projects.

* Clarify default sponsor assignment.

* Improvements to specimen builders for integration tests (supporting sponsor changes)

* Enable sensitive data logging only in dev

* Consolidate data state builder interface. Don't swallow exception on add.

* Namespace cleanup

* Resolve usercontroll test errors

* Updates to tests to use fixture/specimen creation

* Revise tests to accommodate non-null sponsors

* More work on require sponsor - new schema changes.

* More backend for require sponsor - streamlined sponsor API.

* Clean up sponsor controller/command architecture.

* Update content type validation for sponsors

* More required sponsor - remove manual tracking of team sponsors, adjust API shape to serve sponsor data alongside user data.

* Start on parent sponsor

* Refactor the set avatar operation for sponsors into its own thing since it requires a different content type. Insert 'other' sponsor if it doesn't exist on migration.

* Reshape sponsors endpoints to make more sense.

* Fix broken sponsor test

* Correct resolution of captain during player enlistment by invitation code. Resolves #194.

* Resolves #156 and adds unit tests.

* Move unit test of enroll to integration test because of mocking limits (and because we didn't have an int test on enroll anyway.

* Code cleanup

* Ignore HasDeployedGamespace when cleaning up challenges after team reset (because it currently depends on whether the VMs are on)

* Guard against challenges not having players attached by team Id

* Ported fix to job service from gamebrain integration branch. Resolves #235.

* Add solution guide field for challenge specs (for practice mode). Resolves #234.

* Add extra logging for API failures during sync.

* Add suggested searches to practice area. Resolves #233.

* Add challenge search by playerId. Resolves #263.

* Also search challenges by TeamID

* Addresses an issue where asset links in challenge markdown were sometimes resolved incorrectly (leading to broken links). Resolves #213.

* Extend fix for #213 to practice.

* Resolve an issue that was causing overcorrection of absolute urls in challenge docs.

* Update gitignore

* Add toggle to allow display of solution guides in competitive mode. Always show the solution guide input in admin.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant