Files
4Gewinnt/API/Repository/GameRepo/GameRepository.cs
T

52 lines
1.1 KiB
C#

using System.Security.Cryptography;
using API.Models.DataClasses;
using API.Models.Game;
namespace API.Repository.GameRepo;
public class GameRepository : IGameRepository
{
private List<Game> _games = [];
public List<Game> GetAll()
{
return _games;
}
public Game? GetOne(string id)
{
return _games.FirstOrDefault(g => g.Id == id);
}
public Game? GetOne(SixDigitInt gameCode)
{
return _games.FirstOrDefault(g => g.GameCode == gameCode);
}
public Game Create(Coordinates gameFieldSize, Player player)
{
Game newGame = new(gameFieldSize, GenerateGameCode());
_games.Add(newGame);
return newGame;
}
public void Destroy(string id)
{
_games.RemoveAll(g => g.Id == id);
}
private SixDigitInt GenerateGameCode()
{
while (true)
{
int value = RandomNumberGenerator.GetInt32(100000, 1000000);
bool exists = _games.Any(g => g.GameCode.Value == value);
if (!exists)
{
return new SixDigitInt(value);
}
}
}
}