Scaffold some AAT stuff
This commit is contained in:
@@ -67,12 +67,14 @@ namespace Gameboard.ShogiUI.Sockets.Repositories
|
||||
* 3) User document of Player2.
|
||||
*/
|
||||
var session = group.FirstOrDefault()?.doc.ToObject<SessionDocument>();
|
||||
var player1Doc = group.Skip(1).FirstOrDefault()?.doc.ToObject<UserDocument>();
|
||||
var player2Doc = group.Skip(2).FirstOrDefault()?.doc.ToObject<UserDocument>();
|
||||
if (session != null && player1Doc != null)
|
||||
var player1 = group.Skip(1).FirstOrDefault()?.doc.ToObject<UserDocument>();
|
||||
var player2Doc = group.Skip(2).FirstOrDefault()?.doc;
|
||||
if (session != null && player1 != null && player2Doc != null)
|
||||
{
|
||||
var player2 = player2Doc == null ? null : new Models.User(player2Doc);
|
||||
sessions.Add(new SessionMetadata(session.Name, session.IsPrivate, player1Doc.Id, player2?.Id));
|
||||
var player2 = IsUserDocument(player2Doc)
|
||||
? new Models.User(player2Doc.ToObject<UserDocument>()!)
|
||||
: null;
|
||||
sessions.Add(new SessionMetadata(session.Name, session.IsPrivate, player1.Id, player2?.Id));
|
||||
}
|
||||
}
|
||||
return new Collection<SessionMetadata>(sessions);
|
||||
@@ -80,6 +82,11 @@ namespace Gameboard.ShogiUI.Sockets.Repositories
|
||||
return new Collection<SessionMetadata>(Array.Empty<SessionMetadata>());
|
||||
}
|
||||
|
||||
private static bool IsUserDocument(JObject player2Doc)
|
||||
{
|
||||
return player2Doc?.SelectToken(nameof(CouchDocument.DocumentType))?.Value<WhichDocumentType>() == WhichDocumentType.User;
|
||||
}
|
||||
|
||||
public async Task<Session?> ReadSession(string name)
|
||||
{
|
||||
static Shogi.Domain.Pieces.Piece? MapPiece(Piece? piece)
|
||||
@@ -112,17 +119,16 @@ namespace Gameboard.ShogiUI.Sockets.Repositories
|
||||
* Everything Else) Snapshots of the boardstate after every player move.
|
||||
*/
|
||||
var session = group[0].doc.ToObject<SessionDocument>();
|
||||
var player1Doc = group[1].doc.ToObject<UserDocument>();
|
||||
var group2DocumentType = group[2].doc.Property(nameof(UserDocument.DocumentType).ToCamelCase())?.Value.Value<string>();
|
||||
var player2Doc = group2DocumentType == WhichDocumentType.User.ToString()
|
||||
? group[2].doc.ToObject<UserDocument>()
|
||||
: null;
|
||||
var player1 = group[1].doc.ToObject<UserDocument>();
|
||||
var player2Doc = group[2].doc;
|
||||
var boardState = group.Last().doc.ToObject<BoardStateDocument>();
|
||||
|
||||
if (session != null && player1Doc != null && boardState != null)
|
||||
if (session != null && player1 != null && boardState != null)
|
||||
{
|
||||
var player2 = player2Doc == null ? null : new Models.User(player2Doc);
|
||||
var metaData = new SessionMetadata(session.Name, session.IsPrivate, player1Doc.DisplayName, player2Doc?.DisplayName);
|
||||
var player2 = IsUserDocument(player2Doc)
|
||||
? new Models.User(player2Doc.ToObject<UserDocument>()!)
|
||||
: null;
|
||||
var metaData = new SessionMetadata(session.Name, session.IsPrivate, player1.Id, player2?.Id);
|
||||
var shogiBoardState = new BoardState(boardState.Board.ToDictionary(kvp => kvp.Key, kvp => MapPiece(kvp.Value)));
|
||||
return new Session(shogiBoardState, metaData);
|
||||
}
|
||||
@@ -151,15 +157,14 @@ namespace Gameboard.ShogiUI.Sockets.Repositories
|
||||
* 3) User document of Player2.
|
||||
*/
|
||||
var session = group[0].doc.ToObject<SessionDocument>();
|
||||
var player1Doc = group[1].doc.ToObject<UserDocument>();
|
||||
var group2DocumentType = group[2].doc.Property(nameof(UserDocument.DocumentType).ToCamelCase())?.Value.Value<string>();
|
||||
var player2Doc = group2DocumentType == WhichDocumentType.User.ToString()
|
||||
? group[2].doc.ToObject<UserDocument>()
|
||||
: null;
|
||||
if (session != null && player1Doc != null)
|
||||
var player1 = group[1].doc.ToObject<UserDocument>();
|
||||
var player2Doc = group[2].doc;
|
||||
if (session != null && player1 != null)
|
||||
{
|
||||
var player2 = player2Doc == null ? null : new Models.User(player2Doc);
|
||||
return new SessionMetadata(session.Name, session.IsPrivate, player1Doc.Id, player2?.Id);
|
||||
var player2 = IsUserDocument(player2Doc)
|
||||
? new Models.User(player2Doc.ToObject<UserDocument>()!)
|
||||
: null;
|
||||
return new SessionMetadata(session.Name, session.IsPrivate, player1.Id, player2?.Id);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user