Beispiel #1
0
        //        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);
 }
Beispiel #4
0
 /// <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));
 }