예제 #1
0
        public OrganizationModel FetchOrganization(string login)
        {
            Octokit.Organization o_org = GitHubAPI.Instance.Organization_GetByLogin(login);
            if (o_org == null || o_org.Type != Octokit.AccountType.Organization)
            {
                return(null);
            }

            Organization org = new Organization(o_org, true);

            DatabaseManagerWeb.Instance.Account_InsertOrUpdate(org);

            List <RepositoryModel>             repoModels = null;
            IReadOnlyList <Octokit.Repository> o_repos    = GitHubAPI.Instance.Repositories_GetAllForOrg(login, 1);

            if (o_repos != null)
            {
                List <Repository> repos = o_repos.Select(o_repo => new Repository(o_repo, true)).ToList();
                DatabaseManagerWeb.Instance.Repository_InsertOrUpdate(repos);

                repoModels = repos.Select(repo => new RepositoryModel
                {
                    Name        = repo.Name,
                    OwnerName   = login,
                    Description = repo.Description,
                    Language    = repo.Language,
                    Star        = repo.StargazersCount,
                    Fork        = repo.ForksCount,
                    HtmlUrl     = repo.HtmlUrl,
                    Reference   = $"/account/organization?login={login}"
                }).ToList();
            }

            int totalStar = o_repos.Select(e => e.StargazersCount).Sum();
            int totalFork = o_repos.Select(e => e.ForksCount).Sum();

            var orgModel = new OrganizationModel
            {
                AvatarUrl        = org.AvatarUrl,
                Name             = org.Login,
                Star             = totalStar,
                Fork             = totalFork,
                Email            = org.Email,
                Location         = org.Location,
                BlogUrl          = org.BlogUrl,
                HtmlUrl          = org.HtmlUrl,
                Reference        = $"/account/organization?login={org.Login}",
                CreatedAt        = org.CreatedAt,
                FetchedAt        = org.FetchedAt,
                RepositoryModels = repoModels ?? new List <RepositoryModel>(),
            };

            return(orgModel);
        }
예제 #2
0
 public OrganizationViewModel Init(string organizationName, Octokit.Organization organization = null)
 {
     Username     = organizationName;
     Organization = organization;
     return(this);
 }
예제 #3
0
 public static GhOrganization MapOrganization(Octokit.Organization org)
 {
     return new GhOrganization(org);
 }
예제 #4
0
 public GhOrganization(Octokit.Organization org)
 {
     BasicMemberMapping(org, this);
 }