示例#1
0
        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();
                }
            }
        }
      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();
            }
         }
      }