Ejemplo n.º 1
0
        internal OutPutObject ConvertToOutput(Team team)
        {
            OutPutObject returnValue = new OutPutObject();

            returnValue.TeamID     = team.ID;
            returnValue.SystemType = team.SystemType;

            foreach (var record in Records)
            {
                Sprint sprint = returnValue.Sprints.Where(x => x.IterationPath == record.Fields.IterationPath).FirstOrDefault();
                if (sprint == null)
                {
                    var sourceSprint = SourceSystemSprints.SprintItems.Where(x => x.path == record.Fields.IterationPath).FirstOrDefault();
                    sprint = new Sprint();
                    //sprint.LegacyID = sourceSprint.id;
                    sprint.ID            = sourceSprint.name;//record.Fields.id.ToString();
                    sprint.Name          = sourceSprint.name;
                    sprint.IterationPath = sourceSprint.path;
                    sprint.StartDate     = sourceSprint.SprintAttributes.StartDate;
                    sprint.EndDate       = sourceSprint.SprintAttributes.EndDate;
                    returnValue.Sprints.Add(sprint);
                }

                //story.SprintName = record.Fields.IterationPath;
                //story.SprintName = record.Fields.Title;

                Story story = new Story();
                sprint.Stories.Add(story);

                //story.AssignedTo = record.Fields.AssignedTo;
                story.ID    = record.Fields.id.ToString();
                story.Type  = record.Fields.WorkItemTypeEnumValue.ToString();
                story.State = record.Fields.State;
                switch (record.Fields.WorkItemTypeEnumValue)
                {
                case WorkItemTypeEnum.PBI:
                    story.Points = record.Fields.Effort;
                    break;

                case WorkItemTypeEnum.Bug:
                case WorkItemTypeEnum.Unknown:
                case WorkItemTypeEnum.UserStory:
                default:
                    story.Points = record.Fields.StoryPointValue;
                    break;
                }
                //assigning all the points to the user at this time.
                story.Assignees.Add(new Assignee()
                {
                    ID = record.Fields.AssignedTo, Points = story.Points
                });
            }

            return(returnValue);
        }
Ejemplo n.º 2
0
        private List <string> FlattenUsers(OutPutObject jsonContent)
        {
            List <string> list  = new List <string>();
            var           users = (
                from sprint in jsonContent.Sprints
                from story in sprint.Stories
                from assignees in story.Assignees
                select assignees
                ).Distinct();

            foreach (var user in users)
            {
                if (!list.Contains(user.ID) && !string.IsNullOrEmpty(user.ID))
                {
                    list.Add(user.ID);
                }
            }
            return(list);
        }
Ejemplo n.º 3
0
        private void AddAnyMissingUsers(AgileSystem agileSystem, OutPutObject jsonContent)
        {
            List <string> userList = FlattenUsers(jsonContent);

            foreach (var user in userList)
            {
                AgileSystemUser asu = _dataContext.AgileSystemUser.Where(x => x.AgileSystemUserName == user && agileSystem.AgileSystemId == x.AgileSystemId).FirstOrDefault();
                if (asu == null)
                {
                    //set em up, they weren't found
                    asu = new AgileSystemUser()
                    {
                        AgileSystemUserId   = Guid.NewGuid().ToString(),
                        AgileSystemUserName = user,
                        AgileSystemId       = agileSystem.AgileSystemId,
                        Active = true
                                 //work values populated upon cross reference (manual)
                    };
                    _dataContext.AgileSystemUser.Add(asu);
                }
            }

            _dataContext.SaveChanges();
        }
Ejemplo n.º 4
0
        public void ProcessTeams()
        {
            string file = $@"{AppDomain.CurrentDomain.BaseDirectory}appSettings.JSON";

            string     fileContents = GetFileContents(file);
            AppSetting settings     = JsonConvert.DeserializeObject <AppSetting>(fileContents);

            foreach (var team in settings.Teams)
            {
                Console.WriteLine($"Exporting team {team.Code}.");

                string _credentials = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", team.Token)));
                string siteUrl      = $@"https://{team.TFSUrl}";
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri(siteUrl);
                    client.DefaultRequestHeaders.Accept.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", _credentials);

                    //GetWorkItemsByWiql(client, team);
                    SprintResult sprintsFromSourceSystem = GetSprintsFromTeam(client, team);

                    HttpResponseMessage queryHttpResponseMessage = RunQueries(client, team);


                    if (queryHttpResponseMessage.IsSuccessStatusCode)
                    {
                        //bind the response content to the queryResult object
                        QueryResult queryResult = queryHttpResponseMessage.Content.ReadAsAsync <QueryResult>().Result;
                        string      queryId     = queryResult.id;

                        HttpResponseMessage httpResponseMessage = RunIDQuery(client, team, queryId);
                        if (httpResponseMessage.IsSuccessStatusCode)
                        {
                            WorkItemQueryResult workItemQueryResult = httpResponseMessage.Content.ReadAsAsync <WorkItemQueryResult>().Result;

                            //now that we have a bunch of work items, build a list of id's so we can get details
                            var builder = new System.Text.StringBuilder();
                            foreach (var item in workItemQueryResult.workItems)
                            {
                                builder.Append(item.id.ToString()).Append(",");
                            }

                            //clean up string of id's
                            string ids = builder.ToString().TrimEnd(new char[] { ',' });
                            //string[] idToQuery = ids.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                            HttpResponseMessage getWorkItemsHttpResponse = RunWorkItemsQuery(client, team, ids, settings);

                            if (getWorkItemsHttpResponse.IsSuccessStatusCode)
                            {
                                var        result = getWorkItemsHttpResponse.Content.ReadAsStringAsync().Result;
                                RootObject ro     = JsonConvert.DeserializeObject <RootObject>(result);
                                ro.SourceSystemSprints = sprintsFromSourceSystem;
                                OutPutObject output      = ro.ConvertToOutput(team);
                                string       fileContent = JsonConvert.SerializeObject(output);
                                WriteFile(team.Code, settings.OutputDirectory, fileContent);
                            }
                        }
                    }
                }
            }
        }