Example #1
0
        public IEnumerable<CmsTitle> SearchDocuments(IEnumerable<SearchCriteria> searchCriteriaSet)
        {
            var query = from e in _sqlCmsDbContext.Entities
                where e.Type == SqlCmsDocumentService.ENTITY_TYPE
                select e;

            var predicate = PredicateBuilder.False<Entity>();
            foreach (var searchCriteria in searchCriteriaSet)
            {
                var searchCriteriaItem = searchCriteria;
                switch (searchCriteria.Field)
                {
                    case CmsDocumentField.Id:
                        predicate = (searchCriteriaItem.IsRequired)
                            ? predicate.And(e => e.Id == Guid.Parse(searchCriteriaItem.QueryText))
                            : predicate.Or(e => e.Id == Guid.Parse(searchCriteriaItem.QueryText));
                        break;

                    case CmsDocumentField.Tag:
                        predicate = (searchCriteriaItem.IsRequired)
                            ? predicate.And(
                                e =>
                                    e.EntityTags.Any(
                                        et => et.Tag.TagValue.Equals(searchCriteriaItem.QueryText, StringComparison.InvariantCultureIgnoreCase)))
                            : predicate.Or(
                                e =>
                                    e.EntityTags.Any(
                                        et => et.Tag.TagValue.Equals(searchCriteriaItem.QueryText, StringComparison.InvariantCultureIgnoreCase)));
                        break;

                    case CmsDocumentField.Title:
                        predicate = (searchCriteriaItem.IsRequired)
                            ? predicate.And(e => e.Title.ToLower().Contains(searchCriteriaItem.QueryText.ToLower()))
                            : predicate.Or(e => e.Title.ToLower().Contains(searchCriteriaItem.QueryText.ToLower()));
                        break;

                    case CmsDocumentField.Value:
                        predicate = (searchCriteriaItem.IsRequired)
                            ? predicate.And(e => e.Contents.ToLower().Contains(searchCriteriaItem.QueryText.ToLower()))
                            : predicate.Or(e => e.Contents.ToLower().Contains(searchCriteriaItem.QueryText.ToLower()));
                        break;
                }
            }
            query = query.AsExpandable().Where(predicate);
            var matchingEntities = query.ToList();

            foreach (var entityEntity in matchingEntities)
            {
                var title = new CmsTitle(entityEntity.Id, entityEntity.Title);
                yield return title;
            }
        }
 public IEnumerable<CmsTitle> GetAll()
 {
     using (var reader = DirectoryReader.Open(_Directory, true))
     {
         for (int i = 0; i < reader.MaxDoc; i++)
         {
             if (reader.IsDeleted(i))
                 continue;
             CmsTitle title = null;
             try
             {
                 var doc = reader.Document(i);
                 title = new CmsTitle(Guid.Parse(doc.Get(CmsDocumentField.Id.ToString())), doc.Get(CmsDocumentField.Title.ToString()));
             }
             catch (Exception)
             {
             }
             if (title != null)
                 yield return title;
         }
     }
 }