/// <summary>
        /// Cloase and save diagrams after session end
        /// </summary>
        /// <param name="window">Main app window</param>
        /// <returns>Task for async execution</returns>
        public static async Task CloseDiagramsOnDisconnect(MainWindow window)
        {
            var forSave = new Queue <DatabaseModelDesignerViewModel>();
            IEnumerable <LayoutContent> contents =
                window.MainDocumentPane.ChildrenSorted.Where(t => t.Content is DatabaseModelDesigner).ToList();

            var facade = new DiagramFacade(new DatabaseModelDesigner());

            bool yesToAll = false;

            foreach (LayoutContent content in contents)
            {
                DatabaseModelDesigner designer = content.Content as DatabaseModelDesigner;

                if (designer == null)
                {
                    continue;
                }

                if (yesToAll)
                {
                    forSave.Enqueue(designer.ViewModel);
                    content.Close();
                    continue;
                }

                var res = await window.ShowMessageAsync("Save diagram",
                                                        $"Do you want to save diagram ? ({designer.ViewModel.DiagramTitle})",
                                                        MessageDialogStyle.AffirmativeAndNegativeAndSingleAuxiliary, new MetroDialogSettings()
                {
                    AnimateShow              = true,
                    AnimateHide              = false,
                    AffirmativeButtonText    = "Yes",
                    FirstAuxiliaryButtonText = "Yes to all",
                    NegativeButtonText       = "No"
                });

                switch (res)
                {
                case MessageDialogResult.Affirmative:
                    facade.ViewModel = designer.ViewModel;
                    facade.SaveDiagram();
                    break;

                case MessageDialogResult.FirstAuxiliary:
                    yesToAll = true;
                    forSave.Enqueue(designer.ViewModel);
                    break;
                }

                content.Close();
            }

            while (forSave.Count > 0)
            {
                var vm = forSave.Dequeue();
                facade.ViewModel = vm;
                facade.SaveDiagram();
            }
        }
        /// <summary>
        /// Save all opened diagrams to DB
        /// </summary>
        /// <param name="window">Main app window</param>
        public static void SaveAllDiagrams(MainWindow window)
        {
            IEnumerable <DatabaseModelDesignerViewModel> viewModels = window.MainDocumentPane.ChildrenSorted
                                                                      .Where(t => t.Content is DatabaseModelDesigner)
                                                                      .Select(t => t.Content as DatabaseModelDesigner)
                                                                      .Select(t => t?.ViewModel);
            var facade = new DiagramFacade(new DatabaseModelDesigner());

            foreach (DatabaseModelDesignerViewModel viewModel in viewModels)
            {
                facade.ViewModel = viewModel;
                facade.SaveDiagram();
            }
        }