Example #1
0
        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());
        }
Example #2
0
        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);
        }
Example #3
0
        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()
     });
 }
Example #5
0
        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());
        }