private void TransformAndStoreCriteria(CharacterAchievementsSummary characterAchievements) { var character = characterAchievements.Character; var entities = _dataContext .CharacterCriterias .Where(c => c.CharacterId == character.Id); _dataContext.CharacterCriterias.RemoveRange(entities); var criteriaToAdd = new List <entities::CharacterCriteria>(); var criteria = characterAchievements .Achievements .Where(a => a.Criteria != null) .Select(c => c.Criteria); _dataContext.CharacterCriterias.AddRange( criteria.Select(c => new entities::CharacterCriteria { CharacterId = character.Id, CriteriaId = c.Id, IsCompleted = c.IsCompleted })); var childCriteria = criteria .Where(cr => cr.ChildCriteria != null) .SelectMany(c => c.ChildCriteria); _dataContext.CharacterCriterias.AddRange( childCriteria.Select(c => new entities::CharacterCriteria { CharacterId = character.Id, CriteriaId = c.Id, Amount = c.Amount, IsCompleted = c.IsCompleted })); var childOfChildrenCriteria = childCriteria .Where(cr => cr.SubCriteria != null) .SelectMany(c => c.SubCriteria); _dataContext.CharacterCriterias.AddRange( childOfChildrenCriteria.Select(c => new entities::CharacterCriteria { CharacterId = character.Id, CriteriaId = c.Id, Amount = c.Amount, IsCompleted = c.IsCompleted })); _dataContext.SaveChanges(); }
private void TransformAndStoreAchievements(CharacterAchievementsSummary characterAchievements) { var character = characterAchievements.Character; var characterAchievementsToAddOrUpdate = characterAchievements .Achievements .Select(c => new entities::CharacterAchievement { CharacterId = character.Id, AchievementId = c.Achievement.Id, CompletedTimestamp = c.TimeStamp }); var entities = _dataContext .CharacterAchievements .Where(c => c.CharacterId == character.Id); _dataContext.CharacterAchievements.RemoveRange(entities); _dataContext.CharacterAchievements.AddRange(characterAchievementsToAddOrUpdate); _dataContext.SaveChanges(); }
private void TransformAndStore(CharacterAchievementsSummary characterAchievements) { TransformAndStoreAchievements(characterAchievements); TransformAndStoreCriteria(characterAchievements); }