This commit is contained in:
2020-04-10 18:38:32 +00:00
parent 590558362c
commit b46b9dcf72
2 changed files with 19 additions and 18 deletions

View File

@@ -75,7 +75,7 @@ namespace AyaNova.Api.Controllers
/// </summary> /// </summary>
/// <returns>Event log for user</returns> /// <returns>Event log for user</returns>
[HttpGet("UserLog")] [HttpGet("UserLog")]
public async Task<IActionResult> GetUserLog([FromQuery] EventLogOptions opt) public async Task<IActionResult> GetUserLog([FromQuery] UserEventLogOptions opt)
{ {
if (serverState.IsClosed) if (serverState.IsClosed)
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
@@ -112,12 +112,21 @@ namespace AyaNova.Api.Controllers
[FromQuery] [FromQuery]
public long AyId { get; set; } public long AyId { get; set; }
[FromQuery] [FromQuery]
public DateTime? StartDate { get; set; } public int? Offset { get; set; }
[FromQuery] [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 public sealed class ObjectEventLogItem
{ {

View File

@@ -52,13 +52,9 @@ namespace AyaNova.Biz
var q = ct.Event.Select(m => m).AsNoTracking(); var q = ct.Event.Select(m => m).AsNoTracking();
q = q.Where(m => m.AyId == opt.AyId); q = q.Where(m => m.AyId == opt.AyId);
q = q.OrderBy(m => m.Created);
if (opt.StartDate != null) var limit = opt.Limit ?? 100;
q = q.Where(m => m.Created > opt.StartDate); var offset = opt.Offset ?? 0;
if (opt.EndDate != null)
q = q.Where(m => m.Created < opt.EndDate);
q = q.OrderBy(m => m.Created); q = q.OrderBy(m => m.Created);
//Execute the query //Execute the query
@@ -82,20 +78,16 @@ namespace AyaNova.Biz
/// Get the event log for a specified User /// Get the event log for a specified User
/// Presentation is the client's responsibility (localization internationalization etc) /// Presentation is the client's responsibility (localization internationalization etc)
/// </summary> /// </summary>
internal static async Task<AyaNova.Api.Controllers.EventLogController.UserEventLogItem[]> GetLogForUserAsync(AyaNova.Api.Controllers.EventLogController.EventLogOptions opt, AyContext ct) internal static async Task<AyaNova.Api.Controllers.EventLogController.UserEventLogItem[]> GetLogForUserAsync(AyaNova.Api.Controllers.EventLogController.UserEventLogOptions opt, AyContext ct)
{ {
//Set up the query //Set up the query
var q = ct.Event.Select(m => m); var q = ct.Event.Select(m => m);
q = q.Where(m => m.UserId == opt.AyId); q = q.Where(m => m.UserId == opt.AyId);
var limit = opt.Limit ?? 100;
if (opt.StartDate != null) var offset = opt.Offset ?? 0;
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); q = q.OrderBy(m => m.Created);
q.Skip(offset).Take(limit);
//Execute the query //Execute the query
var EventItems = await q.ToArrayAsync(); var EventItems = await q.ToArrayAsync();