private void PopulatePossibleContainer()
{
this.PossibleContainer.Clear();
// When creating a new Rule, it can be contained by any ReferenceDataLibrary that is currently loaded
if (this.dialogKind == ThingDialogKind.Create)
{
this.PossibleContainer.AddRange(this.Session.OpenReferenceDataLibraries.Where(x => this.PermissionService.CanWrite(x)).Select(x => x.Clone(false)));
this.Container = this.PossibleContainer.FirstOrDefault();
return;
}
// When inspecting an existing Rule, only it's container needs to be added to the PossibleContainer property (it cannot be changed)
if (this.dialogKind == ThingDialogKind.Inspect)
{
this.PossibleContainer.Add(this.Thing.Container);
this.Container = this.Thing.Container;
return;
}
// When updating a Rule, the possible ReferenceDataLibrary can only be the ReferenceDataLibrary in the current chain of ReferenceDataLibrary of the Rule
if (this.dialogKind == ThingDialogKind.Update)
{
var containerRdl = (ReferenceDataLibrary)this.Container;
this.PossibleContainer.Add(containerRdl);
var chainOfRdls = containerRdl.GetRequiredRdls();
this.PossibleContainer.AddRange(chainOfRdls.Where(x => this.PermissionService.CanWrite(x)).Select(x => x.Clone(false)));
}
}