/// <summary> /// Enrich the issue with it's corresponding Active Directory group. /// </summary> /// <param name="issue">The current issue.</param> /// <param name="groupADSet">The list of AD groups.</param> /// <returns>The issue containing it's ADGroup.</returns> private static Issue AddActiveDirectoryGroup(this Issue issue, GroupADSet groupADSet) { Issue returnIssue = issue; returnIssue.ADGroup = groupADSet.GetGroupNameByLogin(returnIssue.IssueDetail?.assignee); return(returnIssue); }
/// <summary> /// Get Sonar issues corresponding to the <see cref="SonarRequestGetIssues"/> parameters. /// </summary> /// <param name="sonarSettingRequest">The parameters used to get the issues.</param> /// <returns>A list of Sonar issues with ActiveDirectory, ChangeSet and CodeProject informations.</returns> public IssuesSonarSet GetIssuesSonar(SonarRequestGetIssues sonarSettingRequest) { if (sonarSettingRequest == null) { return(null); } _loggingService.LogInfo(this, "Parameters : DateFrom " + sonarSettingRequest.DateFrom.ToString() + ", DateTo " + sonarSettingRequest.DateFrom.ToString()); GroupADSet groupADSet = _activeDirectoryService.GetUsersByGroupAd(sonarSettingRequest.GroupAdSet); sonarSettingRequest.Users = groupADSet?.GetListOfUser(); SearchIssuesResponse searchIssuesResponse = _sonarConnector.GetIssuesAsync(sonarSettingRequest).Result; List <Issue> issueSet = searchIssuesResponse.CreateIssueSet(groupADSet, _mapper, _sonarConnector, _tfsConnector); _loggingService.LogInfo(this, issueSet.Count().ToString() + " resultats. Parameters : DateFrom " + sonarSettingRequest.DateFrom.ToString() + ", DateTo " + sonarSettingRequest.DateTo.ToString()); return(new IssuesSonarSet() { IssueSet = issueSet }); }
/// <summary> /// The internal Assembler converting the <see cref="SearchIssuesResponse"/> to an enriched list of Sonar Issues. /// </summary> /// <param name="searchIssuesResponse">The list of Issues from the Sonar API.</param> /// <param name="groupADSet">The active directory information needed to get some informations.</param> /// <param name="mapper">The AutoMapper interface to create the Issues Detail <see cref="IssueDetail"/>.</param> /// <param name="sonarConnector">The link to the Sonar Services.</param> /// <returns>An enriched and filtered list of Sonar Issues.</returns> internal static List <Issue> CreateIssueSet(this SearchIssuesResponse searchIssuesResponse, GroupADSet groupADSet, IMapper mapper, ISonarConnector sonarConnector, ITfsConnector tfsConnector) { List <Issue> issueSet = new List <Issue>(); if (searchIssuesResponse?.issues == null) { return(issueSet); } issueSet.Capacity = searchIssuesResponse.issues.Count; foreach (var responseIssue in searchIssuesResponse.issues) { if (responseIssue != null) { Issue issue = new Issue() { IssueDetail = mapper.Map <IssueDetail>(responseIssue) }; issue = issue.AddChangeSet(sonarConnector); if (issue.ChangeSetDate != null && issue.ChangeSetDate?.AddDays(5) > issue.IssueDetail.creationDate) { issue = issue.AddCodeProject(tfsConnector); issue = issue.AddActiveDirectoryGroup(groupADSet); issue = issue.AddCodeLineCount(tfsConnector); issueSet.Add(issue); } } } issueSet.TrimExcess(); return(issueSet); }