public ActionResult Index() { ViewBag.Title = "Home Page"; var trelloKey = ConfigurationManager.AppSettings["TrelloKey"]; var trelloToken = ConfigurationManager.AppSettings["TrelloToken"]; var trelloBoard = ConfigurationManager.AppSettings["TrelloBoard"]; var trello = new TrelloBoardServiceFactory().CreateTrelloBoardService(trelloKey,trelloToken, trelloBoard); var teamMemberStatusService = new TeamMemberStatusService(_hackTrackDbContext); var githubClient = new GitHubRestClientFactory().Create(); var committersService = new RepoCommitsService(githubClient); var contributorService = new RepoContributorStatisticsService(githubClient); var gitHubOwner = ConfigurationManager.AppSettings["GitHub.Owner"]; var gitHubRepository = ConfigurationManager.AppSettings["GitHub.Repository"]; var totalCommits = committersService.GetCommits(gitHubOwner, gitHubRepository); var lastHourCommits = committersService.GetCommitsForHour(gitHubOwner, gitHubRepository, DateTime.UtcNow.AddHours(-1)); var cardCounts = trello.GetColumnCardCounts(); var members = trello.GetMembers(); var cardsPerMember = new Dictionary<BoardMember, IEnumerable<BoardCard>>(); var statusesPerMember = new Dictionary<BoardMember, IEnumerable<TeamMemberStatus>>(); var boardMembers = members as IList<BoardMember> ?? members.ToList(); var teamMembers = new List<TeamMemberStatuses>(); foreach (var member in boardMembers) { var cards = trello.GetCurrentCardsForMember(member); var statuses = teamMemberStatusService.GetTeamMemberStatuses(member.Id); var newthing = GetDefaultStatuses(); if (statuses != null) { foreach (var status in statuses) { newthing[status.StatusType] = status; } } cardsPerMember.Add(member, cards); teamMembers.Add(new TeamMemberStatuses {TeamMember = member, MemberStatuses = newthing} ); } var persistenceService = new TrelloMemberPersistenceService(_hackTrackDbContext); members.ForEach(persistenceService.PersistMember); var topContributor = contributorService.GetTopContributorStatistics(gitHubOwner, gitHubRepository); var model = new TrackData {ColumnCardCounts = cardCounts, Members = boardMembers, CardsPerMember = cardsPerMember, Statuses = statusesPerMember, TotalCommits = totalCommits.Count(), CommitsLastHour = lastHourCommits.Count(), TeamMembers = teamMembers, TopComitterPicUrl = topContributor.author.avatar_url + "&s=108"//"https://0.gravatar.com/avatar/9a3c279b88985ca19876111fe5458ec2?d=https%3A%2F%2Fidenticons.github.com%2Ff61eb54e6270b06dc6542c5dc2f19a96.png&r=x&s=107" }; return View(model); }
public HttpResponseMessage ResetStatus(string status, string id) { var dbContext = new HackTrackDbContext(); var statusService = new TeamMemberStatusService(dbContext); var statusEnum = (StatusUpdateType) Enum.Parse(typeof (StatusUpdateType), status, true); statusService.ResetTeamMemberStatus(id, statusEnum); return Request.CreateResponse(HttpStatusCode.OK); }