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()); } }