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); } }
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(); } }