private async Task <string> GetCalculatedPropertyAsync(string name) { string sql = null; if (name == "CommentsUnapproved") { using (DataProvider.BlogCommentDataProvider commentDP = new DataProvider.BlogCommentDataProvider(-1)) {// we don't know the entry, but it's not needed sql = "SELECT COUNT(*) FROM $BlogComments$ WHERE ($BlogComments$.\"EntryIdentity\" = $ThisTable$.\"Identity\") AND ($ThisTable$.\"Published\" = True) AND ($BlogComments$.\"Deleted\" = False) AND ($BlogComments$.\"Approved\" = False)"; IPostgreSQLTableInfo info = await commentDP.GetDataProvider().GetIPostgreSQLTableInfoAsync(); sql = info.ReplaceWithTableName(sql, "$BlogComments$"); sql = ReplaceWithTableName(sql, "$ThisTable$"); } } else if (name == "Comments") { using (DataProvider.BlogCommentDataProvider commentDP = new DataProvider.BlogCommentDataProvider(-1)) {// we don't know the entry, but it's not needed sql = "SELECT COUNT(*) FROM $BlogComments$ WHERE ($BlogComments$.\"EntryIdentity\" = $ThisTable$.\"Identity\") AND ($ThisTable$.\"Published\" = True)"; IPostgreSQLTableInfo info = await commentDP.GetDataProvider().GetIPostgreSQLTableInfoAsync(); sql = info.ReplaceWithTableName(sql, "$BlogComments$"); sql = ReplaceWithTableName(sql, "$ThisTable$"); } } else { throw new InternalError("Unexpected property {0}", name); } return(sql); }
private async Task <object> GetCalculatedPropertyAsync(string name, object obj) { BlogEntry entry = (BlogEntry)obj; if (name == "CommentsUnapproved") { using (DataProvider.BlogCommentDataProvider commentDP = new DataProvider.BlogCommentDataProvider(entry.Identity)) { List <DataProviderFilterInfo> filters = new List <DataProviderFilterInfo>() { new DataProviderFilterInfo { Field = nameof(BlogComment.Approved), Operator = "==", Value = false, }, }; DataProviderGetRecords <BlogComment> commentsUnapproved = await commentDP.GetItemsAsync(0, 0, null, filters); entry.CommentsUnapproved = commentsUnapproved.Total; return(obj); } } else if (name == "Comments") { using (DataProvider.BlogCommentDataProvider commentDP = new DataProvider.BlogCommentDataProvider(entry.Identity)) { DataProviderGetRecords <BlogComment> comments = await commentDP.GetItemsAsync(0, 0, null, null); entry.Comments = comments.Total; return(obj); } } else { throw new InternalError("Unexpected property {0}", name); } }