Ajoute l Elo et les statistiques de parties

This commit is contained in:
2026-04-16 00:17:52 +02:00
parent db233e7110
commit 407e5e8ed5
13 changed files with 1914 additions and 11 deletions

View File

@@ -0,0 +1,138 @@
namespace ChessCubing.App.Models.Stats;
public sealed class UserStatsResponse
{
public string Subject { get; init; } = string.Empty;
public int CurrentElo { get; init; }
public int RankedGames { get; init; }
public int CasualGames { get; init; }
public int Wins { get; init; }
public int Losses { get; init; }
public int StoppedGames { get; init; }
public int WhiteWins { get; init; }
public int BlackWins { get; init; }
public int WhiteLosses { get; init; }
public int BlackLosses { get; init; }
public int TotalMoves { get; init; }
public int TotalCubeRounds { get; init; }
public long? BestCubeTimeMs { get; init; }
public long? AverageCubeTimeMs { get; init; }
public DateTime? LastMatchUtc { get; init; }
public UserRecentMatchResponse[] RecentMatches { get; init; } = [];
}
public sealed class UserRecentMatchResponse
{
public string MatchId { get; init; } = string.Empty;
public DateTime CompletedUtc { get; init; }
public string Result { get; init; } = string.Empty;
public string Mode { get; init; } = string.Empty;
public string Preset { get; init; } = string.Empty;
public string? MatchLabel { get; init; }
public string PlayerColor { get; init; } = string.Empty;
public string PlayerName { get; init; } = string.Empty;
public string OpponentName { get; init; } = string.Empty;
public string? OpponentSubject { get; init; }
public bool IsRanked { get; init; }
public bool IsWin { get; init; }
public bool IsLoss { get; init; }
public int PlayerMoves { get; init; }
public int OpponentMoves { get; init; }
public int CubeRounds { get; init; }
public long? PlayerBestCubeTimeMs { get; init; }
public long? PlayerAverageCubeTimeMs { get; init; }
public int? EloBefore { get; init; }
public int? EloAfter { get; init; }
public int? EloDelta { get; init; }
}
public sealed class ReportCompletedMatchRequest
{
public string MatchId { get; init; } = string.Empty;
public string? CollaborationSessionId { get; init; }
public string? WhiteSubject { get; init; }
public string WhiteName { get; init; } = string.Empty;
public string? BlackSubject { get; init; }
public string BlackName { get; init; } = string.Empty;
public string Result { get; init; } = string.Empty;
public string Mode { get; init; } = string.Empty;
public string Preset { get; init; } = string.Empty;
public string? MatchLabel { get; init; }
public int BlockNumber { get; init; }
public int WhiteMoves { get; init; }
public int BlackMoves { get; init; }
public ReportCompletedCubeRound[] CubeRounds { get; init; } = [];
}
public sealed class ReportCompletedCubeRound
{
public int BlockNumber { get; init; }
public int? Number { get; init; }
public long? White { get; init; }
public long? Black { get; init; }
}
public sealed class ReportCompletedMatchResponse
{
public bool Recorded { get; init; }
public bool IsDuplicate { get; init; }
public bool IsRanked { get; init; }
public int? WhiteEloAfter { get; init; }
public int? BlackEloAfter { get; init; }
}