private void AsSpectator(Entities.Game game, Entities.User user, String passphrase, Entities.JoinResponse response)
{
if (game.IsCurrentSpectator(user.UserId) == false)
{
if (_validatePassphrase.Execute(game, passphrase) == false)
{
response.Result |= Entities.Enums.Game.JoinResponseCode.BadPassphrase;
}
else if (game.MaxSpectatorsReached())
{
response.Result |= Entities.Enums.Game.JoinResponseCode.SpectatorsFull;
}
else
{
Boolean successful = _joinGame.Execute(game, user, Entities.Enums.GamePlayerType.Spectator);
if (successful == false)
{
response.Result |= Entities.Enums.Game.JoinResponseCode.SpectatorsFull;
}
}
}
else
{
response.Result |= Entities.Enums.Game.JoinResponseCode.SuccessfulAlreadyPlayer;
}
if (response.Result.HasFlag(Entities.Enums.Game.JoinResponseCode.BadPassphrase) == false &&
response.Result.HasFlag(Entities.Enums.Game.JoinResponseCode.FullGame) == false)
{
response.Game = game;
}
}