From b46b9dcf7205bcab3abcc785245774fd6f009fa6 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Fri, 10 Apr 2020 18:38:32 +0000 Subject: [PATCH] --- .../AyaNova/Controllers/EventLogController.cs | 15 ++++++++++--- server/AyaNova/biz/EventLogProcessor.cs | 22 ++++++------------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/server/AyaNova/Controllers/EventLogController.cs b/server/AyaNova/Controllers/EventLogController.cs index dc961d33..a0242b61 100644 --- a/server/AyaNova/Controllers/EventLogController.cs +++ b/server/AyaNova/Controllers/EventLogController.cs @@ -75,7 +75,7 @@ namespace AyaNova.Api.Controllers /// /// Event log for user [HttpGet("UserLog")] - public async Task GetUserLog([FromQuery] EventLogOptions opt) + public async Task GetUserLog([FromQuery] UserEventLogOptions opt) { if (serverState.IsClosed) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); @@ -112,12 +112,21 @@ namespace AyaNova.Api.Controllers [FromQuery] public long AyId { get; set; } [FromQuery] - public DateTime? StartDate { get; set; } + public int? Offset { get; set; } [FromQuery] - public DateTime? EndDate { get; set; } + public int? Limit { get; set; } } + public sealed class UserEventLogOptions + { + [FromQuery] + public long AyId { get; set; } + [FromQuery] + public int? Offset { get; set; } + [FromQuery] + public int? Limit { get; set; } + } public sealed class ObjectEventLogItem { diff --git a/server/AyaNova/biz/EventLogProcessor.cs b/server/AyaNova/biz/EventLogProcessor.cs index 71b19b0c..e159815f 100644 --- a/server/AyaNova/biz/EventLogProcessor.cs +++ b/server/AyaNova/biz/EventLogProcessor.cs @@ -52,13 +52,9 @@ namespace AyaNova.Biz var q = ct.Event.Select(m => m).AsNoTracking(); q = q.Where(m => m.AyId == opt.AyId); - - if (opt.StartDate != null) - q = q.Where(m => m.Created > opt.StartDate); - - if (opt.EndDate != null) - q = q.Where(m => m.Created < opt.EndDate); - + q = q.OrderBy(m => m.Created); + var limit = opt.Limit ?? 100; + var offset = opt.Offset ?? 0; q = q.OrderBy(m => m.Created); //Execute the query @@ -82,20 +78,16 @@ namespace AyaNova.Biz /// Get the event log for a specified User /// Presentation is the client's responsibility (localization internationalization etc) /// - internal static async Task GetLogForUserAsync(AyaNova.Api.Controllers.EventLogController.EventLogOptions opt, AyContext ct) + internal static async Task GetLogForUserAsync(AyaNova.Api.Controllers.EventLogController.UserEventLogOptions opt, AyContext ct) { //Set up the query var q = ct.Event.Select(m => m); q = q.Where(m => m.UserId == opt.AyId); - - if (opt.StartDate != null) - q = q.Where(m => m.Created > opt.StartDate); - - if (opt.EndDate != null) - q = q.Where(m => m.Created < opt.EndDate); - + var limit = opt.Limit ?? 100; + var offset = opt.Offset ?? 0; q = q.OrderBy(m => m.Created); + q.Skip(offset).Take(limit); //Execute the query var EventItems = await q.ToArrayAsync();