private List <HeadwordWithDictionariesContract> MapHeadwordsToGroupedList(List <HeadwordContract> headwords) { var resultList = new List <HeadwordWithDictionariesContract>(); HeadwordWithDictionariesContract lastHeadword = null; foreach (var headwordContract in headwords) { if (lastHeadword == null || lastHeadword.Headword != headwordContract.DefaultHeadword) { lastHeadword = new HeadwordWithDictionariesContract { Headword = headwordContract.DefaultHeadword, Dictionaries = new List <HeadwordBookInfoContract>() }; resultList.Add(lastHeadword); } foreach (var resourcePageId in headwordContract.HeadwordItems.Select(x => x.ResourcePageId).Distinct()) { var dictionaryInfo = new HeadwordBookInfoContract { BookId = headwordContract.ProjectId, HeadwordId = headwordContract.Id, HeadwordVersionId = headwordContract.VersionId, PageId = resourcePageId, }; lastHeadword.Dictionaries.Add(dictionaryInfo); } } return(resultList); }
private HeadwordListContract ConvertHeadwordSearchToContract(IList <HeadwordSearchResult> databaseResult) { var dictionaryList = new Dictionary <string, DictionaryContract>(); var headwordList = new List <HeadwordContract>(); var headwordContract = new HeadwordContract(); foreach (var headword in databaseResult) { DictionaryContract dictionaryContract; if (!dictionaryList.TryGetValue(headword.BookGuid, out dictionaryContract)) { dictionaryContract = new DictionaryContract { BookAcronym = headword.BookAcronym ?? headword.SourceAbbreviation, BookTitle = headword.BookTitle, BookXmlId = headword.BookGuid, BookVersionXmlId = headword.BookVersionId }; dictionaryList.Add(dictionaryContract.BookXmlId, dictionaryContract); } var bookInfoContract = new HeadwordBookInfoContract { BookXmlId = headword.BookGuid, EntryXmlId = headword.XmlEntryId, Image = headword.Image }; if (headword.Headword == headwordContract.Headword) { headwordContract.Dictionaries.Add(bookInfoContract); } else { headwordContract = new HeadwordContract { Dictionaries = new List <HeadwordBookInfoContract> { bookInfoContract }, Headword = headword.Headword }; headwordList.Add(headwordContract); } } return(new HeadwordListContract { BookList = dictionaryList, HeadwordList = headwordList }); }