/// <summary> /// Gets the audit log data for the specified filter parameters /// </summary> /// <param name="affectedUserId">The user Id who was affected by an action</param> /// <param name="performingUserId">The user Id who performed the action</param> /// <param name="dateFrom">The date to search from</param> /// <param name="searchTerm">An optional search term</param> /// <param name="dateTo">The date to search up to (inclusive)</param> /// <param name="itemsPerPage">How many items per page to retrieve (default = 50)</param> /// <param name="pageNumber">The page number</param> /// <param name="sortColumn">The column name to sort by (default = date)</param> /// <param name="sortOrder">The sort order - either ascending or descending (default = ascending)</param> /// <returns>A paged list of log data</returns> /// <remarks>/Umbraco/Backoffice/AuditLogViewer/AuditLog/GetLogData</remarks> public PagedLogEntryResult <AuditEntry> GetLogData(string eventType = null, int?performingUserId = null, int?affectedUserId = null, DateTime?dateFrom = null, DateTime?dateTo = null, int itemsPerPage = 50, int pageNumber = 1, string sortColumn = "eventDateUtc", string sortOrder = "asc", string searchTerm = null) { var request = new AuditLogSearchRequest() { EventType = eventType, PerformingUserId = performingUserId, AffectedUserId = affectedUserId, DateFrom = dateFrom, DateTo = dateTo, ItemsPerPage = itemsPerPage, PageNumber = pageNumber, SearchTerm = searchTerm, SortColumn = sortColumn, SortOrder = sortOrder }; var paged = this._logService.SearchLog(request); var result = new PagedLogEntryResult <AuditEntry>() { CurrentPage = paged.CurrentPage, ItemsPerPage = paged.ItemsPerPage, LogEntries = paged.Items, TotalItems = paged.TotalItems, TotalPages = paged.TotalPages }; return(result); }
public Page <AuditEntry> SearchLog(AuditLogSearchRequest request) { const string sqlBase = @"SELECT id, performingUserId, performingDetails, performingIp, eventDateUtc, affectedUserId, affectedDetails, eventType, eventDetails FROM umbracoAudit WHERE 1 = 1"; using (var scope = this.scopeProvider.CreateScope(autoComplete: true)) { var query = scope.SqlContext.Sql(sqlBase); if (request.AffectedUserId.HasValue) { query = query.Append(" AND affectedUserId = @0", request.AffectedUserId.Value); } if (request.PerformingUserId.HasValue) { query = query.Append(" AND performingUserId = @0", request.PerformingUserId.Value); } if (!string.IsNullOrEmpty(request.EventType)) { query = query.Append(" AND eventType = @0", request.EventType); } if (request.DateFrom.HasValue) { query = query.Append(" AND eventDateUtc >= @0", request.DateFrom.Value); } if (request.DateTo.HasValue) { query = query.Append(" AND eventDateUtc <= @0", request.DateTo.Value.AddDays(1)); } if (!string.IsNullOrEmpty(request.SearchTerm)) { query = query.Append(" AND (performingDetails LIKE @0 OR affectedDetails LIKE @0 OR eventDetails LIKE @0 OR performingIp LIKE @0)", "%" + request.SearchTerm + "%"); } if (request.SortOrder == "desc") { query.OrderByDescending(request.SortColumn); } else { query.OrderBy(request.SortColumn); } return(scope.Database.Page <AuditEntry>(request.PageNumber, request.ItemsPerPage, query)); } }
/// <inheritdoc/> public ClientResponse <AuditLogSearchResponse> SearchAuditLogs(AuditLogSearchRequest request) { return(client.SearchAuditLogsAsync(request).GetAwaiter().GetResult()); }