コード例 #1
0
        private void ResolveMentions(string text, SocialBase social)
        {
            var mentionIds = new Guid[] { };//_mentionService.GetMentions(text).ToList();//TODO: uncomment when mention service is ready

            if (mentionIds.Any())
            {
                var       links          = _activityLinkService.GetLinks(social.Id);
                const int maxTitleLength = 100;
                _mentionService.ProcessMention(new MentionModel()
                {
                    MentionedSourceId = social.Id,
                    CreatorId         = _memberService.GetCurrentMemberId(),
                    MentionedUserIds  = mentionIds,
                    Title             = social.Description.StripHtml().TrimByWordEnd(maxTitleLength),
                    Url          = links.Details,
                    ActivityType = IntranetActivityTypeEnum.Social
                });
            }
        }
コード例 #2
0
        public async Task <JobDetails> Execute(IReadOnlyDictionary <string, object> parameters)
        {
            var details        = new PullRequestJobDetails();
            var includeMembers = new Guid[0];

            if (parameters.ContainsKey(MembersParameterName))
            {
                includeMembers = (Guid[])parameters[MembersParameterName];
                if (includeMembers == null || !includeMembers.Any())
                {
                    _logger.LogWarning("Attempt to run PullRequestsSyncJob with empty list of members");
                }
            }

            await _mediator.Execute(new UpdateActivePullRequests());

            var membersAndRepositories = await _mediator.RequestCollection <GetMembersAndRepositoriesOfAllProfiles, RepositoryInfo>(new GetMembersAndRepositoriesOfAllProfiles(includeMembers));

            _logger.LogInformation("Found {Count} repositories to scan.", membersAndRepositories.Count());

            // TODO: Parallel?
            var allPullRequests         = new List <PullRequestViewModel>();
            var allPullRequestsDetails  = new List <PullRequestJobDetails.PullRequestDetail>();
            var allPullRequestsErrors   = new List <PullRequestJobDetails.ErrorDetail>();
            var allPullRequestsTimeLogs = new List <PullRequestJobDetails.TimeEntry>();

            foreach (var repository in membersAndRepositories)
            {
                var startTime = DateTime.UtcNow;
                try
                {
                    _logger.LogInformation("Fetching pull requests for {Repository}", repository.Name);
                    var result = await _mediator.Request <FetchPullRequestsForRepository, FetchPullRequestsResult>(new FetchPullRequestsForRepository(repository));

                    allPullRequestsDetails.AddRange(result.Details);
                    allPullRequests.AddRange(result.PullRequests);
                    allPullRequestsErrors.AddRange(result.Errors);
                    allPullRequestsTimeLogs.AddRange(result.TimeLogs);
                    _logger.LogInformation("Found {Count} pull requests for {Repository}", result.PullRequests.Count(), repository.Name);
                }
                catch (Exception ex)
                {
                    _logger.LogError(ex, "Error fetching pull requests for {Repository}", repository.Name);
                    allPullRequestsErrors.Add(new PullRequestJobDetails.ErrorDetail {
                        Repository = repository.Name, Error = ex.Message
                    });
                }

                allPullRequestsTimeLogs.Add(new PullRequestJobDetails.RepositoryTiemEntry {
                    Repository = repository.Name, Start = startTime, End = DateTime.UtcNow
                });
            }

            await _mediator.Execute(new SavePullRequests(allPullRequests));

            await _mediator.Execute(new UpdateLastPullRequestFetchDate(allPullRequests));

            details.PullRequests = allPullRequestsDetails;
            details.Errors       = allPullRequestsErrors;
            details.TimeLogs     = allPullRequestsTimeLogs;

            return(details);
        }