This commit is contained in:
2018-08-28 17:30:56 +00:00
parent d995ce608b
commit db73345bca
2 changed files with 66 additions and 31 deletions

View File

@@ -43,7 +43,7 @@ namespace AyaNova.Api.Controllers
} }
/// <summary> /// <summary>
/// Get event log for object and date range specified /// Get event log for object and date range specified
@@ -66,12 +66,8 @@ namespace AyaNova.Api.Controllers
return StatusCode(401, new ApiNotAuthorizedResponse()); return StatusCode(401, new ApiNotAuthorizedResponse());
} }
var result = await EventLogProcessor.GetLogForObject(opt.AyId, UserLocaleIdFromContext.LocaleId(HttpContext.Items), ct); var result = await EventLogProcessor.GetLogForObject(opt, ct);
return Ok(new ApiOkResponse(result));
//Log
EventLogProcessor.AddEntry(new Event(UserIdFromContext.Id(HttpContext.Items), 0, AyaType.Metrics, AyaEvent.Retrieved), ct);
return Content(result);
} }
@@ -106,12 +102,9 @@ namespace AyaNova.Api.Controllers
return StatusCode(401, new ApiNotAuthorizedResponse()); 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 return Ok(new ApiOkResponse(result));
EventLogProcessor.AddEntry(new Event(UserId, 0, AyaType.Metrics, AyaEvent.Retrieved), ct);
return Content(result);
} }
@@ -127,10 +120,32 @@ namespace AyaNova.Api.Controllers
[FromQuery] [FromQuery]
public long AyId { get; set; } public long AyId { get; set; }
[FromQuery] [FromQuery]
public DateTime StartDate { get; set; } public DateTime? StartDate { get; set; }
[FromQuery] [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 }//eoc
}//eons }//eons

View File

@@ -47,26 +47,44 @@ namespace AyaNova.Biz
/// <summary> /// <summary>
/// Get the event log for a specified object /// Get the event log for a specified object
/// </summary> /// </summary>
internal static async Task<string> GetLogForObject(long ayId, DateTime StartDate, DateTime EndDate, AyContext ct) internal static async Task<AyaNova.Api.Controllers.EventLogController.ObjectEventLogItem[]> GetLogForObject(AyaNova.Api.Controllers.EventLogController.EventLogOptions opt, AyContext ct)
{ {
var items = await ct.Event //This is also an example of conditional where statements
.Where(m => m.AyId == ayId)
.OrderBy(m => m.Created)
.ToListAsync();
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<string> GetLogForUser(long ayId, long userLocaleId, AyContext ct)
internal static Task<string> GetLogForUser(AyaNova.Api.Controllers.EventLogController.EventLogOptions opt, AyContext ct)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
@@ -75,7 +93,7 @@ namespace AyaNova.Biz
internal static string BuildLogEntry(bool userFormat, Event ev, List<KeyValuePair<string, string>> lt) internal static string BuildLogEntry(bool userFormat, Event ev, List<KeyValuePair<string, string>> lt)
{ {
StringBuilder S=new StringBuilder(); StringBuilder S = new StringBuilder();
//Object format: //Object format:
//DateTime, UserId, ActionNumber, Textra //DateTime, UserId, ActionNumber, Textra
@@ -84,11 +102,13 @@ namespace AyaNova.Biz
//DateTime, ObjectType, ObjectId, ActionNumber, Textra //DateTime, ObjectType, ObjectId, ActionNumber, Textra
ev ev
switch(ev.AyEvent){
switch (ev.AyEvent)
{
case AyaEvent.Created: case AyaEvent.Created:
break; break;
} }
return ":"; return ":";