public object GetUserActivity(ActivityDataModel data) { using (var db = new SqlAuditLogDataContext()) { AuditGraph ret = new AuditGraph(); Dictionary <string, AuditGraphEntry> entries = new Dictionary <string, AuditGraphEntry>(); int max = 0; DateTime start = DateTime.Parse(data.Start); DateTime end = DateTime.Parse(data.End).AddDays(1); TimeSpan range = end.Subtract(start); var filter = BuildArrayQuery(data.Filters, data.Field, data.Databases); List <DateTime> dates = new List <DateTime>(); for (int i = 0; i <= range.Days; i++) { dates.Add(start.AddDays(i)); } foreach (string eventType in data.EventTypes) { AuditGraphEntry gentry = new AuditGraphEntry() { Color = GetEventType(eventType).Color }; foreach (var date in dates) { var query = "SELECT count(*) FROM [dbo].[AuditEntry] " + "WHERE {0} <= [Timestamp] AND [Timestamp] <= {1} AND [EventId] = {2} AND " + filter; var sqlAuditLogEntries = db.ExecuteQuery <int>( query, date, date.AddDays(1), eventType) .ToList(); var count = sqlAuditLogEntries.First(); if (count > max) { max = count; } gentry.Coordinates.Add(new AuditGraphCoordinates() { X = date.ToString("yyyy-MM-dd"), Y = count.ToString() }); } entries[eventType] = gentry; } ret.YMax = max.ToString(); ret.YMin = "0"; ret.XMin = start.ToString("yyyy-MM-dd"); ret.XMax = end.ToString("yyyy-MM-dd"); ret.GraphEntries = entries; ret.LogEntries = null; // timeSet; return(ret); } }
private object GetUserActivity(HttpContextBase context) { AuditGraph ret = new AuditGraph(); var data = GetPostData(context); int max = 0; DateTime start = DateTime.Parse(data.start); DateTime end = DateTime.Parse(data.end); TimeSpan range = end.Subtract(start); var filter = BuildArrayQuery(data.filters, data.field); List <string> dates = new List <string>(); for (int i = 0; i <= range.Days; i++) { dates.Add(start.AddDays(i).ToString("yyyyMMdd")); } var searcher = AuditLogger.Current.GetSearcher(); Dictionary <string, AuditGraphEntry> entries = new Dictionary <string, AuditGraphEntry>(); foreach (string eventType in data.eventTypes) { AuditGraphEntry gentry = new AuditGraphEntry() { Color = AuditLogger.Current.GetEventType(eventType).Color }; foreach (string date in dates) { var results = AuditLogger.Current.Query($"date:{date} AND event:{eventType} {(filter.Length > 0 ? "AND ": "") + filter}", searcher); if (results.TotalHits > max) { max = results.TotalHits; } gentry.Coordinates.Add(new AuditGraphCoordinates() { X = date.Insert(6, "-").Insert(4, "-"), Y = results.TotalHits.ToString() }); } entries[eventType] = gentry; } ret.YMax = max.ToString(); ret.YMin = "0"; ret.XMin = start.ToString("yyyy-MM-dd"); ret.XMax = end.ToString("yyyy-MM-dd"); //ret.GraphEntries = activity.Keys.Select(x => new AuditGraphEntry() {X = x, Y = activity[x].ToString()}).ToList(); ret.GraphEntries = entries; ret.LogEntries = null; // timeSet; return(ret); }
public object GetUserActivity(ActivityDataModel data) { AuditGraph ret = new AuditGraph(); int max = 0; DateTime start = DateTime.Parse(data.Start); DateTime end = DateTime.Parse(data.End); TimeSpan range = end.Subtract(start); var filter = BuildArrayQuery(data.Filters, data.Field, data.Databases); List <string> dates = new List <string>(); for (int i = 0; i <= range.Days; i++) { dates.Add(start.AddDays(i).ToString("yyyyMMdd")); } var searcher = GetSearcher(); Dictionary <string, AuditGraphEntry> entries = new Dictionary <string, AuditGraphEntry>(); foreach (string eventType in data.EventTypes) { AuditGraphEntry gentry = new AuditGraphEntry() { Color = GetEventType(eventType).Color }; foreach (string date in dates) { var results = Query($"date:{date} AND event:{eventType} {(filter.Length > 0 ? "AND " : "") + filter}", searcher); if (results.TotalHits > max) { max = results.TotalHits; } gentry.Coordinates.Add(new AuditGraphCoordinates() { X = date.Insert(6, "-").Insert(4, "-"), Y = results.TotalHits.ToString() }); } entries[eventType] = gentry; } ret.YMax = max.ToString(); ret.YMin = "0"; ret.XMin = start.ToString("yyyy-MM-dd"); ret.XMax = end.ToString("yyyy-MM-dd"); ret.GraphEntries = entries; ret.LogEntries = null; // timeSet; return(ret); }