Harden suggestion update gating and joker cap
This commit is contained in:
@@ -78,9 +78,10 @@ public static class SuggestEndpoints
|
||||
}
|
||||
|
||||
var existingCount = await db.Suggestions.CountAsync(s => s.PlayerId == player.Id);
|
||||
if (existingCount >= 5)
|
||||
var maxSuggestions = usingJoker ? 6 : 5;
|
||||
if (existingCount >= maxSuggestions)
|
||||
{
|
||||
return Results.BadRequest(new { error = "You have reached the 5 suggestion limit." });
|
||||
return Results.BadRequest(new { error = "You have reached the suggestion limit." });
|
||||
}
|
||||
|
||||
var suggestion = new Suggestion
|
||||
@@ -177,20 +178,47 @@ public static class SuggestEndpoints
|
||||
{
|
||||
if (suggestion.PlayerId != player!.Id)
|
||||
return Results.Unauthorized();
|
||||
}
|
||||
|
||||
var isSuggestPhase = isAdmin ? true : await EndpointHelpers.GetPhase(db, player?.Id ?? Guid.Empty) == Phase.Suggest;
|
||||
if (isSuggestPhase || isAdmin)
|
||||
{
|
||||
suggestion.Name = request.Name.Trim();
|
||||
var phase = await EndpointHelpers.GetPhase(db, player.Id);
|
||||
if (phase == Phase.Results)
|
||||
return EndpointHelpers.PhaseMismatch(Phase.Suggest, phase);
|
||||
|
||||
var inSuggest = phase == Phase.Suggest;
|
||||
var inVote = phase == Phase.Vote;
|
||||
|
||||
if (inSuggest)
|
||||
{
|
||||
suggestion.Name = request.Name.Trim();
|
||||
}
|
||||
else if (inVote)
|
||||
{
|
||||
// Title locked in vote; allow other fields
|
||||
}
|
||||
else
|
||||
{
|
||||
return EndpointHelpers.PhaseMismatch(Phase.Suggest, phase);
|
||||
}
|
||||
|
||||
suggestion.Genre = EndpointHelpers.TrimTo(request.Genre, 50);
|
||||
suggestion.Description = EndpointHelpers.TrimTo(request.Description, 500);
|
||||
suggestion.ScreenshotUrl = EndpointHelpers.TrimTo(request.ScreenshotUrl, 2048);
|
||||
suggestion.YoutubeUrl = EndpointHelpers.TrimTo(request.YoutubeUrl, 2048);
|
||||
suggestion.GameUrl = EndpointHelpers.TrimTo(request.GameUrl, 2048);
|
||||
suggestion.MinPlayers = request.MinPlayers;
|
||||
suggestion.MaxPlayers = request.MaxPlayers;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Admins can edit anytime
|
||||
suggestion.Name = request.Name.Trim();
|
||||
suggestion.Genre = EndpointHelpers.TrimTo(request.Genre, 50);
|
||||
suggestion.Description = EndpointHelpers.TrimTo(request.Description, 500);
|
||||
suggestion.ScreenshotUrl = EndpointHelpers.TrimTo(request.ScreenshotUrl, 2048);
|
||||
suggestion.YoutubeUrl = EndpointHelpers.TrimTo(request.YoutubeUrl, 2048);
|
||||
suggestion.GameUrl = EndpointHelpers.TrimTo(request.GameUrl, 2048);
|
||||
suggestion.MinPlayers = request.MinPlayers;
|
||||
suggestion.MaxPlayers = request.MaxPlayers;
|
||||
}
|
||||
suggestion.Genre = EndpointHelpers.TrimTo(request.Genre, 50);
|
||||
suggestion.Description = EndpointHelpers.TrimTo(request.Description, 500);
|
||||
suggestion.ScreenshotUrl = EndpointHelpers.TrimTo(request.ScreenshotUrl, 2048);
|
||||
suggestion.YoutubeUrl = EndpointHelpers.TrimTo(request.YoutubeUrl, 2048);
|
||||
suggestion.GameUrl = EndpointHelpers.TrimTo(request.GameUrl, 2048);
|
||||
suggestion.MinPlayers = request.MinPlayers;
|
||||
suggestion.MaxPlayers = request.MaxPlayers;
|
||||
|
||||
await db.SaveChangesAsync();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user