public ForumThreads ListTaggedLatestThreads(long tenantId, long?pageId, int pageSize, IList <Tag> tags, bool recursive, IUnitOfWork unitOfWork = null) { TagCollection tagCollection = new TagCollection(); foreach (Tag tag in tags) { tagCollection.Add(tag); } IDatabaseManager dbm = _databaseManagerFactory.GetDatabaseManager(unitOfWork); try { int pageIndex = 0; ForumThreads threads = new ForumThreads(); string sql = _sqlManager.GetSql(recursive ? "Sql.ListTaggedLatestThreadsRecursive.sql" : "Sql.ListTaggedLatestThreads.sql"); dbm.SetSQL(sql); dbm.AddParameter("@TenantId", FieldType.BigInt, tenantId); dbm.AddParameter("@PageId", FieldType.BigInt, pageId ?? (object)DBNull.Value); dbm.AddParameter("@PageIndex", FieldType.Int, pageIndex); dbm.AddParameter("@PageSize", FieldType.Int, pageSize); dbm.AddTypedParameter("@Tags", FieldType.Structured, tagCollection.Count == 0 ? null : tagCollection, "cms.TagTableType"); dbm.ExecuteReader(); while (dbm.Read()) { threads.Add(new ForumThreadExtended { Thread = GetThread(dbm), User = GetUser(dbm), LastPostUserId = dbm.DataReaderValue("LastPostUserId") == DBNull.Value ? null : (long?)dbm.DataReaderValue("LastPostUserId"), LastPostUser = dbm.DataReaderValue("LastPostAlias") == DBNull.Value ? null : GetUser(dbm, "LastPost"), PageId = (long)dbm.DataReaderValue("PageId") }); } return(threads); } finally { if (unitOfWork == null) { dbm.Dispose(); } } }
public ForumThreads ListLatestThreads(long tenantId, long?pageId, int pageSize, bool recursive, IUnitOfWork unitOfWork = null) { IDatabaseManager dbm = _databaseManagerFactory.GetDatabaseManager(unitOfWork); try { int pageIndex = 0; ForumThreads threads = new ForumThreads(); string sql = _sqlManager.GetSql(recursive ? "Sql.ListLatestThreadsRecursive.sql" : "Sql.ListLatestThreads.sql"); dbm.SetSQL(sql); dbm.AddParameter("@TenantId", FieldType.BigInt, tenantId); dbm.AddParameter("@PageId", FieldType.BigInt, pageId ?? (object)DBNull.Value); dbm.AddParameter("@PageIndex", FieldType.Int, pageIndex); dbm.AddParameter("@PageSize", FieldType.Int, pageSize); dbm.ExecuteReader(); while (dbm.Read()) { threads.Add(new ForumThreadExtended { Thread = GetThread(dbm), User = GetUser(dbm), LastPostUserId = dbm.DataReaderValue("LastPostUserId") == DBNull.Value ? null : (long?)dbm.DataReaderValue("LastPostUserId"), LastPostUser = dbm.DataReaderValue("LastPostAlias") == DBNull.Value ? null : GetUser(dbm, "LastPost"), PageId = (long)dbm.DataReaderValue("PageId") }); } return(threads); } finally { if (unitOfWork == null) { dbm.Dispose(); } } }
public ForumThreads ListThreads(long tenantId, long elementId, int pageIndex, int pageSize, IUnitOfWork unitOfWork = null) { IDatabaseManager dbm = _databaseManagerFactory.GetDatabaseManager(unitOfWork); try { string sql = _sqlManager.GetSql("Sql.ListForumThreads.sql"); dbm.SetSQL(sql); dbm.AddParameter("@TenantId", FieldType.BigInt, tenantId); dbm.AddParameter("@ElementId", FieldType.BigInt, elementId); dbm.AddParameter("@PageIndex", FieldType.Int, pageIndex); dbm.AddParameter("@PageSize", FieldType.Int, pageSize); dbm.ExecuteReader(); ForumThreads threads = new ForumThreads(); while (dbm.Read()) { threads.Add(new ForumThreadExtended { Thread = GetThread(dbm), User = GetUser(dbm), LastPostUserId = dbm.DataReaderValue("LastPostUserId") == DBNull.Value ? null : (long?)dbm.DataReaderValue("LastPostUserId"), LastPostUser = dbm.DataReaderValue("LastPostAlias") == DBNull.Value ? null : GetUser(dbm, "LastPost") }); } dbm.Read(); threads.Total = (int)dbm.DataReaderValue("ThreadCount"); return(threads); } finally { if (unitOfWork == null) { dbm.Dispose(); } } }