public override Message CreateMessage(Topic topic, string idParentMessage, string owner, string title, string body, Attachment.FileInfo attachment) { //Check attachment if (attachment != null) { Attachment.FileHelper.CheckFile(attachment, topic.Category.AttachExtensions, topic.Category.AttachMaxSize); } using (TransactionScope transaction = new TransactionScope(mConfiguration)) { TopicDataStore topicStore = new TopicDataStore(transaction); topicStore.Attach(topic); MessageDataStore messageStore = new MessageDataStore(transaction); Message parentMessage = messageStore.FindByKey(idParentMessage); if (parentMessage == null) { throw new MessageNotFoundException(idParentMessage); } Message newMessage = new Message(topic, idParentMessage, owner, title, body, attachment); messageStore.Insert(newMessage); transaction.Commit(); //Notify user for answer NotifyUserReply(parentMessage, newMessage); return(newMessage); } }
/// <summary> /// Create the topic and the relative root message. /// </summary> /// <param name="category"></param> /// <param name="owner"></param> /// <param name="title"></param> /// <param name="body"></param> /// <param name="attachment">Use null if you don't have any attachment</param> /// <param name="topic">Returns the topic created</param> /// <param name="rootMessage">Returns the message created</param> public override void CreateTopic(Category category, string owner, string title, string body, Attachment.FileInfo attachment, out Topic topic, out Message rootMessage, string groups) { //Check attachment if (attachment != null) { Attachment.FileHelper.CheckFile(attachment, category.AttachExtensions, category.AttachMaxSize); } using (TransactionScope transaction = new TransactionScope(mConfiguration)) { CategoryDataStore forumStore = new CategoryDataStore(transaction); forumStore.Attach(category); //Insert topic TopicDataStore topicStore = new TopicDataStore(transaction); topic = new Topic(category, owner, title); topic.Groups = groups; topicStore.Insert(topic); //Insert root message MessageDataStore messageStore = new MessageDataStore(transaction); rootMessage = new Message(topic, null, owner, title, body, attachment); messageStore.Insert(rootMessage); transaction.Commit(); } }
public override void DeleteMessage(Message message) { using (TransactionScope transaction = new TransactionScope(mConfiguration)) { MessageDataStore store = new MessageDataStore(transaction); InternalDeleteMessage(store, transaction, message); transaction.Commit(); } }
public override int MessageCountByTopic(Topic topic) { using (TransactionScope transaction = new TransactionScope(mConfiguration)) { MessageDataStore store = new MessageDataStore(transaction); return(store.MessageCountByTopic(topic)); } }
/// <summary> /// Get a list of messages for the specified topic ordered by InsertDate /// </summary> /// <param name="topic"></param> /// <returns></returns> public override IList <Message> GetMessagesByTopic(Topic topic) { //TODO Evaluate if is better to returns a light object to don't load all the attachments and the forum data using (TransactionScope transaction = new TransactionScope(mConfiguration)) { MessageDataStore store = new MessageDataStore(transaction); return(store.FindByTopic(topic)); } }
public override Message GetMessage(string id) { using (TransactionScope transaction = new TransactionScope(mConfiguration)) { MessageDataStore store = new MessageDataStore(transaction); Message msg = store.FindByKey(id); if (msg == null) { throw new MessageNotFoundException(id); } return(msg); } }
/// <summary> /// Recursively delete all the messages and the relative attachments /// </summary> protected virtual void InternalDeleteMessage(MessageDataStore store, TransactionScope transaction, Message obj) { //Recursively delete any child message IList <Message> children = store.FindByParent(obj.Id); foreach (Message childMsg in children) { InternalDeleteMessage(store, transaction, childMsg); } obj.Deleted = true; store.Update(obj); }
public override IList <Message> FindMessages(Filter <string> categoryName, Filter <string> searchFor, Filter <string> owner, Filter <string> tag, DateTime?fromDate, DateTime?toDate, PagingInfo paging) { //TODO Evaluate if is better to returns a light object to don't load all the attachments and the forum data using (TransactionScope transaction = new TransactionScope(mConfiguration)) { MessageDataStore store = new MessageDataStore(transaction); return(store.FindByFields(categoryName, searchFor, owner, tag, fromDate, toDate, paging)); } }