checkpoint
This commit is contained in:
@@ -129,4 +129,38 @@ public class ShogiApplication(
|
||||
|
||||
return userManager.Users.FirstOrDefault(u => u.Id == userId)?.UserName!;
|
||||
}
|
||||
|
||||
public async Task<IActionResult> ReadSessionSnapshots(string sessionId)
|
||||
{
|
||||
var session = this.ReadSession(sessionId);
|
||||
if (session == null)
|
||||
{
|
||||
return new NotFoundResult();
|
||||
}
|
||||
|
||||
var snapshots = await queryRepository.ReadSessionSnapshots(sessionId);
|
||||
|
||||
var boardStates = snapshots.Select(snap => new Contracts.Types.BoardState
|
||||
{
|
||||
Board = snap.Board.ToDictionary(
|
||||
kvp => kvp.Key,
|
||||
kvp => kvp.Value == null
|
||||
? null
|
||||
: new Contracts.Types.Piece
|
||||
{
|
||||
IsPromoted = kvp.Value.IsPromoted,
|
||||
Owner = (Contracts.Types.WhichPlayer)kvp.Value.Owner,
|
||||
WhichPiece = (Contracts.Types.WhichPiece)kvp.Value.WhichPiece,
|
||||
}),
|
||||
Player1Hand = snap.Player1Hand.Cast<Contracts.Types.WhichPiece>().ToArray(),
|
||||
Player2Hand = snap.Player2Hand.Cast<Contracts.Types.WhichPiece>().ToArray(),
|
||||
PlayerInCheck = snap.PlayerInCheck == null ? null : (Contracts.Types.WhichPlayer)snap.PlayerInCheck,
|
||||
Victor = snap.IsGameOver
|
||||
? snap.PlayerInCheck == Repositories.Dto.SessionState.WhichPlayer.Player1 ? Contracts.Types.WhichPlayer.Player2 : Contracts.Types.WhichPlayer.Player1
|
||||
: null,
|
||||
WhoseTurn = (Contracts.Types.WhichPlayer)snap.WhoseTurn,
|
||||
});
|
||||
|
||||
return new OkObjectResult(boardStates.ToArray());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user