/// <summary> /// Распарсить. /// </summary> /// <param name="source">Источник.</param> /// <returns>Результат.</returns> public IBoardPostCollectionEtag Parse(CatalogData source) { var posts = source.Entity.Threads.OrderBy(p => p.Number.TryParseWithDefault()); var result = new BoardPostCollection() { EntityType = PostStoreEntityType.Catalog, Etag = source.Etag, Info = GetEntityModel(source.Entity, source.Link), Link = source.Link, ParentLink = source.Link?.GetBoardLink(), Posts = posts.WithCounter(1).Select(p => _postsParser.Parse(new BoardPost2WithParentLink() { Counter = p.Key, ParentLink = new ThreadLink() { Board = source.Link.Board, Engine = source.Link.Engine, OpPostNum = p.Value.Number.TryParseWithDefault() }, Post = p.Value, EntityType = PostStoreEntityType.CatalogPost, LoadedTime = source.LoadedTime, })).ToList() }; return(result); }
/// <summary> /// Распарсить. /// </summary> /// <param name="source">Источник.</param> /// <returns>Результат.</returns> public IBoardPostCollectionEtag Parse(PartialThreadData source) { var posts = source.Posts.OrderBy(p => p.Number.TryParseWithDefault()); ILink parentLink; switch (source.Link) { case PostLink pl: parentLink = pl.GetThreadLink(); break; default: parentLink = source.Link?.GetBoardLink(); break; } var result = new BoardPostCollection() { EntityType = PostStoreEntityType.Thread, Etag = source.Etag, Info = null, Link = source.Link, ParentLink = parentLink, Posts = posts.WithCounter(1).Select(p => _postsParser.Parse(new BoardPost2WithParentLink() { Counter = p.Key, ParentLink = new ThreadLink() { Board = source.Link.Board, Engine = source.Link.Engine, OpPostNum = source.Link.OpPostNum }, Post = p.Value, LoadedTime = source.LoadedTime, EntityType = PostStoreEntityType.Post })).ToList() }; return(result); }