Esempio n. 1
0
        public WorkItem CreateWorkItem(Tfs tfs, Issue issue)
        {
            var tfsConfig = ConfigurationManager.GetSection("tfs") as TfsConfigSection;
            var workItem  = new WorkItem(tfs.TeamProject.WorkItemTypes["Bug"]);

            SyncFields(workItem, issue);
            workItem.IterationPath = tfsConfig.DefaultIterationPath;
            workItem.Fields["Repro steps"].Value = "См. Исходное замечание";

            workItem.Save(SaveFlags.MergeAll);
            tfs.SyncFields(workItem, this);
            var correspondings = _store.AddBug(workItem.Id, issue.Key);

            logger.WriteInfo(p => p.JMessage(Site.Tfs, Operation.Create, Artifact.WorkItem, workItem.Id.ToString(), workItem.Id.ToString(), issue.Key));
            return(workItem);
        }
Esempio n. 2
0
        public void TranslateIssueToTfs(Issue issue, Tfs tfs, Session session)
        {
            issue = GetIssue(issue.Key);
            WorkItem workItem       = tfs.GetWorkItemByIssueKey(issue.Key);
            Bug      correspondings = GetCorrespondings(issue);

            if (workItem == null)
            {
                workItem = CreateWorkItem(tfs, issue);
                //Если появились при создании
                var attachments = LoadAttachments(issue.Key);
                foreach (var attachment in attachments)
                {
                    var path = global.AttachmentsFolder + attachment.Filename;
                    tfs.AttachFileTo(path, workItem);
                }


                AddChangeAtCurrentSession(workItem, issue, session, string.Format("Создан элемент {0}. Количество вложений {1}", workItem.Id, workItem.AttachedFileCount));
            }

            if (!workItem.IsOpen)
            {
                workItem.Open();
            }
            //SyncFields(workItem, issue);

            TraslateChangelogToTfs(issue, tfs, session);

            if (workItem.IsDirty)
            {
                workItem.Save(SaveFlags.MergeAll);
                AddChangeAtCurrentSession(workItem, issue, session, string.Format("Перемещены поля из Jira в TFS ({0} - {1})", issue.Key, workItem.Id));
            }



            //todo: Подписывать, что комментарий изменен
            var issueComments = GetComments(issue).Where(comment => !comment.body.StartsWith("TFS"));
            var tfsComments   = workItem.GetHistory();

            foreach (var issueComment in issueComments)
            {
                if (!_store.IsJiraLogInChanges(issueComment.body) &&
                    !tfsComments.Any(comment => issueComment.renderedBody.RemakeBadTags().EqualToComment(comment)))
                {
                    issueComment.renderedBody = string.Format("Jira |[{3}] {0} пишет:{1}{2}", issueComment.Author.DisplayName,
                                                              Environment.NewLine,
                                                              issueComment.renderedBody, issueComment.UpdatedTime);

                    workItem.Fields["History"].Value = issueComment.renderedBody;
                }
                if (workItem.IsDirty)
                {
                    workItem.Save(SaveFlags.MergeAll);
                    _store.AddSessionChange(
                        new SessionChange
                    {
                        Bug           = correspondings,
                        Session       = session,
                        Date          = DateTime.Now,
                        Operation     = string.Format("Добавлен комментарий  элементу {0}", workItem.Id),
                        JiraChangelog = issueComment.body,
                        TFSRevision   = workItem.Id + "-" + workItem.GetLastRevision().Index,
                        SyncState     = SyncState.Success
                    });
                }
            }
            tfs.SyncFields(workItem, this);
            logger.WriteInfo(p => p.JMessage(Site.Tfs, Operation.Sended, Artifact.WorkItem, issue.Key, issue.Key, workItem.Id.ToString()));
        }