Перейти к содержанию

Расширение на перехват действий в обсуждениях

Расширение на перехват действий в обсуждениях

Реализация расширения

public class ForumCardRequestExtension : CardRequestExtension { private static readonly Func<Dictionary<string, object>, ForumProviderExtensions.ForumProviderAddTopicRequestObject> topicRequestFactory = p => new ForumProviderExtensions.ForumProviderAddTopicRequestObject(p);

private static readonly Func<Dictionary<string, object>, ForumProviderExtensions.ForumProviderSendMessageRequestObject> messageRequestFactory = p => new ForumProviderExtensions.ForumProviderSendMessageRequestObject(p);

private static readonly Func<Dictionary<string, object>, ForumProviderExtensions.ForumProviderParticipantsRequestObject> participantsRequestFactory = p => new ForumProviderExtensions.ForumProviderParticipantsRequestObject(p);

#region Base Overrides

public override async Task AfterRequest(ICardRequestExtensionContext context) { if (!context.RequestIsSuccessful) { return; }

if (context.RequestType == ForumProviderExtensions.ForumRequestTypes.AddTopic) { var rObj = context.Request.GetRequestObject(topicRequestFactory);

var title = rObj.Topic.Title; var description = rObj.Topic.Description; }

if(context.RequestType == ForumProviderExtensions.ForumRequestTypes.AddMessage) { var rObj = context.Request.GetRequestObject(messageRequestFactory); var message = rObj.Message;

var htmlText = message.Body.Text; var authorID = message.AuthorID; }

if(context.RequestType == ForumProviderExtensions.ForumRequestTypes.AddParticipants) { var rObj = context.Request.GetRequestObject(participantsRequestFactory); var userIDs = rObj.Participants.ToList(); }

if(context.RequestType == ForumProviderExtensions.ForumRequestTypes.AddRoles) { var rObj = context.Request.GetRequestObject(participantsRequestFactory); var rolesIDs = rObj.Participants.ToList(); } }

#endregion }

Регистрация расширения

[Registrator] public sealed class Registrator : RegistratorBase { public override void RegisterExtensions(IExtensionContainer extensionContainer) { extensionContainer .RegisterExtension<ICardRequestExtension, ForumCardRequestExtension>(x => x .WithOrder(ExtensionStage.BeforePlatform, 1) .WithUnity(this.UnityContainer) .WhenRequestTypes( ForumProviderExtensions.ForumRequestTypes.AddTopic, ForumProviderExtensions.ForumRequestTypes.AddParticipants, ForumProviderExtensions.ForumRequestTypes.AddRoles, ForumProviderExtensions.ForumRequestTypes.AddMessage)); } }

Back to top