/// <summary> /// Add Issue to Jira /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void AddIssueJira(object sender, EventArgs e) { try { string path = Path.Combine(Path.GetTempPath(), "BCFtemp", Path.GetRandomFileName()); Tuple <IssueBCF, Issue> tup = AddIssue(path, false); if (tup == null) { return; } IssueBCF issue = tup.Item1; Issue issueJira = tup.Item2; List <IssueBCF> issues = new List <IssueBCF>(); List <Issue> issuesJira = new List <Issue>(); issues.Add(issue); issuesJira.Add(issueJira); if (issue != null) { mainPan.doUploadIssue(issues, path, true, mainPan.jiraPan.projIndex, issuesJira); } } catch (System.Exception ex1) { MessageBox.Show("exception: " + ex1); } }
/// <summary> /// Add Issue to BCF /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void AddIssueBCF(object sender, EventArgs e) { try { Tuple <IssueBCF, Issue> tup = AddIssue(mainPan.jira.Bcf.path, true); if (tup == null) { return; } IssueBCF issue = tup.Item1; if (issue != null) { mainPan.jira.Bcf.Issues.Add(issue); mainPan.jira.Bcf.HasBeenSaved = false; } } catch (System.Exception ex1) { MessageBox.Show("exception: " + ex1); } }
/// <summary> /// Add Issue /// </summary> /// <param name="path"></param> /// <param name="isBcf"></param> /// <returns></returns> private Tuple <IssueBCF, Issue> AddIssue(string path, bool isBcf) { try { UIDocument uidoc = uiapp.ActiveUIDocument; Document doc = uidoc.Document; if (!(uidoc.ActiveView is View3D || uidoc.ActiveView is ViewSheet || uidoc.ActiveView is ViewPlan || uidoc.ActiveView is ViewSection || uidoc.ActiveView is ViewDrafting)) { MessageBox.Show("I'm sorry,\nonly 3D and 2D views are supported.", "Error!", MessageBoxButton.OK, MessageBoxImage.Error); return(null); } IssueBCF issue = new IssueBCF(); string folderIssue = Path.Combine(path, issue.guid.ToString()); if (!Directory.Exists(folderIssue)) { Directory.CreateDirectory(folderIssue); } var types = new ObservableCollection <Issuetype>(); var assignees = new List <User>(); var components = new ObservableCollection <IssueTracker.Data.Component>(); var priorities = new ObservableCollection <Priority>(); var noCom = true; var noPrior = true; var noAssign = true; if (!isBcf) { types = mainPan.jira.TypesCollection; assignees = mainPan.getAssigneesIssue(); components = mainPan.jira.ComponentsCollection; priorities = mainPan.jira.PrioritiesCollection; noCom = mainPan.jira.ProjectsCollection[mainPan.jiraPan.projIndex].issuetypes[0].fields.components == null; noPrior = mainPan.jira.ProjectsCollection[mainPan.jiraPan.projIndex].issuetypes[0].fields.priority == null; noAssign = mainPan.jira.ProjectsCollection[mainPan.jiraPan.projIndex].issuetypes[0].fields.assignee == null; } AddIssueRevit air = new AddIssueRevit(uidoc, folderIssue, types, assignees, components, priorities, noCom, noPrior, noAssign); air.Title = "Add Jira Issue"; if (!isBcf) { air.VerbalStatus.Visibility = System.Windows.Visibility.Collapsed; } else { air.JiraFieldsBox.Visibility = System.Windows.Visibility.Collapsed; } air.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen; air.ShowDialog(); if (air.DialogResult.HasValue && air.DialogResult.Value) { issue.snapshot = Path.Combine(folderIssue, "snapshot.png"); int elemCheck = 2; if (air.all.IsChecked.Value) { elemCheck = 0; } else if (air.selected.IsChecked.Value) { elemCheck = 1; } Issue issueJira = new Issue(); if (!isBcf) { issueJira.fields = new Fields(); issueJira.fields.issuetype = (Issuetype)air.issueTypeCombo.SelectedItem; issueJira.fields.priority = (Priority)air.priorityCombo.SelectedItem; if (!string.IsNullOrEmpty(air.ChangeAssign.Content.ToString()) && air.ChangeAssign.Content.ToString() != "none") { issueJira.fields.assignee = new User(); issueJira.fields.assignee.name = air.ChangeAssign.Content.ToString(); } if (air.SelectedComponents != null && air.SelectedComponents.Any()) { issueJira.fields.components = air.SelectedComponents; } } issue.viewpoint = generateViewpoint(elemCheck); issue.markup.Topic.Title = air.TitleBox.Text; issue.markup.Header[0].IfcProject = ExporterIFCUtils.CreateProjectLevelGUID(doc, Autodesk.Revit.DB.IFC.IFCProjectLevelGUIDType.Project); string projFilename = (doc.PathName != null && doc.PathName != "") ? System.IO.Path.GetFileName(doc.PathName) : ""; issue.markup.Header[0].Filename = projFilename; issue.markup.Header[0].Date = DateTime.Now; //comment if (!string.IsNullOrWhiteSpace(air.CommentBox.Text)) { CommentBCF c = new CommentBCF(); c.Comment1 = air.CommentBox.Text; c.Topic = new CommentTopic(); c.Topic.Guid = issue.guid.ToString(); ; c.Date = DateTime.Now; c.VerbalStatus = air.VerbalStatus.Text; c.Status = CommentStatus.Unknown; c.Author = (string.IsNullOrWhiteSpace(mainPan.jira.Self.displayName)) ? UserSettings.Get("BCFusername") : mainPan.jira.Self.displayName; issue.markup.Comment.Add(c); } return(new Tuple <IssueBCF, Issue>(issue, issueJira)); } else { mainPan.DeleteDirectory(folderIssue); } } catch (System.Exception ex1) { MessageBox.Show("exception: " + ex1); } return(null); }
private Tuple <List <IssueBCF>, List <Issue> > AddIssue(string path, bool isBcf) { try { // set image export settings ComApi.InwOaPropertyVec options = ComBridge.State.GetIOPluginOptions("lcodpimage"); // configure the option "export.image.format" to export png and image size foreach (ComApi.InwOaProperty opt in options.Properties()) { if (opt.name == "export.image.format") { opt.value = "lcodpexpng"; } if (opt.name == "export.image.width") { opt.value = 1600; } if (opt.name == "export.image.height") { opt.value = 900; } } _savedViewpoints = new List <SavedViewpoint>(); foreach (SavedItem oSI in _oDoc.SavedViewpoints.ToSavedItemCollection()) { RecurseItems(oSI); } var types = new ObservableCollection <Issuetype>(); var assignees = new List <User>(); var components = new ObservableCollection <Component>(); var priorities = new ObservableCollection <Priority>(); var noCom = true; var noPrior = true; var noAssign = true; if (!isBcf) { types = mainPan.jira.TypesCollection; assignees = mainPan.getAssigneesProj(); components = mainPan.jira.ComponentsCollection; priorities = mainPan.jira.PrioritiesCollection; noCom = mainPan.jira.ProjectsCollection[mainPan.jiraPan.projIndex].issuetypes[0].fields.components == null; noPrior = mainPan.jira.ProjectsCollection[mainPan.jiraPan.projIndex].issuetypes[0].fields.priority == null; noAssign = mainPan.jira.ProjectsCollection[mainPan.jiraPan.projIndex].issuetypes[0].fields.assignee == null; } AddIssueNavis ain = new AddIssueNavis(_savedViewpoints, types, assignees, components, priorities, noCom, noPrior, noAssign); if (isBcf) { ain.JiraFieldsBox.Visibility = System.Windows.Visibility.Collapsed; } ain.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen; ain.ShowDialog(); if (ain.DialogResult.HasValue && ain.DialogResult.Value) { int elemCheck = 2; if (ain.all.IsChecked.Value) { elemCheck = 0; } else if (ain.selected.IsChecked.Value) { elemCheck = 1; } List <SavedViewpoint> savedViewpointsImport = new List <SavedViewpoint>(); for (int i = 0; i < ain.issueList.SelectedItems.Count; i++) { int index = ain.issueList.Items.IndexOf(ain.issueList.SelectedItems[i]); savedViewpointsImport.Add(_savedViewpoints[index]); } if (!savedViewpointsImport.Any()) { return(null); } //get selection only once! if (elemCheck == 1) { _elementList = _oDoc.CurrentSelection.SelectedItems.Where(o => o.InstanceGuid != Guid.Empty).ToList <ModelItem>(); } List <IssueBCF> issues = new List <IssueBCF>(); List <Issue> issuesJira = new List <Issue>(); foreach (var sv in savedViewpointsImport) { Issue issueJira = new Issue(); if (!isBcf) { issueJira.fields = new Fields(); issueJira.fields.issuetype = (Issuetype)ain.issueTypeCombo.SelectedItem; issueJira.fields.priority = (Priority)ain.priorityCombo.SelectedItem; if (!string.IsNullOrEmpty(ain.ChangeAssign.Content.ToString()) && ain.ChangeAssign.Content.ToString() != "none") { issueJira.fields.assignee = new User(); issueJira.fields.assignee.name = ain.ChangeAssign.Content.ToString(); } if (ain.SelectedComponents != null && ain.SelectedComponents.Any()) { issueJira.fields.components = ain.SelectedComponents; } } IssueBCF issue = new IssueBCF(); string folderIssue = Path.Combine(path, issue.guid.ToString()); if (!Directory.Exists(folderIssue)) { Directory.CreateDirectory(folderIssue); } issue.snapshot = Path.Combine(folderIssue, "snapshot.png"); // set the currtent saved viewpoint and then generate sna and BCF viewpoint _oDoc.SavedViewpoints.CurrentSavedViewpoint = sv; issue.viewpoint = generateViewpoint(sv.Viewpoint, elemCheck); generateSnapshot(folderIssue); issue.markup.Topic.Title = sv.DisplayName; issue.markup.Header[0].IfcProject = ""; string projFilename = !string.IsNullOrEmpty(_oDoc.FileName) ? System.IO.Path.GetFileName(_oDoc.FileName) : ""; issue.markup.Header[0].Filename = projFilename; issue.markup.Header[0].Date = DateTime.Now; //comment if (sv.Comments.Any()) { foreach (var comm in sv.Comments) { var c = new CommentBCF { Comment1 = comm.Body, Topic = new CommentTopic { Guid = issue.guid.ToString() } }; ; c.Date = DateTime.Now; c.VerbalStatus = comm.Status.ToString(); c.Author = (string.IsNullOrWhiteSpace(mainPan.jira.Self.displayName)) ? MySettings.Get("BCFusername") : mainPan.jira.Self.displayName; issue.markup.Comment.Add(c); } } issues.Add(issue); issuesJira.Add(issueJira); } // end foreach return(new Tuple <List <IssueBCF>, List <Issue> >(issues, issuesJira)); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } return(null); }