コード例 #1
0
        public DiscussionTopicContract(DiscussionTopic topic, IUserIconFactory userIconFactory, DiscussionTopicOptionalFields fields)
        {
            ParamIs.NotNull(() => topic);

            Author   = new UserWithIconContract(topic.Author, userIconFactory);
            Created  = topic.Created;
            FolderId = topic.Folder.Id;
            Id       = topic.Id;
            Name     = topic.Name;

            if (fields.HasFlag(DiscussionTopicOptionalFields.Comments))
            {
                Comments = topic.Comments.Select(c => new CommentForApiContract(c, userIconFactory)).ToArray();
            }

            if (fields.HasFlag(DiscussionTopicOptionalFields.CommentCount))
            {
                CommentCount = topic.Comments.Count;
            }

            if (fields.HasFlag(DiscussionTopicOptionalFields.Content))
            {
                Content = topic.Content;
            }

            if (fields.HasFlag(DiscussionTopicOptionalFields.LastComment) && topic.Comments.Any())
            {
                LastComment = new CommentForApiContract(topic.Comments.MaxItem(c => c.Created),
                                                        userIconFactory, includeMessage: false);
            }
        }
コード例 #2
0
        public DiscussionFolderContract(DiscussionFolder folder, DiscussionFolderOptionalFields fields,
                                        IUserIconFactory userIconFactory)
        {
            ParamIs.NotNull(() => folder);

            this.Description = folder.Description;
            this.Id          = folder.Id;
            this.Name        = folder.Name;

            if (fields.HasFlag(DiscussionFolderOptionalFields.LastTopic) && folder.Topics.Any())
            {
                var lastTopic = folder.Topics.ToArray().MaxItem(t => t.Created);

                LastTopicAuthor = new UserWithIconContract(lastTopic.Author, lastTopic.AuthorName, userIconFactory);
                LastTopicDate   = folder.Topics.Max(t => t.Created);
            }

            if (fields.HasFlag(DiscussionFolderOptionalFields.TopicCount))
            {
                this.TopicCount = folder.Topics.Count();
            }
        }