void addToDestinationList(Report report)
{
string destinationName = getDestinationName();
string fileName = convertFileName(report.FilePath);
if (destinationName.StartsWith(ReportsKeyword))
{
if (_destinationItems.FirstOrDefault(i => i.Name == fileName) == null)
{
_destinationItems.Add(new PropertyItem() { Name = fileName, Object = report });
}
}
else if (destinationName.StartsWith(ModelsKeyword))
{
foreach (var item in report.Models.Where(i => i != _source))
{
string name = string.Format("[{0}] {1}", fileName, item.Name);
if (_destinationItems.FirstOrDefault(i => i.Name == name) == null)
{
_destinationItems.Add(new PropertyItem() { Name = name, Object = item });
}
}
}
else if (destinationName.StartsWith(ElementsKeyword))
{
foreach (var model in report.Models)
{
foreach (var item in model.Elements.Where(i => i != _source))
{
string name = string.Format("[{0}/{1}] {2} ", fileName, model.Name, item.DisplayNameEl);
if (_destinationItems.FirstOrDefault(i => i.Object == item) == null)
{
_destinationItems.Add(new PropertyItem() { Name = name, Object = item });
}
}
}
}
else if (destinationName.StartsWith(RestrictionsKeyword))
{
bool isAggregate = !((ReportRestriction)_source).Model.Restrictions.Contains(_source);
foreach (var model in report.Models)
{
var restrictions = (isAggregate ? model.AggregateRestrictions : model.Restrictions);
foreach (var item in restrictions.Where(i => i != _source))
{
string name = string.Format("[{0}/{1}] {2} ", fileName, model.Name, item.DisplayNameEl);
if (_destinationItems.FirstOrDefault(i => i.Object == item) == null)
{
_destinationItems.Add(new PropertyItem() { Name = name, Object = item });
}
}
}
}
else if (destinationName.StartsWith(ViewsKeyword))
{
//add a dummy view for report itself
string reportName = string.Format("[{0}] ", fileName);
if (addRadioButton.Checked && ((ReportView)_source).TemplateName == "Report")
{
_destinationItems.Add(new PropertyItem() { Name = reportName, Object = new ReportView() { Report = report } });
}
foreach (var view in report.Views)
{
addViewsToDestinations(view, reportName);
}
}
else if (destinationName.StartsWith(TasksKeyword))
{
foreach (var item in report.Tasks.Where(i => i != _source))
{
string name = string.Format("[{0}] {1} ", fileName, item.Name);
if (_destinationItems.FirstOrDefault(i => i.Object == item) == null)
{
_destinationItems.Add(new PropertyItem() { Name = name, Object = item });
}
}
}
else if (destinationName.StartsWith(OutputsKeyword))
{
foreach (var item in report.Outputs.Where(i => i != _source))
{
string name = string.Format("[{0}] {1} ", fileName, item.Name);
if (_destinationItems.FirstOrDefault(i => i.Object == item) == null)
{
_destinationItems.Add(new PropertyItem() { Name = name, Object = item });
}
}
}
else if (destinationName.StartsWith(TasksFolderKeyword))
{
if (report != _report)
{
string name = string.Format("[{0}] Tasks Script ", fileName);
_destinationItems.Add(new PropertyItem() { Name = name, Object = report });
}
}
}