Exemplo n.º 1
0
        public void CreateFeedbackForHeadword(string feedback, string bookXmlId, string versionXmlId, string entryXmlId, string username)
        {
            if (string.IsNullOrWhiteSpace(username))
            {
                throw new ArgumentException("Username is empty, cannot add bookmark");
            }

            User user = m_userRepository.FindByUserName(username);

            if (user == null)
            {
                throw new ArgumentException(string.Format("Cannot locate user by username: '******'", username));
            }

            BookHeadword headwordEntity = m_bookVersionRepository.GetFirstHeadwordInfo(bookXmlId, entryXmlId, versionXmlId);

            if (headwordEntity == null)
            {
                throw new ArgumentException(string.Format("Cannot find headword with bookId: {0}, versionId: {1}, entryXmlId: {2}", bookXmlId, versionXmlId,
                                                          entryXmlId));
            }

            HeadwordFeedback entity = new HeadwordFeedback
            {
                CreateDate   = DateTime.UtcNow,
                Text         = feedback,
                BookHeadword = headwordEntity,
                User         = user,
                Category     = FeedbackCategoryEnum.Dictionaries
            };

            m_feedbackRepository.Save(entity);
        }
Exemplo n.º 2
0
        protected override void ProcessAttributes(BookVersion bookVersion, XmlReader xmlReader)
        {
            var entryId          = xmlReader.GetAttribute("entryId");
            var defaultHw        = xmlReader.GetAttribute("defaultHw");
            var defaultHwSorting = xmlReader.GetAttribute("defaultHw-sorting");
            var hw             = xmlReader.GetAttribute("hw");
            var transliterated = xmlReader.GetAttribute("hw-transliterated");
            var visibility     = xmlReader.GetAttribute("visibility");
            var visibilityEnum = ParseEnum <VisibilityEnum>(visibility);
            var image          = xmlReader.GetAttribute("facs");

            var bookHeadword = new BookHeadword
            {
                BookVersion     = bookVersion,
                XmlEntryId      = entryId,
                DefaultHeadword = defaultHw,
                Headword        = hw,
                Transliterated  = transliterated,
                Visibility      = visibilityEnum,
                SortOrder       = defaultHwSorting,
                Image           = image
            };

            bookVersion.BookHeadwords.Add(bookHeadword);
        }
Exemplo n.º 3
0
        public virtual IList <string> GetTypeaheadHeadwords(string query, int recordCount, IList <long> selectedBookIds = null)
        {
            using (var session = GetSession())
            {
                Book         bookAlias         = null;
                BookVersion  bookVersionAlias  = null;
                BookHeadword bookHeadwordAlias = null;

                var dbQuery = session.QueryOver(() => bookAlias)
                              .JoinQueryOver(x => x.LastVersion, () => bookVersionAlias)
                              .JoinQueryOver(x => x.BookHeadwords, () => bookHeadwordAlias)
                              .Select(Projections.Distinct(Projections.Property(() => bookHeadwordAlias.Headword)))
                              .Where(x => x.Visibility == VisibilityEnum.Public)
                              .AndRestrictionOn(x => x.Headword).IsInsensitiveLike(query);

                if (selectedBookIds != null)
                {
                    dbQuery.AndRestrictionOn(() => bookAlias.Id).IsInG(selectedBookIds);
                }

                return(dbQuery
                       .Take(recordCount)
                       .List <string>());
            }
        }
Exemplo n.º 4
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>());
            }
        }
Exemplo n.º 5
0
        public virtual BookHeadword FindFirstHeadword(IList <long> selectedBookIds, string headwordQuery)
        {
            using (var session = GetSession())
            {
                Book         bookAlias         = null;
                BookVersion  bookVersionAlias  = null;
                BookHeadword bookHeadwordAlias = null;

                var query = session.QueryOver(() => bookHeadwordAlias)
                            .JoinQueryOver(() => bookHeadwordAlias.BookVersion, () => bookVersionAlias)
                            .JoinQueryOver(() => bookVersionAlias.Book, () => bookAlias)
                            .Where(() => bookAlias.LastVersion.Id == bookVersionAlias.Id)
                            .AndRestrictionOn(() => bookHeadwordAlias.SortOrder).IsLike(headwordQuery, MatchMode.Start);

                if (selectedBookIds != null)
                {
                    query.AndRestrictionOn(() => bookAlias.Id).IsInG(selectedBookIds);
                }

                var result = query.OrderBy(() => bookHeadwordAlias.SortOrder).Asc
                             .Take(1)
                             .SingleOrDefault <BookHeadword>();

                return(result);
            }
        }
