/// <summary> /// Borra un blob /// </summary> private async Task DeleteBlobAsync(NodeStorageContainerFileViewModel item) { if (item != null && SolutionViewModel.MainViewModel.MainController.HostController.SystemController.ShowQuestion($"¿Desea elimina el blob '{item.Text}'?")) { using (BlockLogModel block = SolutionViewModel.MainViewModel.MainController.Logger.Default.CreateBlock(LogModel.LogType.Info, "Comienza el borrado de blobs")) { // Borra los elementos try { ICloudStorageManager manager = new StorageManager().OpenAzureStorageBlob(item.Storage.GetNormalizedConnectionString()); // Borra cada uno de los blobs del nodo foreach (BlobNodeModel blob in GetBlobs(item.Blob)) { // Log block.Info($"Borrando {blob.Blob.FullFileName}"); // Borra el blob await manager.DeleteAsync(blob.Blob.Container, blob.Blob.FullFileName); } } catch (Exception exception) { SolutionViewModel.MainViewModel.MainController.Logger.Default.LogItems.Error($"Error al borrar el blob. {exception.Message}"); } // Log block.Info("Fin del borrado de blobs"); SolutionViewModel.MainViewModel.MainController.Logger.Flush(); // Actualiza el árbol Load(); } } }
/// <summary> /// Añade un nodo al árbol de nodos reproduciendo la estructura de directorios /// </summary> private List <BaseTreeNodeViewModel> GetTreeNodes(List <BlobNodeModel> blobs, IHierarchicalViewModel parent) { List <BaseTreeNodeViewModel> nodes = new List <BaseTreeNodeViewModel>(); // Añade los nodos foreach (BlobNodeModel blob in blobs) { BaseTreeNodeViewModel node = new NodeStorageContainerFileViewModel(TreeViewModel, parent, Storage, blob, blob.Children.Count > 0); // Añade los nodos hijo if (blob.Children.Count > 0) { List <BaseTreeNodeViewModel> children = GetTreeNodes(blob.Children, node); foreach (BaseTreeNodeViewModel child in children) { node.Children.Add(child); } } // Añade el nodo a la lista nodes.Add(node); } // Devuelve la colección de nodos return(nodes); }