diff --git a/server/AyaNova/Controllers/EventLogController.cs b/server/AyaNova/Controllers/EventLogController.cs index dfb10d28..7624265f 100644 --- a/server/AyaNova/Controllers/EventLogController.cs +++ b/server/AyaNova/Controllers/EventLogController.cs @@ -43,7 +43,7 @@ namespace AyaNova.Api.Controllers } - + /// /// Get event log for object and date range specified @@ -66,12 +66,8 @@ namespace AyaNova.Api.Controllers return StatusCode(401, new ApiNotAuthorizedResponse()); } - var result = await EventLogProcessor.GetLogForObject(opt.AyId, UserLocaleIdFromContext.LocaleId(HttpContext.Items), ct); - - //Log - EventLogProcessor.AddEntry(new Event(UserIdFromContext.Id(HttpContext.Items), 0, AyaType.Metrics, AyaEvent.Retrieved), ct); - - return Content(result); + var result = await EventLogProcessor.GetLogForObject(opt, ct); + return Ok(new ApiOkResponse(result)); } @@ -106,12 +102,9 @@ namespace AyaNova.Api.Controllers return StatusCode(401, new ApiNotAuthorizedResponse()); } - var result = await EventLogProcessor.GetLogForUser(opt.AyId, UserLocaleIdFromContext.LocaleId(HttpContext.Items), ct); + var result = await EventLogProcessor.GetLogForUser(opt, ct); - //Log - EventLogProcessor.AddEntry(new Event(UserId, 0, AyaType.Metrics, AyaEvent.Retrieved), ct); - - return Content(result); + return Ok(new ApiOkResponse(result)); } @@ -127,10 +120,32 @@ namespace AyaNova.Api.Controllers [FromQuery] public long AyId { get; set; } [FromQuery] - public DateTime StartDate { get; set; } + public DateTime? StartDate { get; set; } [FromQuery] - public DateTime EndDate { get; set; } + public DateTime? EndDate { get; set; } } + + + public sealed class ObjectEventLogItem + { + //DateTime, UserId, Event, Textra + public DateTime Date { get; set; } + public long UserId { get; set; } + public AyaEvent Event { get; set; } + public string Textra { get; set; } + } + + public sealed class UserEventLogItem + { + //DateTime, ObjectType, ObjectId, Event, Textra + public DateTime Date { get; set; } + public AyaType Type { get; set; } + public long ObjectId { get; set; } + public AyaEvent Event { get; set; } + public string Textra { get; set; } + } + + }//eoc }//eons \ No newline at end of file diff --git a/server/AyaNova/biz/EventLogProcessor.cs b/server/AyaNova/biz/EventLogProcessor.cs index 4e3b9ad7..8d1b6629 100644 --- a/server/AyaNova/biz/EventLogProcessor.cs +++ b/server/AyaNova/biz/EventLogProcessor.cs @@ -47,26 +47,44 @@ namespace AyaNova.Biz /// /// Get the event log for a specified object /// - internal static async Task GetLogForObject(long ayId, DateTime StartDate, DateTime EndDate, AyContext ct) + internal static async Task GetLogForObject(AyaNova.Api.Controllers.EventLogController.EventLogOptions opt, AyContext ct) { - var items = await ct.Event - .Where(m => m.AyId == ayId) - .OrderBy(m => m.Created) - .ToListAsync(); + //This is also an example of conditional where statements - if (items.Count == 0) + //Set up the query + var q = ct.Event.Select(m => m); + + + 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); + + //Execute the query + var EventItems = await q.ToArrayAsync(); + + //convert the Event array to the correct return type array + var ret = EventItems.Select(m => new AyaNova.Api.Controllers.EventLogController.ObjectEventLogItem() { - return ""; - } + Date = m.Created, + UserId = m.OwnerId, + Event = m.AyEvent, + Textra = m.Textra + }).ToArray(); - - - - + return ret; } - internal static Task GetLogForUser(long ayId, long userLocaleId, AyContext ct) + + + + internal static Task GetLogForUser(AyaNova.Api.Controllers.EventLogController.EventLogOptions opt, AyContext ct) { throw new NotImplementedException(); } @@ -75,7 +93,7 @@ namespace AyaNova.Biz internal static string BuildLogEntry(bool userFormat, Event ev, List> lt) { - StringBuilder S=new StringBuilder(); + StringBuilder S = new StringBuilder(); //Object format: //DateTime, UserId, ActionNumber, Textra @@ -84,11 +102,13 @@ namespace AyaNova.Biz //DateTime, ObjectType, ObjectId, ActionNumber, Textra ev - - switch(ev.AyEvent){ + + + switch (ev.AyEvent) + { case AyaEvent.Created: - break; + break; } return ":";