public ActionResult <JsonResponse> DeleteSite(int site_id, int admin_id, string admin_token) { if (authenticator.VerifyAdminForLeaf(admin_id, site_id, admin_token)) { SkeletonSiteDto found_site = dbQuery.QuerySkeletonSiteById(site_id); //must be done manually by the app to properly update the data limiter foreach (SiteComponentDto site_component in found_site.site_components) { ComponentReference component_reference = new ComponentReference() { component_id = site_component.component_id, component_type = site_component.type }; DeleteAuthenticatedSiteComponentMethod(component_reference); } //manually remove nav link data from data plan List <NavLink> found_nav_links; try{ found_nav_links = dbQuery.QueryNavBarLinksBySiteId(site_id); }catch { found_nav_links = null; } if (found_nav_links != null) { foreach (NavLink nav_link in found_nav_links) { _dataLimiter.RemoveNavLinkFromDataPlan(nav_link, admin_id); } } _dataLimiter.RemoveSiteFromDataPlan(admin_id); Site DeletedSite = dbQuery.DeleteSiteById(site_id); JsonResponse r = new JsonSuccess($"Site {DeletedSite.title} deleted sucessfully!"); return(r); } else { return(StatusCode(400, "Invalid Token. Stranger Danger.")); } }