public Topic UpdateTopic(String userId, String topicId, String subject, String text, TopicType type, TopicState state) { Guid id; if (!Guid.TryParse(topicId, out id)) { throw new ArgumentException(nameof(topicId)); } Guid uId; if (!Guid.TryParse(userId, out uId)) { throw new ArgumentException(nameof(userId)); } if (String.IsNullOrWhiteSpace(subject)) { throw new ArgumentNullException(nameof(subject)); } Dbos.Topic topic = this.topicRepository.FindById(id); topic.Message.Subject = subject; topic.Message.Text = text; topic.Type = type; topic.Message.Updated = DateTime.UtcNow; topic.Message.EditorId = uId; topic.State = state; topic = this.topicRepository.Update(topic); return(topic.ToModel()); }
public IEnumerable <Reply> FindByTopic(String topicId, Int32 pageIndex, Int32 pageSize, Boolean includeDeleted) { Guid id; if (!Guid.TryParse(topicId, out id)) { throw new ArgumentException(nameof(topicId)); } Dbos.Topic topic = this.topicRepository.FindById(id); Int32 skip = 0; Int32 take = pageSize; // Not on the first page? if (pageIndex == 0) { skip = pageIndex * pageSize; } IEnumerable <Reply> replies = this.replyRepository.FindAll() .Include(r => r.Message) .Where(r => r.TopicId == id) .Where(r => (r.State == ReplyState.None || (r.State == ReplyState.Deleted && includeDeleted))) .OrderBy(r => r.Message.Created) .Skip(skip) .Take(take) .ToList() .Select(r => r.ToModel()); return(replies); }
public Topic FindTopicById(String topicId) { Guid id; if (!Guid.TryParse(topicId, out id)) { throw new ArgumentException(nameof(topicId)); } Dbos.Topic topic = this.topicRepository.FindById(id); return(topic.ToModel()); }
public static Topic ToModel(this Dbos.Topic topic) { return(new Topic { Id = topic.Id.ToString(), Subject = topic.Message.Subject, Text = topic.Message.Text, CreatorId = topic.Message.AuthorId.ToString(), Created = topic.Message.Created, EditorId = topic.Message.EditorId.ToString(), Updated = topic.Message.Updated, State = topic.State, Type = topic.Type, ForumId = topic.ForumId.ToString() }); }
public Topic CreateTopic(String userId, String forumId, String subject, String text, TopicType type) { Guid id; if (!Guid.TryParse(forumId, out id)) { throw new ArgumentException(nameof(forumId)); } Guid uId; if (!Guid.TryParse(userId, out uId)) { throw new ArgumentException(nameof(userId)); } if (String.IsNullOrWhiteSpace(subject)) { throw new ArgumentNullException(nameof(subject)); } Dbos.Forum parent = this.forumRepository.FindById(id); if (parent == null) { throw new ArgumentException(nameof(forumId)); } Dbos.Topic newTopic = new Dbos.Topic { ForumId = parent.Id, State = TopicState.None, Type = type }; newTopic.Message = new Dbos.Message { Created = DateTime.UtcNow, State = Dbos.MessageState.None, Subject = subject, Text = text, Updated = DateTime.UtcNow, AuthorId = uId, EditorId = uId, }; newTopic = this.topicRepository.Create(newTopic); return(newTopic.ToModel()); }