Exemplo n.º 6
0
        public virtual IList <HeadwordSearchResult> GetHeadwordListBySearchCriteria(IEnumerable <string> selectedGuidList,
                                                                                    HeadwordCriteriaQueryCreator creator, int start, int count)
        {
            using (var session = GetSession())
            {
                Book                 bookAlias         = null;
                BookVersion          bookVersionAlias  = null;
                BookHeadword         bookHeadwordAlias = null;
                HeadwordSearchResult resultAlias       = null;

                var result = session.QueryOver(() => bookAlias)
                             .JoinQueryOver(x => x.LastVersion, () => bookVersionAlias)
                             .JoinQueryOver(x => x.BookHeadwords, () => bookHeadwordAlias)
                             .Select(Projections.Distinct(Projections.ProjectionList()
                                                          .Add(Projections.Property(() => bookAlias.Guid).WithAlias(() => resultAlias.BookGuid))
                                                          .Add(Projections.Property(() => bookVersionAlias.VersionId).WithAlias(() => resultAlias.BookVersionId))
                                                          .Add(Projections.Property(() => bookVersionAlias.Title).WithAlias(() => resultAlias.BookTitle))
                                                          .Add(Projections.Property(() => bookVersionAlias.Acronym).WithAlias(() => resultAlias.BookAcronym))
                                                          .Add(Projections.Property(() => bookVersionAlias.SourceAbbreviation).WithAlias(() => resultAlias.SourceAbbreviation))
                                                          .Add(Projections.Property(() => bookHeadwordAlias.DefaultHeadword).WithAlias(() => resultAlias.Headword))
                                                          .Add(Projections.Property(() => bookHeadwordAlias.SortOrder).WithAlias(() => resultAlias.SortOrder))
                                                          .Add(Projections.Property(() => bookHeadwordAlias.XmlEntryId).WithAlias(() => resultAlias.XmlEntryId))
                                                          .Add(Projections.Property(() => bookHeadwordAlias.Image).WithAlias(() => resultAlias.Image))))
                             .WhereRestrictionOn(() => bookAlias.Guid).IsInG(selectedGuidList)
                             .And(creator.GetCondition())
                             .OrderBy(x => x.SortOrder).Asc
                             .TransformUsing(Transformers.AliasToBean <HeadwordSearchResult>())
                             .Skip(start)
                             .Take(count)
                             .List <HeadwordSearchResult>();

                return(result);
            }
        }
Exemplo n.º 7
0
        public virtual int GetHeadwordCountBySearchCriteria(IEnumerable <string> selectedGuidList,
                                                            HeadwordCriteriaQueryCreator creator)
        {
            Book                bookAlias          = null;
            BookHeadword        bookHeadwordAlias  = null;
            HeadwordCountResult headwordCountAlias = null;

            using (var session = GetSession())
            {
                var resultList = session.QueryOver(() => bookAlias)
                                 .JoinQueryOver(x => x.LastVersion)
                                 .JoinQueryOver(x => x.BookHeadwords, () => bookHeadwordAlias)
                                 .Select(Projections.ProjectionList()
                                         .Add(
                                             Projections.CountDistinct(() => bookHeadwordAlias.XmlEntryId)
                                             .WithAlias(() => headwordCountAlias.HeadwordCount))
                                         .Add(Projections.Group(() => bookAlias.Id).WithAlias(() => headwordCountAlias.BookId))
                                         )
                                 .WhereRestrictionOn(() => bookAlias.Guid).IsInG(selectedGuidList)
                                 .And(creator.GetCondition())
                                 .TransformUsing(Transformers.AliasToBean <HeadwordCountResult>())
                                 .List <HeadwordCountResult>();

                return((int)resultList.Sum(x => x.HeadwordCount));
            }
        }
