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;
}
public void generateSnapshot(string folderIssue)