// public async Task<dynamic> BuildFilterDisplayAsync(Filters filters) { // var filterDisplay = await (dynamic)_shapeFactory.CreateAsync( "AuditTrailFilter"); // var filterDisplayContext = new DisplayFilterContext(_shapeFactory, filters, filterDisplay); // // var _auditTrailEventHandlers= _serviceProvider.GetRequiredService<IAuditTrailEventHandler>(); // // // Invoke event handlers. // await _auditTrailEventHandlers.DisplayFilterAsync(filterDisplayContext); // // // Give each provider a chance to provide a filter display. // var providersContext = DescribeProviders(); // // foreach (var action in providersContext.FilterDisplays) { // action(filterDisplayContext); // } // // return filterDisplay; // } /// <summary> /// Records an audit trail event. /// </summary> /// <typeparam name="T">The audit trail event provider type to determine the scope of the event name.</typeparam> /// <param name="eventName">The shorthand name of the event</param> /// <param name="user">The user to associate with the event. This is typically the currently loggedin user.</param> /// <param name="properties">A property bag of custom event data that could be useful for <see cref="IAuditTrailEventHandler"/> implementations. These values aren't stored. Use the eventData parameter to persist additional data with the event.</param> /// <param name="eventData">A property bag of custom event data that will be stored with the event record.</param> /// <param name="eventFilterKey">The name of a custom key to use when filtering events.</param> /// <param name="eventFilterData">The value of a custom filter key to filter on.</param> /// <returns>The created audit trail event record if the specified event was not disabled.</returns> public async Task <ActivityStreamEventResult> CreateRecord <T>(string eventName, string user, IDictionary <string, object> properties = null, IDictionary <string, object> eventData = null, string eventFilterKey = null, string eventFilterData = null) where T : IActivityStreamEventProvider { var eventDescriptor = DescribeEvent <T>(eventName); // if (!await(IsEventEnabled(eventDescriptor))) if (!(IsEventEnabled(eventDescriptor))) { return new ActivityStreamEventResult { Record = null, IsDisabled = true } } ; if (properties == null) { properties = new Dictionary <string, object>(); } if (eventData == null) { eventData = new Dictionary <string, object>(); } var context = new ActivityStreamCreateContext { Event = eventName, User = user, Properties = properties, EventData = eventData // EventFilterKey = eventFilterKey, // EventFilterData = eventFilterData }; // var _auditTrailEventHandlers= _serviceProvider.GetRequiredService<IActivityStreamEventHandler>(); var activityStreamProvider = _serviceProvider.GetRequiredService <IActivityStreamEventProvider>(); // await _auditTrailEventHandlers.Create(context); await activityStreamProvider.ExecuteAsync(context); string loggedinuser = _httpContextAccessor.HttpContext?.User.Identity.Name; var record = new ActivityStreamItem { Category = eventDescriptor.CategoryDescriptor.Category, EventName = eventName, FullEventName = eventDescriptor.Event, CreatedUtc = _clock.UtcNow, User = !string.IsNullOrEmpty(loggedinuser) ? loggedinuser : null, ActivityStreamData = JsonConvert.SerializeObject(context.EventData)// _serializer.Serialize(context.EventData), // EventFilterKey = context.EventFilterKey, // EventFilterData = context.EventFilterData, // Comment = context.Comment, // ClientIpAddress = GetClientAddress().GetAwaiter().GetResult() }; // _auditTrailRepository.Create(record); // await _auditTrailRepository.SaveAsync(record); await _activityStreamRepository.InsertAsync(record); return(new ActivityStreamEventResult { Record = record, IsDisabled = false }); }
protected void SetupFromItem(ActivityStreamItem item) { FriendlyDate = DateTimeUtil.FriendlyDate(item.PostedTime); Title = item.Target.Title; if ("thread-topic" == item.Object.ObjectType) { LineOne = "Title: " + item.Target.Title; IconTemplate = "IconDiscussionsResponses"; NavigationPath = "/Views/DiscussionPage.xaml?topicId=" + item.Object.ReferenceId; } else if ("thread-post" == item.Object.ObjectType) { LineOne = "Re: " + item.Target.Title; IconTemplate = "IconDiscussionsResponses"; NavigationPath = "/Views/DiscussionPage.xaml?responseId=" + item.Object.ReferenceId; } else if ("grade" == item.Object.ObjectType) { LineOne = "Grade: " + item.Target.Title; IconTemplate = "IconGrade"; NavigationPath = "/Views/GradePage.xaml?courseId=" + item.Object.CourseId + "&gradebookItemGuid=" + item.Target.ReferenceId; } else if ("dropbox-submission" == item.Object.ObjectType) { LineOne = "Dropbox: " + item.Target.Title; IconTemplate = "IconDropbox"; NavigationPath = "/Views/DropboxMessagePage.xaml?courseId=" + item.Object.CourseId + "&basketId=" + item.Target.ReferenceId + "&messageId=" + item.Object.ReferenceId; NavigationPath += "&title=" + HttpUtility.UrlEncode(item.Target.Title); } else { LineOne = item.Object.ObjectType + ": " + item.Target.Title; IconTemplate = "IconHelp"; } LineTwo = item.Object.Summary; Course c; if (AppViewModel.Courses.CourseIdMap.TryGetValue(item.Object.CourseId, out c)) { LineThree = c.Title + " (" + c.DisplayCourseCode + ")"; } else { LineThree = "Unknown Course"; } }
public ActivityViewModel(ActivityStreamItem item) : base() { SetupFromItem(item); }
/// <summary> /// Describes a single audit trail event. /// </summary> /// <param name="record">The audit trail event record for which to find its descriptor.</param> /// <returns>A single audit trail event descriptor.</returns> public ActivityStreamEventDescriptor DescribeEvent(ActivityStreamItem record) { return(DescribeEvent(record.FullEventName) ?? ActivityStreamEventDescriptor.Basic(record)); }