public async Task CompleteActiveRound() { var active = await _gameRoundRepository.GetActive(); if (active == null) { throw new Exception("Нет активного раунда"); } if (!active.Start.HasValue) { throw new Exception("Раунд еще не был запущен"); } active.End = DateTime.UtcNow; active.State = GameRoundState.Archived; active.Pause = null; await _gameRoundRepository.Update(active); var gameData = await _gameDataRepository.GetAll(); var archival = new ArchivalGameRound <EncodedGameData> { Id = active.Id, Name = active.Name, Players = active.Players, Created = active.Created, Start = active.Start.Value, End = active.End.Value, Duration = active.Duration, GameData = gameData, }; await _archivalGameRoundRepository.Add(archival); }
public async Task <ArchivalGameRound <DecodedGameData> > Get(Guid id) { var round = await _archivalGameRoundRepository.Get(id); var decodedRound = new ArchivalGameRound <DecodedGameData> { Id = round.Id, Created = round.Created, Duration = round.Duration, Start = round.Start, End = round.Start, Name = round.Name, Players = round.Players }; decodedRound.GameData = round.GameData.Select(gd => _gameDataMapper.Map((EncodedGameData)gd)); return(decodedRound); }