/// <summary> /// Deletes this category object from database /// </summary> /// <returns>true if delete successful, false otherwise</returns> public bool Delete() { // DELETE ALL CHILDREN, DELETE NODES THAT DO NOT APPEAR IN OTHER CATEGORIES foreach (CatalogNode node in CatalogNodes) { if (node.CatalogNodeType == CatalogNodeType.Product) { Product product = (Product)node.ChildObject; if (product.Categories.Count == 1) { product.Delete(); } } else if (node.CatalogNodeType == CatalogNodeType.Webpage) { Webpage webpage = (Webpage)node.ChildObject; if (webpage.Categories.Count == 1) { webpage.Delete(); } } else if (node.CatalogNodeType == CatalogNodeType.Link) { Link link = (Link)node.ChildObject; if (link.Categories.Count == 1) { link.Delete(); } } else if (node.CatalogNodeType == CatalogNodeType.Category) { Category cat = (Category)node.ChildObject; if (cat != null) { cat.Delete(); } } //DELETE THE CHILD NODE node.Delete(); } //GET DATABASE Database database = Token.Instance.Database; DbCommand deleteCommand; //DELETE ALL PATHS deleteCommand = database.GetSqlStringCommand("DELETE FROM ac_CategoryParents WHERE CategoryId=@categoryId"); database.AddInParameter(deleteCommand, "@categoryId", DbType.Int32, this.CategoryId); database.ExecuteNonQuery(deleteCommand); //DELETE ALL CATALOG NODES LINKED TO OR FROM THIS CATEGORY deleteCommand = database.GetSqlStringCommand("DELETE FROM ac_CatalogNodes WHERE (CategoryId=@categoryId OR (CatalogNodeId=@categoryId AND CatalogNodeTypeId=@catalogNodeTypeId))"); database.AddInParameter(deleteCommand, "@categoryId", DbType.Int32, this.CategoryId); database.AddInParameter(deleteCommand, "@catalogNodeTypeId", System.Data.DbType.Byte, (byte)CatalogNodeType.Category); database.ExecuteNonQuery(deleteCommand); //DELTE CUSTOM URL INFORMATION IF THERE IS ANY CustomUrlDataSource.Delete(this.CategoryId, CatalogNodeType.Category); //PERFORM BASE DELETE return(this.BaseDelete()); }
public static bool Delete(Category category) { return(category.Delete()); }