Esempio n. 1
0
        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);
        }