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); }
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); }
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>()); } }
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 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); } }
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); } }
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)); } }
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)); } }
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); }
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); } }