Пример #1
0
        public List <PullRequestContributor> GetLeaderBoard(DateTime fromDate, DateTime toDate, string repository = "Umbraco-CMS")
        {
            var pullsNonHq   = GetPullsNonHq(repository);
            var contributors = new List <PullRequestContributor>();

            foreach (var pr in pullsNonHq.Where(x => x.CreatedAt >= fromDate && x.CreatedAt <= toDate))
            {
                var isOpen   = pr.ClosedAt == null && pr.MergedAt == null;
                var isClosed = pr.ClosedAt != null && pr.MergedAt == null;
                var isMerged = pr.ClosedAt != null && pr.MergedAt != null;

                var contributor = contributors.FirstOrDefault(x => string.Equals(x.Username, pr.User.Login, StringComparison.InvariantCultureIgnoreCase));
                if (contributor == null)
                {
                    contributor = new PullRequestContributor
                    {
                        Username            = pr.User.Login,
                        Contributions       = 1,
                        OpenContributions   = isOpen ? 1 : 0,
                        ClosedContributions = isClosed ? 1 : 0,
                        MergedContributions = isMerged ? 1 : 0
                    };
                    contributors.Add(contributor);
                }
                else
                {
                    contributor.Contributions       = contributor.Contributions + 1;
                    contributor.OpenContributions   = isOpen ? contributor.OpenContributions + 1 : contributor.OpenContributions;
                    contributor.ClosedContributions = isClosed ? contributor.ClosedContributions + 1 : contributor.ClosedContributions;
                    contributor.MergedContributions = isMerged ? contributor.MergedContributions + 1 : contributor.MergedContributions;
                }
            }

            return(contributors);
        }
Пример #2
0
        public List <PullRequestContributor> GetFirstContributors(string repository = "Umbraco-CMS")
        {
            var pullsNonHq   = GetPullsNonHq(repository);
            var contributors = new List <PullRequestContributor>();

            foreach (var pr in pullsNonHq.OrderBy(x => x.CreatedAt))
            {
                var isOpen   = pr.ClosedAt == null && pr.MergedAt == null;
                var isClosed = pr.ClosedAt != null && pr.MergedAt == null;
                var isMerged = pr.ClosedAt != null && pr.MergedAt != null;

                var contributor = contributors.FirstOrDefault(x => string.Equals(x.Username, pr.User.Login, StringComparison.InvariantCultureIgnoreCase));
                if (contributor == null)
                {
                    var createdAt = DateTime.MinValue;
                    if (pr.CreatedAt != null)
                    {
                        createdAt = pr.CreatedAt.Value;
                    }

                    contributor = new PullRequestContributor
                    {
                        Username            = pr.User.Login,
                        Contributions       = 1,
                        OpenContributions   = isOpen ? 1 : 0,
                        ClosedContributions = isClosed ? 1 : 0,
                        MergedContributions = isMerged ? 1 : 0,
                        FirstContribution   = createdAt
                    };
                    contributors.Add(contributor);
                }
                else
                {
                    contributor.Contributions = contributor.Contributions + 1;

                    contributor.OpenContributions   = isOpen ? contributor.OpenContributions + 1 : contributor.OpenContributions;
                    contributor.ClosedContributions = isClosed ? contributor.ClosedContributions + 1 : contributor.ClosedContributions;
                    contributor.MergedContributions = isMerged ? contributor.MergedContributions + 1 : contributor.MergedContributions;
                }
            }

            return(contributors);
        }