private void FilterEnvironments(IEnvironmentModel connection, bool clearSelections = true)
{
if(connection != null)
{
if(Application.Current != null && Application.Current.Dispatcher != null)
{
Application.Current.Dispatcher.Invoke(() => ExplorerItemModels.Clear());
}
else
{
ExplorerItemModels.Clear();
}
var isAuthorizedDeployTo = AuthorizationService != null && AuthorizationService.IsAuthorized(AuthorizationContext.DeployTo, Guid.Empty.ToString());
if(isAuthorizedDeployTo && _target)
{
ObservableCollection<IExplorerItemModel> explorerItemModels = new ObservableCollection<IExplorerItemModel>
{
StudioResourceRepository.FindItem(env => env.EnvironmentId == connection.ID)
};
ExplorerItemModels = explorerItemModels;
if(ExplorerItemModels != null && ExplorerItemModels.Count == 1 && ExplorerItemModels[0] != null)
{
ExplorerItemModels[0].IsDeployTargetExpanded = true;
}
}
else
{
var isAuthorizedDeployFrom = AuthorizationService != null && AuthorizationService.IsAuthorized(AuthorizationContext.DeployFrom, Guid.Empty.ToString());
if(isAuthorizedDeployFrom && !_target)
{
var explorerItemModels = new ObservableCollection<IExplorerItemModel>
{
StudioResourceRepository.FindItem(env => env.EnvironmentId == connection.ID)
};
ExplorerItemModels = explorerItemModels;
if(ExplorerItemModels != null && ExplorerItemModels.Count == 1 && ExplorerItemModels[0] != null)
{
ExplorerItemModels[0].IsDeploySourceExpanded = true;
}
}
else
{
var model = StudioResourceRepository.Filter(env => env.EnvironmentId == connection.ID);
if(model != null)
{
if(model.Count == 1)
{
StudioResourceRepository.PerformUpdateOnDispatcher(() => model[0].Children = new ObservableCollection<IExplorerItemModel>());
if(AuthorizationService != null)
{
var resourcePermissions = AuthorizationService.GetResourcePermissions(Guid.Empty);
model[0].Permissions = resourcePermissions;
}
}
ExplorerItemModels = model;
}
}
}
if(clearSelections)
{
Iterate(model => model.IsChecked = false);
Iterate(model => model.IsOverwrite = false);
}
}
}