checkpoint

This commit is contained in:
2021-11-10 18:46:29 -06:00
parent 2a3b7b32b4
commit 20f44c8b90
26 changed files with 519 additions and 407 deletions

View File

@@ -9,9 +9,9 @@ namespace Gameboard.ShogiUI.Sockets.Managers
{
public interface IGameboardManager
{
Task<bool> IsPlayer1(string sessionName, string playerName);
Task<bool> AssignPlayer2ToSession(string sessionName, string userName);
Task<bool> AssignPlayer2ToSession(string sessionName, User user);
Task<User?> ReadUser(ClaimsPrincipal user);
Task<bool> CreateUser(ClaimsPrincipal user);
}
public class GameboardManager : IGameboardManager
@@ -23,14 +23,25 @@ namespace Gameboard.ShogiUI.Sockets.Managers
this.repository = repository;
}
public Task<User?> ReadUser(ClaimsPrincipal user)
public Task<bool> CreateUser(ClaimsPrincipal principal)
{
var userId = user.UserId();
if (user.IsGuest() && Guid.TryParse(userId, out var webSessionId))
var id = principal.UserId();
if (string.IsNullOrEmpty(id))
{
return repository.ReadGuestUser(webSessionId);
return Task.FromResult(false);
}
else if (!string.IsNullOrEmpty(userId))
var user = principal.IsGuest()
? User.CreateGuestUser(id)
: User.CreateMsalUser(id);
return repository.CreateUser(user);
}
public Task<User?> ReadUser(ClaimsPrincipal principal)
{
var userId = principal.UserId();
if (!string.IsNullOrEmpty(userId))
{
return repository.ReadUser(userId);
}
@@ -38,12 +49,6 @@ namespace Gameboard.ShogiUI.Sockets.Managers
return Task.FromResult<User?>(null);
}
public async Task<bool> IsPlayer1(string sessionName, string playerName)
{
//var session = await repository.GetGame(sessionName);
//return session?.Player1 == playerName;
return true;
}
public async Task<string> CreateJoinCode(string sessionName, string playerName)
{
@@ -55,19 +60,15 @@ namespace Gameboard.ShogiUI.Sockets.Managers
return string.Empty;
}
public async Task<bool> AssignPlayer2ToSession(string sessionName, string userName)
public async Task<bool> AssignPlayer2ToSession(string sessionName, User user)
{
var isSuccess = false;
var session = await repository.ReadSessionMetaData(sessionName);
if (session != null && !session.IsPrivate && string.IsNullOrEmpty(session.Player2))
if (session != null && !session.IsPrivate && session.Player2 == null)
{
session.SetPlayer2(userName);
if (await repository.UpdateSession(session))
{
isSuccess = true;
}
session.SetPlayer2(user);
return await repository.UpdateSession(session);
}
return isSuccess;
return false;
}
}
}