示例#1
0
        /// <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);
        }
示例#2
0
        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));
            }
        }
示例#3
0
 /// <inheritdoc/>
 public ClientResponse <AuditLogSearchResponse> SearchAuditLogs(AuditLogSearchRequest request)
 {
     return(client.SearchAuditLogsAsync(request).GetAwaiter().GetResult());
 }