Exemplo n.º 8
0
        public virtual int GetHeadwordCount(IList <long> selectedBookIds = null)
        {
            Book                bookAlias          = null;
            BookHeadword        bookHeadwordAlias  = null;
            HeadwordCountResult headwordCountAlias = null;

            using (var session = GetSession())
            {
                var query = session.QueryOver(() => bookAlias)
                            .JoinQueryOver(x => x.LastVersion)
                            .JoinQueryOver(x => x.BookHeadwords, () => bookHeadwordAlias)
                            .Select(Projections.ProjectionList()
                                    .Add(
                                        Projections.CountDistinct(() => bookHeadwordAlias.XmlEntryId)
                                        .WithAlias(() => headwordCountAlias.HeadwordCount))
                                    .Add(Projections.Group(() => bookAlias.Id).WithAlias(() => headwordCountAlias.BookId))
                                    );

                if (selectedBookIds != null)
                {
                    query.WhereRestrictionOn(() => bookAlias.Id).IsInG(selectedBookIds);
                }

                var resultList = query.TransformUsing(Transformers.AliasToBean <HeadwordCountResult>())
                                 .List <HeadwordCountResult>();

                return((int)resultList.Sum(x => x.HeadwordCount));
            }
        }
Exemplo n.º 9
0
        public void CreateAnonymousFeedbackForHeadword(string feedback, string bookXmlId, string versionXmlId, string entryXmlId, string name, string email)
        {
            BookHeadword headwordEntity = m_bookVersionRepository.GetFirstHeadwordInfo(bookXmlId, entryXmlId, versionXmlId);

            HeadwordFeedback entity = new HeadwordFeedback
            {
                CreateDate   = DateTime.UtcNow,
                Text         = feedback,
                Name         = name,
                Email        = email,
                BookHeadword = headwordEntity,
                Category     = FeedbackCategoryEnum.Dictionaries
            };

            m_feedbackRepository.Save(entity);
        }
        public override ICriterion GetCondition()
        {
            var          conjunction       = new Conjunction();
            BookHeadword bookHeadwordAlias = null;

            foreach (var criteria in m_criteriaList)
            {
                var disjunction = new Disjunction();
                foreach (var conditionString in criteria.Disjunctions)
                {
                    disjunction.Add(new LikeExpression(Projections.Property(() => bookHeadwordAlias.Headword), conditionString, MatchMode.Exact));
                }
                conjunction.Add(disjunction);
            }

            return(conjunction);
        }
Exemplo n.º 11
0
        public virtual IList <HeadwordSearchResult> GetHeadwordList(int start, int count,
                                                                    IList <long> selectedBookIds = null)
        {
            using (var session = GetSession())
            {
                Book                 bookAlias         = null;
                BookVersion          bookVersionAlias  = null;
                BookHeadword         bookHeadwordAlias = null;
                HeadwordSearchResult resultAlias       = null;

                var query = session.QueryOver(() => bookAlias)
                            .JoinQueryOver(x => x.LastVersion, () => bookVersionAlias)
                            .JoinQueryOver(x => x.BookHeadwords, () => bookHeadwordAlias);

                if (selectedBookIds != null)
                {
                    query.WhereRestrictionOn(() => bookAlias.Id).IsInG(selectedBookIds);
                }

                var result = query.Select(Projections.Distinct(Projections.ProjectionList()
                                                               .Add(Projections.Property(() => bookAlias.Guid).WithAlias(() => resultAlias.BookGuid))
                                                               .Add(Projections.Property(() => bookVersionAlias.VersionId).WithAlias(() => resultAlias.BookVersionId))
                                                               .Add(Projections.Property(() => bookVersionAlias.Title).WithAlias(() => resultAlias.BookTitle))
                                                               .Add(Projections.Property(() => bookVersionAlias.Acronym).WithAlias(() => resultAlias.BookAcronym))
                                                               .Add(Projections.Property(() => bookVersionAlias.SourceAbbreviation).WithAlias(() => resultAlias.SourceAbbreviation))
                                                               .Add(Projections.Property(() => bookHeadwordAlias.DefaultHeadword).WithAlias(() => resultAlias.Headword))
                                                               .Add(Projections.Property(() => bookHeadwordAlias.XmlEntryId).WithAlias(() => resultAlias.XmlEntryId))
                                                               .Add(Projections.Property(() => bookHeadwordAlias.SortOrder).WithAlias(() => resultAlias.SortOrder))
                                                               .Add(Projections.Property(() => bookHeadwordAlias.Image).WithAlias(() => resultAlias.Image))))
                             .OrderBy(x => x.SortOrder).Asc
                             .TransformUsing(Transformers.AliasToBean <HeadwordSearchResult>())
                             .Skip(start)
                             .Take(count)
                             .List <HeadwordSearchResult>();

                return(result);
            }
        }