2015-02-17 10:55:11 +01:00
|
|
|
using NotificationsWeb.Models;
|
|
|
|
|
using System;
|
2015-02-17 10:23:41 +01:00
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using Umbraco.Core;
|
2015-02-17 10:55:11 +01:00
|
|
|
using Umbraco.Core.Persistence;
|
2015-02-17 10:23:41 +01:00
|
|
|
|
|
|
|
|
namespace NotificationsWeb.Services
|
|
|
|
|
{
|
2015-03-02 13:52:07 +11:00
|
|
|
public class NotificationService
|
2015-02-17 10:23:41 +01:00
|
|
|
{
|
2015-03-02 13:52:07 +11:00
|
|
|
private readonly DatabaseContext _databaseContext;
|
2015-02-17 10:23:41 +01:00
|
|
|
|
|
|
|
|
public NotificationService(DatabaseContext dbContext)
|
|
|
|
|
{
|
2015-03-02 13:52:07 +11:00
|
|
|
if (dbContext == null) throw new ArgumentNullException("dbContext");
|
|
|
|
|
_databaseContext = dbContext;
|
2015-02-17 10:23:41 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2015-02-17 12:03:42 +01:00
|
|
|
public void SubscribeToForumTopic(int topicId, int memberId)
|
2015-02-17 11:04:50 +01:00
|
|
|
{
|
2015-03-02 13:52:07 +11:00
|
|
|
var r = _databaseContext.Database.SingleOrDefault<ForumTopicSubscriber>(
|
2015-02-17 11:51:06 +01:00
|
|
|
"SELECT * FROM forumtopicsubscribers WHERE topicId=@0 and memberId=@1",
|
|
|
|
|
topicId,
|
2015-02-17 12:03:42 +01:00
|
|
|
memberId);
|
2015-02-17 11:51:06 +01:00
|
|
|
|
|
|
|
|
if(r == null)
|
|
|
|
|
{
|
|
|
|
|
var rec = new ForumTopicSubscriber();
|
2015-02-17 12:03:42 +01:00
|
|
|
rec.MemberId = memberId;
|
2015-02-17 11:51:06 +01:00
|
|
|
rec.TopicId = topicId;
|
|
|
|
|
|
2015-03-02 13:52:07 +11:00
|
|
|
_databaseContext.Database.Insert(rec);
|
2015-02-17 11:51:06 +01:00
|
|
|
}
|
2015-02-17 10:55:11 +01:00
|
|
|
|
2015-02-17 11:04:50 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void UnSubscribeFromForumTopic(int topicId, int memberId)
|
|
|
|
|
{
|
2015-03-02 13:52:07 +11:00
|
|
|
_databaseContext.Database.Delete<ForumTopicSubscriber>(
|
2015-02-17 11:51:06 +01:00
|
|
|
"Where topicId=@0 and memberId=@1",
|
|
|
|
|
topicId,
|
|
|
|
|
memberId);
|
|
|
|
|
|
2015-02-17 11:04:50 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void RemoveAllTopicSubscriptions(int topicId)
|
|
|
|
|
{
|
2015-03-02 13:52:07 +11:00
|
|
|
_databaseContext.Database.Delete<ForumTopicSubscriber>(
|
2015-02-17 11:51:06 +01:00
|
|
|
"Where topicId=@0",
|
|
|
|
|
topicId);
|
2015-02-17 11:04:50 +01:00
|
|
|
}
|
|
|
|
|
|
2015-02-17 11:51:06 +01:00
|
|
|
public bool IsSubscribedToTopic(int topicId, int memberId)
|
2015-02-17 11:04:50 +01:00
|
|
|
{
|
2015-03-02 13:52:07 +11:00
|
|
|
return _databaseContext.Database.SingleOrDefault<ForumTopicSubscriber>(
|
2015-02-17 12:03:42 +01:00
|
|
|
"SELECT * FROM forumtopicsubscribers WHERE topicId=@0 and memberId=@1",
|
|
|
|
|
topicId,
|
|
|
|
|
memberId) != null;
|
2015-02-17 11:04:50 +01:00
|
|
|
|
|
|
|
|
}
|
2015-02-17 12:03:42 +01:00
|
|
|
public void SubscribeToForum(int forumId, int memberId)
|
2015-02-17 11:04:50 +01:00
|
|
|
{
|
2015-03-02 13:52:07 +11:00
|
|
|
var r = _databaseContext.Database.SingleOrDefault<ForumSubscriber>(
|
2015-02-17 11:51:06 +01:00
|
|
|
"SELECT * FROM forumsubscribers WHERE forumId=@0 and memberId=@1",
|
|
|
|
|
forumId,
|
2015-02-17 12:03:42 +01:00
|
|
|
memberId);
|
2015-02-17 11:04:50 +01:00
|
|
|
|
2015-02-17 11:51:06 +01:00
|
|
|
if (r == null)
|
|
|
|
|
{
|
|
|
|
|
var rec = new ForumSubscriber();
|
2015-02-17 12:03:42 +01:00
|
|
|
rec.MemberId = memberId;
|
2015-02-17 11:51:06 +01:00
|
|
|
rec.ForumId = forumId;
|
|
|
|
|
|
2015-03-02 13:52:07 +11:00
|
|
|
_databaseContext.Database.Insert(rec);
|
2015-02-17 11:51:06 +01:00
|
|
|
}
|
2015-02-17 11:04:50 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void UnSubscribeFromForum(int forumId, int memberId)
|
|
|
|
|
{
|
2015-03-02 13:52:07 +11:00
|
|
|
_databaseContext.Database.Delete<ForumSubscriber>(
|
2015-02-17 11:51:06 +01:00
|
|
|
"Where forumId=@0 and memberId=@1",
|
|
|
|
|
forumId,
|
|
|
|
|
memberId);
|
2015-02-17 11:04:50 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void RemoveAllForumSubscriptions(int forumId)
|
|
|
|
|
{
|
2015-03-02 13:52:07 +11:00
|
|
|
_databaseContext.Database.Delete<ForumSubscriber>(
|
2015-02-17 11:51:06 +01:00
|
|
|
"Where forumId=@0",
|
|
|
|
|
forumId);
|
2015-02-17 11:04:50 +01:00
|
|
|
}
|
|
|
|
|
|
2015-02-17 11:51:06 +01:00
|
|
|
public bool IsSubscribedToForum(int forumId, int memberId)
|
2015-02-17 11:04:50 +01:00
|
|
|
{
|
2015-03-02 13:52:07 +11:00
|
|
|
return _databaseContext.Database.SingleOrDefault<ForumSubscriber>(
|
2015-02-17 12:03:42 +01:00
|
|
|
"SELECT * FROM forumsubscribers WHERE forumId=@0 and memberId=@1",
|
|
|
|
|
forumId,
|
|
|
|
|
memberId) != null;
|
2015-02-17 11:04:50 +01:00
|
|
|
}
|
2015-02-17 10:55:11 +01:00
|
|
|
public Page<ForumSubscriber> GetForumSubscriptionsFromMember(int memberId, long take = 50, long page = 1)
|
|
|
|
|
{
|
|
|
|
|
var sql = new Sql()
|
|
|
|
|
.Select("*")
|
|
|
|
|
.From<ForumSubscriber>();
|
|
|
|
|
|
|
|
|
|
sql.Where<ForumSubscriber>(x => x.MemberId == memberId);
|
|
|
|
|
|
2015-03-02 13:52:07 +11:00
|
|
|
return _databaseContext.Database.Page<ForumSubscriber>(page, take, sql);
|
2015-02-17 10:55:11 +01:00
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-23 10:58:42 +01:00
|
|
|
public long GetNumberOfForumSubscriptionsFromMember(int memberId)
|
|
|
|
|
{
|
2015-03-02 13:52:07 +11:00
|
|
|
return _databaseContext.Database.ExecuteScalar<long>("SELECT Count(*) FROM forumSubscribers where memberId=@0",memberId);
|
2015-02-23 10:58:42 +01:00
|
|
|
}
|
|
|
|
|
|
2015-02-17 10:55:11 +01:00
|
|
|
public Page<ForumTopicSubscriber> GetTopicSubscriptionsFromMember(int memberId, long take = 50, long page = 1)
|
|
|
|
|
{
|
|
|
|
|
var sql = new Sql()
|
|
|
|
|
.Select("*")
|
|
|
|
|
.From<ForumTopicSubscriber>();
|
|
|
|
|
|
|
|
|
|
sql.Where<ForumTopicSubscriber>(x => x.MemberId == memberId);
|
|
|
|
|
|
2015-03-02 13:52:07 +11:00
|
|
|
return _databaseContext.Database.Page<ForumTopicSubscriber>(page, take, sql);
|
2015-02-17 10:55:11 +01:00
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-23 10:58:42 +01:00
|
|
|
public long GetNumberOfTopicSubscriptionsFromMember(int memberId)
|
|
|
|
|
{
|
2015-03-02 13:52:07 +11:00
|
|
|
return _databaseContext.Database.ExecuteScalar<long>("SELECT Count(*) FROM forumTopicSubscribers where memberId=@0",memberId);
|
2015-02-23 10:58:42 +01:00
|
|
|
}
|
|
|
|
|
|
2015-02-17 10:23:41 +01:00
|
|
|
}
|
|
|
|
|
}
|