/// <summary> /// Select document path /// </summary> /// <returns></returns> private FileStructureDocumenPath SelectPath() { // Show stack selection var selectStackItemBox = ItemBoxManager.GetItemBoxFromDB("IB_FileStructure_Stack"); selectStackItemBox.ShowDialog(); // Select instance-data if (selectStackItemBox.SelectedItem != null) { var selectDataItemBox = ItemBoxManager.GetItemBoxFromDB(selectStackItemBox.GetSelectedItemCell("StackDataItemBox").ToString()); selectDataItemBox.ShowDialog(); if (selectDataItemBox.SelectedItem != null) { var fileStructure = fileStructureService.GetByInstanceDataGuid((Guid)selectDataItemBox.GetSelectedItemCell("Guid")); if (fileStructure == null) { MessageBox.Show(localizationService.Translate("filestructure_path_no_selection"), localizationService.Translate("filestructure_path_no_selection_title"), MessageBoxButton.OK, MessageBoxImage.Information); } else { var selectPathWindow = new FileStructureWindow(); selectPathWindow.Initialize(fileStructure); selectPathWindow.IsInSelectMode = true; selectPathWindow.ShowDialog(); if (selectPathWindow.SelectedDirectory != null) { var newDocumentPath = new FileStructureDocumenPath { Id = Guid.NewGuid(), DirectoryGuid = selectPathWindow.SelectedDirectory.Id, DocumentGuid = documentId, FileStructureGuid = fileStructure.Id, WorkflowId = selectPathWindow.SelectedDirectory.WorkflowId }; return(newDocumentPath); } } } } return(null); }
/// <summary> /// Initialize viewmodel /// </summary> /// <param name="documentId">Document id</param> public DocumentPathOverViewViewModel(Guid documentId) { this.documentId = documentId; documentPathService = ServiceLocator.Current.GetInstance <IFileStructureDocumentPathService>(); fileStructureService = ServiceLocator.Current.GetInstance <IFileStructureService>(); directoryTypeService = ServiceLocator.Current.GetInstance <IDirectoryTypeService>(); iconService = ServiceLocator.Current.GetInstance <IIconService>(); localizationService = ServiceLocator.Current.GetInstance <ILocalizationService>(); stackService = ServiceLocator.Current.GetInstance <IStackService>(); documentWorkflowAssignmentService = ServiceLocator.Current.GetInstance <IDocumentWorkflowAssignmentService>(); removedPaths = new List <DocumentPathViewModel>(); paths = new ObservableCollection <DocumentPathViewModel>(); foreach (var path in documentPathService.GetByDocumentId(documentId)) { var pathVM = new DocumentPathViewModel(path, fileStructureService, directoryTypeService, iconService, stackService) { Parent = this }; paths.Add(pathVM); } // Add new document path addDocumentPathCommand = new RelayCommand((p) => { var newDocumentPath = SelectPath(); if (newDocumentPath != null) { if (CheckPathExists(newDocumentPath.Id, newDocumentPath.DirectoryGuid, newDocumentPath.FileStructureGuid)) { MessageBox.Show(localizationService.Translate("filestructure_path_exists"), localizationService.Translate("filestructure_path_exists_title"), MessageBoxButton.OK, MessageBoxImage.Information); return; } var newDocumentPathVM = new DocumentPathViewModel(newDocumentPath, fileStructureService, directoryTypeService, iconService, stackService) { Parent = this }; Paths.Add(newDocumentPathVM); } }); // Change document path changeDocumentPathCommand = new RelayCommand((p) => { var selectedPath = p as DocumentPathViewModel; if (selectedPath.IsProtectedPath) { MessageBox.Show(localizationService.Translate("filestructure_path_protected"), localizationService.Translate("filestructure_path_protected_title"), MessageBoxButton.OK, MessageBoxImage.Information); return; } var fileStructure = fileStructureService.Get(selectedPath.Model.FileStructureGuid); var selectPathWindow = new FileStructureWindow(); selectPathWindow.Initialize(fileStructure); selectPathWindow.IsInSelectMode = true; selectPathWindow.Loaded += (s, e) => { selectPathWindow.ViewModel.SelectedDirectory = selectPathWindow.ViewModel.RawDirectories.FirstOrDefault(x => x.Model.Id == selectedPath.Model.DirectoryGuid); }; selectPathWindow.ShowDialog(); if (selectPathWindow.SelectedDirectory != null) { if (CheckPathExists(selectedPath.Model.Id, selectPathWindow.SelectedDirectory.Id, fileStructure.Id)) { MessageBox.Show(localizationService.Translate("filestructure_path_exists"), localizationService.Translate("filestructure_path_exists_title"), MessageBoxButton.OK, MessageBoxImage.Information); return; } selectedPath.Model.DirectoryGuid = selectPathWindow.SelectedDirectory.Id; selectedPath.Model.WorkflowId = selectPathWindow.SelectedDirectory.WorkflowId; selectedPath.RefreshPath(); } }); // Remove document path removeDocumentPathCommand = new RelayCommand((p) => { var selectedPath = p as DocumentPathViewModel; if (selectedPath.IsProtectedPath) { MessageBox.Show(localizationService.Translate("filestructure_path_protected"), localizationService.Translate("filestructure_path_protected_title"), MessageBoxButton.OK, MessageBoxImage.Information); return; } var messageBoxResult = MessageBox.Show(localizationService.Translate("filestructure_remove_path"), localizationService.Translate("filestructure_remove_path_title"), MessageBoxButton.YesNo, MessageBoxImage.Question); if (messageBoxResult == MessageBoxResult.Yes) { removedPaths.Add(selectedPath); paths.Remove(selectedPath); } }); }