using GameList.Domain;

namespace GameList.Contracts;

public record SuggestionRequest(string Name, string? Genre, string? Description, string? ScreenshotUrl, string? YoutubeUrl, string? GameUrl, int? MinPlayers, int? MaxPlayers);

public record SuggestionDto(int Id, string Name, string? Genre, string? Description, string? ScreenshotUrl, string? YoutubeUrl, string? GameUrl, int? MinPlayers, int? MaxPlayers, int? ParentSuggestionId = null, IReadOnlyList<int>? LinkedIds = null, IReadOnlyList<string>? LinkedTitles = null);

public record VoteRequest(int SuggestionId, int Score);

public record ResultsOpenRequest(bool ResultsOpen);

public record VoteFinalizeRequest(bool Final);

public record VoteStatusDto(Guid PlayerId, string Name, string Username, Phase Phase, bool Finalized, bool HasJoker, int SuggestionCount, IReadOnlyList<string> SuggestionTitles);

public record LinkSuggestionsRequest(int SourceSuggestionId, int TargetSuggestionId);

public record UnlinkSuggestionsRequest(int SuggestionId);

public record GrantJokerRequest(Guid PlayerId);
