protected override IEnumerable <ThreadInfo> HandleNoPath(ThreadManager TM, Dictionary <string, string> query, object state) { var currentThread = TM.CurrentThread; if (query.ContainsKey("version")) { double version; if (Double.TryParse(query["version"], out version)) { if (version >= Program.TagsVersion) { yield return(TM.Return(currentThread, new JsonResponse(HttpStatusCode.NoContent))); } } } var response = new TagsResponse(Program.TagsVersion); var categories = new Dictionary <string, TagCategory>(); categories.Add("", response.Root); yield return(TM.MakeDbCall(currentThread, Program.ConnectionString, "spGetTagCategories")); using (var table = TM.GetResult <DataTable>(currentThread)) { foreach (DataRow row in table.Rows) { var category = new TagCategory(row); categories[category.Parent ?? ""].Children.Add(category); categories.Add(category.Name, category); } } yield return(TM.MakeDbCall(currentThread, Program.ConnectionString, "spGetTags")); using (var table = TM.GetResult <DataTable>(currentThread)) { foreach (DataRow row in table.Rows) { var tag = new Tag(row); categories[(string)row["category"]].Tags.Add(tag); } } yield return(TM.Return(currentThread, new JsonResponse(response))); }
public TagsResponse(double version) { Version = version; Root = new TagCategory(); }