예제 #1
0
        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>());
            }
        }
예제 #2
0
        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);
                }
            }
        }
예제 #3
0
        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);
        }