private IEnumerable <AuditLogCollection.LogInfo> FindLogFolders(Folder rootFolder, bool includeEmptyFolders) { if (rootFolder.HasSubfolders) { using (QueryResult queryResult = rootFolder.FolderQuery(FolderQueryFlags.None, null, AuditLogCollection.SortByDisplayName, AuditLogCollection.FolderProperties)) { object[][] rows; do { rows = queryResult.GetRows(100); if (rows != null && rows.Length > 0) { foreach (object[] row in rows) { DateTime logRangeStart; DateTime logRangeEnd; bool validLogSubfolder = AuditLogCollection.TryParseLogRange(row[0] as string, out logRangeStart, out logRangeEnd); int itemCount = AuditLogCollection.GetItemCount(row[2]); if (validLogSubfolder && (includeEmptyFolders || itemCount > 0)) { yield return(new AuditLogCollection.LogInfo { FolderId = (StoreId)row[1], RangeStart = logRangeStart, RangeEnd = logRangeEnd, ItemCount = itemCount }); } } } }while (rows != null && rows.Length > 0); } } yield break; }
public static string GetLogFolderNameAndRange(DateTime timestamp, out DateTime rangeStart, out DateTime rangeEnd) { string text = timestamp.ToString(AuditLogCollection.DailyLogFolderNameFormat); if (!AuditLogCollection.TryParseLogRange(text, out rangeStart, out rangeEnd)) { throw new InvalidOperationException("Invalid log folder name"); } return(text); }