protected virtual async Task SavePropertiesAsync(RestModel <TEntity> restModel, TEntity entity)
        {
            var properties = restModel.PropertiesGroups?.Select(s => s.GetPropertiesEntry()).ToList();

            if (properties != null)
            {
                foreach (var propertiesEntry in properties)
                {
                    foreach (var val in propertiesEntry.Properties)
                    {
                        await PropertiesProvider.SetAsync(val.Value, entity, val.SiteId);
                    }
                }
            }
        }
        private async Task ImportGamesAsync(Export data, Site site)
        {
            foreach (var gameExport in data.Games)
            {
                var game = await _dbContext.Set <Game>().FirstOrDefaultAsync(d => d.Title == gameExport.Title);

                if (game == null)
                {
                    game = new Game
                    {
                        Id            = Guid.NewGuid(),
                        Url           = gameExport.Url,
                        Title         = gameExport.Title,
                        SiteIds       = new[] { site.Id },
                        IsPublished   = true,
                        DateAdded     = gameExport.Date,
                        DateUpdated   = gameExport.Date,
                        DatePublished = gameExport.Date,
                        Data          = new GameData {
                            Platforms = new Platform[0], Hashtag = gameExport.TweetTag
                        },
                        Blocks = new List <ContentBlock>()
                    };
                    game.Blocks = await GetBlocksAsync(gameExport.Desc, data,
                                                       $"games/{game.DateAdded.Year.ToString()}/{game.DateAdded.Month.ToString()}");

                    if (gameExport.DeveloperId > 0 && _developersMap.ContainsKey(gameExport.DeveloperId))
                    {
                        game.ParentId = _developersMap[gameExport.DeveloperId].Id;
                    }

                    await _dbContext.AddAsync(game);

                    if (!string.IsNullOrEmpty(gameExport.Keywords))
                    {
                        await _propertiesProvider.SetAsync(
                            new SeoContentPropertiesSet { Keywords = gameExport.Keywords, Description = gameExport.Desc },
                            game);
                    }
                }

                _gamesMap.Add(gameExport.Id, game);
                RegisterRedirect(gameExport.FullUrl, _linkGenerator.GeneratePublicUrl(game, site).ToString());
            }
        }