Files
OurUmbraco/NotificationsWeb/EventHandlers/Forum.cs
T
2015-07-26 12:31:15 +02:00

93 lines
3.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using NotificationsCore;
using umbraco.presentation.nodeFactory;
using umbraco.cms.businesslogic.member;
using Umbraco.Core;
using NotificationsWeb.Services;
using OurUmbraco.Forum;
using OurUmbraco.Forum.Services;
using Umbraco.Web.Security;
namespace NotificationsWeb.EventHandlers
{
public class Forum : ApplicationEventHandler
{
protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
//sub comment author to topic
CommentService.Created += CommentService_Created;
//sub owner to topic
TopicService.Created += TopicService_Created;
//If its a project forum, subscribe the owner to all topics
ForumService.Created += ForumService_Created;
//remove all forum subs
ForumService.Deleted += ForumService_Deleted;
}
void ForumService_Deleted(object sender, ForumEventArgs e)
{
var ns = new NotificationService(ApplicationContext.Current.DatabaseContext);
ns.RemoveAllForumSubscriptions(e.Forum.Id);
}
void ForumService_Created(object sender, ForumEventArgs e)
{
var content = Umbraco.Web.UmbracoContext.Current.Application.Services.ContentService.GetById(e.Forum.ParentId);
if (content.ContentType.Alias == "Project")
{
var owner = content.GetValue<int>("owner");
//NotificationsWeb.BusinessLogic.Forum.Subscribe(e.Forum.Id, owner);
var ns = new NotificationService(ApplicationContext.Current.DatabaseContext);
ns.SubscribeToForum(e.Forum.Id, owner);
}
}
void TopicService_Created(object sender, TopicEventArgs e)
{
var ns = new NotificationService(ApplicationContext.Current.DatabaseContext);
ns.SubscribeToForumTopic(e.Topic.Id, e.Topic.MemberId);
//send notification
InstantNotification not = new InstantNotification();
//data for notification:
var membershipHelper = new MembershipHelper(Umbraco.Web.UmbracoContext.Current);
var member = membershipHelper.GetById(e.Topic.MemberId);
var memberName = string.Empty;
if (member != null)
memberName = member.Name;
not.Invoke(Config.ConfigurationFile, Config.AssemblyDir, "NewTopic", e.Topic, e.Topic.GetUrl(), memberName);
}
void CommentService_Created(object sender, CommentEventArgs e)
{
var ts = new TopicService(ApplicationContext.Current.DatabaseContext);
//Subscribe to topic
var ns = new NotificationService(ApplicationContext.Current.DatabaseContext);
ns.SubscribeToForumTopic(e.Comment.TopicId, e.Comment.MemberId);
//data for notification:
var membershipHelper = new MembershipHelper(Umbraco.Web.UmbracoContext.Current);
var member = membershipHelper.GetById(e.Comment.MemberId);
var memberName = string.Empty;
if (member != null)
memberName = member.Name;
var topic = ts.GetById(e.Comment.TopicId);
//send notifications
InstantNotification not = new InstantNotification();
not.Invoke(Config.ConfigurationFile, Config.AssemblyDir, "NewComment", e.Comment, topic, topic.GetUrl(), memberName);
}
}
}