* Initial work for score migration
* Finish score migration
* Implement suggested changes from code review
* Make Score Timestamp default the current time
* Chunk insertions to reduce packet size and give all scores the same Timestamp
* Fix serialization of GameScore
* Break score ties by time then scoreId
* Make lighthouse score migration not dependent on current score implementation
* Add the ability for moderators to forcibly lock levels
* Prevent forcibly locking an already locked level
I had to rollback and re-commit this because I was getting some weird error within Rider.
* Correct moderation notice header styling & remove errant text
* Allow moderators to view story levels on website
Show comments to moderators on in-game story levels that show the levels id
* Only show LH ID comment on the first page
* Improve game server announce by using StringBuilder
* Implement web announcements (condensed commit)
* Implement discord webhook support
* Display a separate message if there are no announcements
* Fix announcement string unit tests
* Fix header admin button unit test
* Clarify announcement id variable name
* Increase webhook truncation limit to 250 chars
* Convert announce text to string when returning 200
* Fix announcement unit tests ... again
* Make announcement text input a textarea rather than a simple input
* Fix styling discrepancy
* Clarify submission button
* Improve announcement webhook & set default textarea row amount
* Remove most non DI usages of DbContext
* Optimize website queries and refactor startup to use top level statements
* Remove unused functions in UserEntity and SlotEntity
* Optimize LBP1 LevelTags
* Move censor/msg logging to MessageController & separate LogAreas/config
* Correct LBP character limit to 95
* Log filtered comments as well
* Remove two unnecessary variables from CensorHelper
* Add censor logging to SlotPage/UserPage controllers and improve logging slightly
* Remove accidental dollar sign in log
* Grammatical nitpick in CommentController.cs
* Contextual nitpick in MessageController.cs
* Add escaped quotes in CommentController log to match the rest
* Increase limit to account for descriptions, magic mouth, etc.
* Consolidate LogChatMessages logging into Filter log area to prevent confusion
* Apply code review suggestions
* Simplify filters and make cross control slots not show by default
Also sort author levels by oldest levels first rather than newest levels first.
* Fix unit test expecting slots to sorted by timestamp descending
* Remove errant whitespace
* Initial implementation of new slot sorting and filtering system
* Initial implementation of filtering for lbp3 community tab
* Add support for organization on lbp3
* Add playlist and user categories
* Implement unit tests for all filters
Refactor more systems to use PaginationData
* Fix PlayerCountFilter test
* Add more unit tests and integration tests for the filter system
* Fix LBP2 move filter and gameFilterType
* Fix sort by likes in LBP3 category
* Add sort for total plays
* Remove extra whitespace and make styling more consistent
* Order hearted and queued levels by primary key ID
* Fix query without order warnings
* Reorganize tests into unit/integration pattern
* Make DbSets virtual so they can be overridden by tests
* Add MessageControllerTests
* Implement DigestMiddlewareTests
* Refactor SMTPHelper to follow DI pattern which allows for mocking in unit tests.
* Fix MailQueueService service registration and shutdown
* Implement tests for Status and StatisticsController and reorganize tests
* Start working on UserControllerTests
* Start refactoring tests to use In-Memory EF provider
* Refactor integration tests to reset the database every time
Change default unit testing database credentials
* Update credentials to use default root with different passwords
* Throw exception when integration db is not available instead of falling back to in-memory
* Evaluate DbConnected every time
* Remove default DbContext constructor
* Setup DbContexts with options builder
* Convert remaining Moq DbContexts to InMemory ones
* Add more tests and use Assert.IsType for testing status code
* Add collection attribute to LighthouseServerTest
* Remove unused directives and calculate digest in tests
* Fix digest calculation in tests
* Add test database call
* Clear rooms after each test
* Fix CommentControllerTests.cs
* Disable test parallelization for gameserver tests
* Fix failing tests
Fix SlotTests
Make CreateUser actually add user to database
Fix dbConnected Lazy and change expected status codes
Properly Remove fragment from url for digest calculation
Fix digest calculation for regular requests
[skip ci] Remove unused directive
Don't use Database CreateUser function
Get rid of userId argument for generating random user
Rewrite logic for generating random users
Fix integration tests
* Implement changes from self-code review
* Fix registration tests
* Replace MailQueueService usages with IMailService
* implement basic filters and lbp2cc fixes
* lbp3 hide lbp2cc slots
* hide lbp2cc levels from hearted and most played categories in lbp3 and basic filters for lbp3
---------
Co-authored-by: jackcaver <jackcaver@users.noreply.github.com>
Co-authored-by: koko <koko@drones.gay>
* Convert entities to serializable after aggregating rather before
* Cache instances of CustomXmlSerializer and create readonly constants for reused settings
* Change CustomXmlSerializer and serializer cache to work with deserializer
* Add missing lbp1 scoreboard endpoint
* Allow all score types to be fetched
* Make lbp1 scores start at highest
* Fix query to use ScoreType from options
* Implement multi-type scoreboard response
* Add migration to de-sanitize database strings
* Remove SanitizationHelper functions related to XML sanitization
* Remove sanitization usage from website
* Implement suggested changes
* Initial work for serialization refactor
* Experiment with new naming conventions
* Mostly implement user and slot serialization.
Still needs to be fine tuned to match original implementation
Many things are left in a broken state like website features/api endpoints/lbp3 categories
* Fix release building
* Migrate scores, reviews, and more to new serialization system.
Many things are still broken but progress is steadily being made
* Fix Api responses and migrate serialization for most types
* Make serialization better and fix bugs
Fix recursive PrepareSerialization when recursive item is set during root item's PrepareSerialization, items, should be properly indexed in order but it's only tested to 1 level of recursion
* Fix review serialization
* Fix user serialization producing malformed SQL query
* Remove DefaultIfEmpty query
* MariaDB doesn't like double nested queries
* Fix LBP1 tag counter
* Implement lbp3 categories and add better deserialization handling
* Implement expression tree caching to speed up reflection and write new serializer tests
* Remove Game column from UserEntity and rename DatabaseContextModelSnapshot.cs back to DatabaseModelSnapshot.cs
* Make UserEntity username not required
* Fix recursive serialization of lists and add relevant unit tests
* Actually commit the migration
* Fix LocationTests to use new deserialization class
* Fix comments not serializing the right author username
* Replace all occurrences of StatusCode with their respective ASP.NET named result
instead of StatusCode(403) everything is now in the form of Forbid()
* Fix SlotBase.ConvertToEntity and LocationTests
* Fix compilation error
* Give Location a default value in GameUserSlot and GameUser
* Reimplement stubbed website functions
* Convert grief reports to new serialization system
* Update DatabaseModelSnapshot and bump dotnet tool version
* Remove unused directives
* Fix broken type reference
* Fix rated comments on website
* Don't include banned users in website comments
* Optimize score submission
* Fix slot id calculating in in-game comment posting
* Move serialization interfaces to types folder and add more documentation
* Allow uploading of versus scores
* Add a discord webhook for when users join for the first time.
* Fix compilation error related to embed colors
* Make config migration backup use the version of the stored file
* Make DiscordConfiguration not halt startup
* Allow the registration message to be configured
* Clean up registration announcement and add userId variable
* Fix userid resolution and convert newline string to actual character
Also make WebhookHelper not fail if all destinations aren't configured
* Player count shows per game
* Fixed LBP3 categories lagigng & StatisticsHelper
Co-authored-by: koko <sudokoko@users.noreply.github.com>
* Fixed "planetStats" mmPicksCount
* Hopefully the final update to this PR!
(Bug fixes)
* Update ProjectLighthouse/Types/Entities/Level/Slot.cs
Co-authored-by: koko <68549366+sudokoko@users.noreply.github.com>
* Update ProjectLighthouse.Servers.GameServer/Controllers/Slots/SlotsController.cs
I'm trusting you that nothing breaks here lol
Co-authored-by: Josh <josh@slendy.pw>
* Update ProjectLighthouse.Servers.GameServer/Controllers/Slots/SlotsController.cs
bad slendy >:(
Co-authored-by: koko <68549366+sudokoko@users.noreply.github.com>
---------
Co-authored-by: koko <sudokoko@users.noreply.github.com>
Co-authored-by: koko <68549366+sudokoko@users.noreply.github.com>
Co-authored-by: Josh <josh@slendy.pw>
* Attempt to remodel PhotoSubject and Photo relationship
* Fix migration name
* Use exactName for migration lock
* Revert "Use exactName for migration lock"
This reverts commit 76cee6a3ff.
* Set command timeout to 5 minutes for database migrations
* Delete unused PhotoSubjects in migration
* Clean up website queries and finalize subject refactor
* Add migration to remove PhotoSubjectCollection
* Add grace period for container startup and optimize startup
* Make config backup copy original file
* Allow docker entrypoint to fix data permissions
* Replace Location table with packed 64 bit int
* Remove double Include and fix Slot documentation
* Fix compilation errors from merge
* Fix namespaces and add expected values to unit tests