Dev2.ViewModels.Deploy.DeployNavigationViewModel.FilterEnvironments C# (CSharp) Method

FilterEnvironments() private method

private FilterEnvironments ( IEnvironmentModel connection, bool clearSelections = true ) : void
connection IEnvironmentModel
clearSelections bool
return void
        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);
                }

            }
        }