using System; using System.Collections.Generic; using System.IO; using System.Windows.Forms; namespace StructureHelperLogics.Models.Storages { public class FileStorageManager { private readonly Dictionary _openedFiles = new Dictionary(); public void OpenFile() { using (OpenFileDialog openFileDialog = new OpenFileDialog()) { openFileDialog.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*"; openFileDialog.Multiselect = true; openFileDialog.Title = "Select Files"; if (openFileDialog.ShowDialog() == DialogResult.OK) { foreach (var filePath in openFileDialog.FileNames) { var fileId = Guid.NewGuid(); var openedFile = new OpenedFile(fileId, filePath); _openedFiles[fileId] = openedFile; Console.WriteLine($"File '{openedFile.FilePath}' opened with ID: {fileId}"); } } } } public OpenedFile GetFile(Guid fileId) { if (_openedFiles.TryGetValue(fileId, out var openedFile)) { return openedFile; } throw new KeyNotFoundException("File not found."); } public void CloseFile(Guid fileId) { if (_openedFiles.ContainsKey(fileId)) { _openedFiles.Remove(fileId); Console.WriteLine($"File with ID: {fileId} has been closed."); } else { throw new KeyNotFoundException("File not found."); } } public void AddRelatedObjectToFile(Guid fileId, FileRelatedObject relatedObject) { var openedFile = GetFile(fileId); openedFile.AddRelatedObject(relatedObject); Console.WriteLine($"Added related object to file ID: {fileId}, Related Object: {relatedObject}"); } public FileRelatedObject GetRelatedObjectFromFile(Guid fileId, Guid objectId) { var openedFile = GetFile(fileId); return openedFile.GetRelatedObject(objectId); } public void RemoveRelatedObjectFromFile(Guid fileId, Guid objectId) { var openedFile = GetFile(fileId); openedFile.RemoveRelatedObject(objectId); Console.WriteLine($"Removed related object with ID: {objectId} from file ID: {fileId}"); } public void ListOpenedFiles() { foreach (var file in _openedFiles.Values) { Console.WriteLine($"File ID: {file.Id}, Path: {file.FilePath}, Related Objects Count: {file.RelatedObjects.Count}"); } } } }