public virtual IList <HeadwordBookmarkResult> GetAllHeadwordBookmarks(string userName) { using (var session = GetSession()) { HeadwordBookmarkResult resultAlias = null; HeadwordBookmark headwordBookmarkAlias = null; User userAlias = null; Book bookAlias = null; BookVersion bookVersionAlias = null; BookHeadword bookHeadwordAlias = null; return(session.QueryOver(() => headwordBookmarkAlias) .JoinQueryOver(() => headwordBookmarkAlias.Book, () => bookAlias) .JoinQueryOver(() => headwordBookmarkAlias.User, () => userAlias) .JoinQueryOver(() => bookAlias.LastVersion, () => bookVersionAlias) .JoinQueryOver(() => bookVersionAlias.BookHeadwords, () => bookHeadwordAlias) .Select(Projections.Distinct(Projections.ProjectionList() .Add(Projections.Property(() => headwordBookmarkAlias.XmlEntryId).WithAlias(() => resultAlias.XmlEntryId)) .Add(Projections.Property(() => bookAlias.Guid).WithAlias(() => resultAlias.BookGuid)) .Add(Projections.Property(() => bookHeadwordAlias.DefaultHeadword).WithAlias(() => resultAlias.Headword)) )) .Where(() => userAlias.UserName == userName) .And(() => headwordBookmarkAlias.XmlEntryId == bookHeadwordAlias.XmlEntryId) .TransformUsing(Transformers.AliasToBean <HeadwordBookmarkResult>()) .List <HeadwordBookmarkResult>()); } }
public virtual void DeleteHeadwordBookmark(string bookId, string entryXmlId, string userName) { using (var session = GetSession()) { HeadwordBookmark headwordBookmark = null; User userAlias = null; Book bookAlias = null; var bookmarks = session.QueryOver(() => headwordBookmark) .JoinQueryOver(() => headwordBookmark.Book, () => bookAlias) .JoinQueryOver(() => headwordBookmark.User, () => userAlias) .Where(() => headwordBookmark.XmlEntryId == entryXmlId && bookAlias.Guid == bookId && userAlias.UserName == userName) .List <HeadwordBookmark>(); if (bookmarks == null) { string message = string.Format("bookmark not found for bookId: '{0}' and headword xmlId: '{1}' for user: '******'", bookId, entryXmlId, userName); if (m_log.IsErrorEnabled) { m_log.Error(message); } throw new ArgumentException(message); } foreach (var bookmark in bookmarks) { Delete(bookmark); } } }
public void AddHeadwordBookmark(string bookXmlId, string entryXmlId) { var now = DateTime.UtcNow; var user = TryGetUser(); var defaultFavoriteLabel = m_favoritesRepository.GetDefaultFavoriteLabel(user.Id); var bookmark = new HeadwordBookmark { Book = m_bookRepository.FindBookByGuid(bookXmlId), User = user, XmlEntryId = entryXmlId, CreateTime = now, FavoriteLabel = defaultFavoriteLabel }; m_favoritesRepository.Save(bookmark); }