public List <UserActivityDTO> GetUserActivity(ActivityDTO activity) { List <UserActivityDTO> user_activities = new List <UserActivityDTO>(); var user_profiles = dc.UserProfiles.Where(i => i.ProfilePropertyDefinition.PropertyName == activity.settings["Profile"].ToString()).Select(i => new { user_id = i.UserID, gitHub_login = i.PropertyValue }).ToList(); GitHubClient gitHubClient = new GitHubClient(new ProductHeaderValue("Dnn.CommunityActivity")); gitHubClient.Credentials = new Credentials(activity.settings["Credentials"].ToString()); RepositoryIssueRequest objOptions = new RepositoryIssueRequest(); objOptions.Filter = IssueFilter.All; objOptions.State = ItemStateFilter.All; List <Repository> repositories = new List <Repository>(); var totalCount = int.MaxValue; var page = 1; // get a list of all the repos matching the search criteria while (repositories.Count() < totalCount) { var request = new SearchRepositoriesRequest(activity.settings["Query"].ToString()) { Page = page, }; var result = gitHubClient.Search.SearchRepo(request).Result; totalCount = result.TotalCount; repositories.AddRange(result.Items); page++; } foreach (Repository repository in repositories) { IReadOnlyList <Issue> issues = gitHubClient.Issue.GetAllForRepository(repository.Id, objOptions).Result; if (issues.Any()) { foreach (var user_profile in user_profiles) { Nullable <DateTime> last_activity_date = dc.CommunityMetrics_UserActivities.Where(i => i.user_id == user_profile.user_id && i.activity_id == activity.id).OrderByDescending(i => i.date).Select(i => i.date).FirstOrDefault(); var recent_issues = issues .Where(i => i.User != null && i.User.Login == user_profile.gitHub_login && i.CreatedAt.Date > last_activity_date.GetValueOrDefault() && i.CreatedAt.Date < DateTime.Now.Date ); foreach (Issue issue in recent_issues) { if (issue.PullRequest == null) // exclude issues which are automatically generated for pull requests { var user_activity = user_activities.Where(i => i.user_id == user_profile.user_id && i.date == issue.CreatedAt.Date).SingleOrDefault(); if (user_activity == null) { user_activity = new UserActivityDTO() { user_id = user_profile.user_id, activity_id = activity.id, count = 0, date = issue.CreatedAt.Date }; user_activities.Add(user_activity); } user_activity.count++; } } } } } return(user_activities); }
public List <UserActivityDTO> GetUserActivity(ActivityDTO objActivity) { return(new List <UserActivityDTO>()); }
public List <UserActivityDTO> GetUserActivity(ActivityDTO activity) { List <UserActivityDTO> user_activities = new List <UserActivityDTO>(); var user_profiles = dc.UserProfiles.Where(i => i.ProfilePropertyDefinition.PropertyName == activity.settings["Profile"].ToString()).Select(i => new { user_id = i.UserID, gitHub_login = i.PropertyValue }).ToList(); GitHubClient gitHubClient = new GitHubClient(new ProductHeaderValue("Dnn.CommunityActivity")); gitHubClient.Credentials = new Credentials(activity.settings["Credentials"].ToString()); List <Repository> repositories = new List <Repository>(); var totalCount = int.MaxValue; var page = 1; // get a list of all the repos matching the search criteria while (repositories.Count() < totalCount) { var request = new SearchRepositoriesRequest(activity.settings["Query"].ToString()) { Page = page, }; var result = gitHubClient.Search.SearchRepo(request).Result; totalCount = result.TotalCount; repositories.AddRange(result.Items); page++; } foreach (Repository repository in repositories) { IReadOnlyList <GitHubCommit> commits = new List <GitHubCommit>(); try { var commitRequest = new CommitRequest() { Since = DateTime.Now.AddYears(-1) // only scan the last year of activity, otherwise too much data }; commits = gitHubClient.Repository.Commit.GetAll(repository.Id, commitRequest).Result; } catch { }; foreach (var user_profile in user_profiles) { Nullable <DateTime> last_activity_date = dc.CommunityMetrics_UserActivities.Where(i => i.user_id == user_profile.user_id && i.activity_id == activity.id).OrderByDescending(i => i.date).Select(i => i.date).FirstOrDefault(); if (commits != null && commits.Count > 0) { //Debug.WriteLine("\n Commits: " + commits.Count.ToString()); var recent_commits = commits .Where(i => i.Author != null && i.Commit != null && i.Commit.Author != null && i.Author.Login == user_profile.gitHub_login && i.Commit.Author.Date > last_activity_date.GetValueOrDefault().Date&& i.Commit.Author.Date < DateTime.Now.Date ) .ToList(); foreach (var commit in recent_commits) { var user_activity = user_activities.Where(i => i.user_id == user_profile.user_id && i.date == commit.Commit.Author.Date.Date).SingleOrDefault(); if (user_activity == null) { user_activity = new UserActivityDTO() { user_id = user_profile.user_id, activity_id = activity.id, count = 0, date = commit.Commit.Author.Date.DateTime }; user_activities.Add(user_activity); } user_activity.count++; } } } } return(user_activities); }
public CommunityMetrics_Activity ConvertDtoToItem(CommunityMetrics_Activity item, ActivityDTO dto) { if (item == null) { item = new CommunityMetrics_Activity(); } if (dto == null) { return(item); } item.id = dto.id; item.name = dto.name; item.description = dto.description; item.type_name = dto.type_name; item.factor = dto.factor; item.active = dto.active; item.min_daily = dto.min_daily; item.max_daily = dto.max_daily; return(item); }