/// <inheritdoc/>
        public async Task CloseGameAsync(int finishedPlayerBoardId)
        {
            await statisticsService.UpdateStatisticsAsync(finishedPlayerBoardId);

            await repository.DeleteAsync(finishedPlayerBoardId);

            await unitOfWork.CommitAsync();
        }
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            _logger.LogDebug($"StatisticsCollectorService is starting.");

            stoppingToken.Register(() => _logger.LogDebug($"StatisticsCollectorService is stopping."));

            while (!stoppingToken.IsCancellationRequested)
            {
                //key - cellid. value - hit count
                Dictionary <int, int> cellUsage = new Dictionary <int, int>();
                List <int>            gameCells = _statisticsService.TryDequeueGameStatistics();

                while (gameCells != null)
                {
                    gameCells.ForEach(cell => {
                        if (cellUsage.ContainsKey(cell))
                        {
                            cellUsage[cell]++;
                        }
                        else
                        {
                            cellUsage.Add(cell, 1);
                        }
                    });

                    gameCells = _statisticsService.TryDequeueGameStatistics();
                }

                if (cellUsage.Count > 0)
                {
                    _logger.LogDebug($"StatisticsCollectorService - statistics updated.");
                    await _statisticsService.UpdateStatisticsAsync(cellUsage);
                }

                await Task.Delay(_options.BackgroundStatisticsCollectorDelayTime, stoppingToken);
            }
        }