protected override async Task <TrainingProviderAuthor> MapToAuthorAsync(int trainingProviderId, PluralsightAuthor processingAuthor) { var author = await _dataService.GetAuthorAsync(processingAuthor.UrlName); var trainingProviderAuthor = new TrainingProviderAuthor { TrainingProviderId = trainingProviderId, FullName = processingAuthor.FullName, SiteUrl = processingAuthor.SiteUrl, UrlName = processingAuthor.UrlName, Author = author }; author.AuthorTrainingProviders = new List <TrainingProviderAuthor> { trainingProviderAuthor }; return(trainingProviderAuthor); }
private async Task ApplayAuthorResolve(AuthorResolve currentAuthorResolve, int resolvedId, string resolvedUrl, string resolvedUrlName) { currentAuthorResolve.ResolveState = ResolveState.Resolved; currentAuthorResolve.ResolvedAuthorId = resolvedId; currentAuthorResolve.AuthorSiteUrl = resolvedUrl; currentAuthorResolve.AuthorUrlName = resolvedUrlName; var trainingProviderAuthor = await _db.TrainingProviderAuthors .SingleOrDefaultAsync(x => x.TrainingProviderId == currentAuthorResolve.TrainingProviderId && x.AuthorId == resolvedId); if (trainingProviderAuthor == null) { trainingProviderAuthor = new TrainingProviderAuthor { TrainingProviderId = currentAuthorResolve.TrainingProviderId, AuthorId = resolvedId, FullName = currentAuthorResolve.AuthorFullName, SiteUrl = currentAuthorResolve.AuthorSiteUrl, UrlName = currentAuthorResolve.AuthorUrlName }; _db.TrainingProviderAuthors.Add(trainingProviderAuthor); } else if (trainingProviderAuthor.IsDeleted) { trainingProviderAuthor.IsDeleted = false; } var courseAuthor = await _db.CourseAuthors .SingleOrDefaultAsync(x => x.CourseId == currentAuthorResolve.CourseId && x.AuthorId == resolvedId); if (courseAuthor == null) { courseAuthor = new CourseAuthor { TrainingProviderId = currentAuthorResolve.TrainingProviderId, AuthorId = resolvedId, CourseId = currentAuthorResolve.CourseId, IsAuthorCoAuthor = currentAuthorResolve.IsAuthorCoAuthor }; _db.CourseAuthors.Add(courseAuthor); } else if (courseAuthor.IsDeleted) { courseAuthor.IsDeleted = false; } await _db.SaveChangesAsync(); var unresolvedAuthorCount = await _db.AuthorsResolves .CountAsync(x => x.UpdateEventId == currentAuthorResolve.UpdateEventId && x.ResolveState == ResolveState.Pending); if (unresolvedAuthorCount == 0) { var currentUpdateEvent = await _db.UpdateEvents .SingleOrDefaultAsync(x => x.Id == currentAuthorResolve.UpdateEventId && x.UpdateResult == UpdateResult.NeedManualResolve); if (currentUpdateEvent != null) { currentUpdateEvent.UpdateResult = UpdateResult.Resolved; await _db.SaveChangesAsync(); } } }