@@ -27,8 +27,8 @@ public MongoDbDataProvider(IMongoClient client, MongoDbOptions options)
2727 DateTime ? startDate = null ,
2828 DateTime ? endDate = null )
2929 {
30- var logsTask = GetLogsAsync ( page - 1 , count , level , searchCriteria ) ;
31- var logCountTask = CountLogsAsync ( level , searchCriteria ) ;
30+ var logsTask = GetLogsAsync ( page - 1 , count , level , searchCriteria , startDate , endDate ) ;
31+ var logCountTask = CountLogsAsync ( level , searchCriteria , startDate , endDate ) ;
3232
3333 await Task . WhenAll ( logsTask , logCountTask ) ;
3434
@@ -39,15 +39,12 @@ private async Task<IEnumerable<LogModel>> GetLogsAsync(
3939 int page ,
4040 int count ,
4141 string level ,
42- string searchCriteria )
42+ string searchCriteria ,
43+ DateTime ? startDate ,
44+ DateTime ? endDate )
4345 {
4446 var builder = Builders < MongoDbLogModel > . Filter . Empty ;
45-
46- if ( ! string . IsNullOrWhiteSpace ( level ) )
47- builder &= Builders < MongoDbLogModel > . Filter . Eq ( entry => entry . Level , level ) ;
48-
49- if ( ! string . IsNullOrWhiteSpace ( searchCriteria ) )
50- builder &= Builders < MongoDbLogModel > . Filter . Text ( searchCriteria ) ;
47+ GenerateWhereClause ( ref builder , level , searchCriteria , startDate , endDate ) ;
5148
5249 var logs = await _collection . Find ( builder )
5350 . Skip ( count * page )
@@ -62,20 +59,34 @@ private async Task<IEnumerable<LogModel>> GetLogsAsync(
6259 return logs . Select ( log => log . ToLogModel ( ) ) . ToList ( ) ;
6360 }
6461
65- private async Task < int > CountLogsAsync ( string level , string searchCriteria )
62+ private async Task < int > CountLogsAsync ( string level , string searchCriteria , DateTime ? startDate , DateTime ? endDate )
6663 {
6764 var builder = Builders < MongoDbLogModel > . Filter . Empty ;
65+ GenerateWhereClause ( ref builder , level , searchCriteria , startDate , endDate ) ;
6866
67+ var count = await _collection . Find ( builder ) . CountDocumentsAsync ( ) ;
68+
69+ return Convert . ToInt32 ( count ) ;
70+ }
71+
72+ private void GenerateWhereClause (
73+ ref FilterDefinition < MongoDbLogModel > builder ,
74+ string level ,
75+ string searchCriteria ,
76+ DateTime ? startDate = null ,
77+ DateTime ? endDate = null )
78+ {
6979 if ( ! string . IsNullOrWhiteSpace ( level ) )
7080 builder &= Builders < MongoDbLogModel > . Filter . Eq ( entry => entry . Level , level ) ;
7181
7282 if ( ! string . IsNullOrWhiteSpace ( searchCriteria ) )
7383 builder &= Builders < MongoDbLogModel > . Filter . Text ( searchCriteria ) ;
7484
75- var count = await _collection . Find ( builder )
76- . CountDocumentsAsync ( ) ;
85+ if ( startDate != null )
86+ builder &= Builders < MongoDbLogModel > . Filter . Gte ( entry => entry . Timestamp , startDate ) ;
7787
78- return Convert . ToInt32 ( count ) ;
88+ if ( endDate != null )
89+ builder &= Builders < MongoDbLogModel > . Filter . Lte ( entry => entry . Timestamp , endDate ) ;
7990 }
8091 }
8192}
0 commit comments