using System.Security.Cryptography; using API.Models.DataClasses; using API.Models.Game; namespace API.Repository.GameRepo; public class GameRepository : IGameRepository { private List _games = []; public List 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? GetOneByConnectionId(string connectionId) { return _games.FirstOrDefault(g => g.Players.Any(p => p.ConnectionId == connectionId)); } public Game Create(Coordinates gameFieldSize) { 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) { var value = RandomNumberGenerator.GetInt32(100000, 1000000); var exists = _games.Any(g => g.GameCode.Value == value); if (!exists) { return new SixDigitInt(value); } } } }