Example #1
0
        public void WordQueryByTitleUpperCase()
        {
            var w1  = session.Load <Word>(IntToGuid <Word>(1));
            var res = WordQuery.ByTitle(session)(w1.Title.ToUpper());

            Assert.AreEqual(w1, res);
        }
Example #2
0
        public async Task <QueryResult <Word> > GetWords(WordQuery queryObj)
        {
            var result = new QueryResult <Word>();

            var query = context.Words
                        .Include(w => w.PartOfSpeech)
                        .Include(w => w.Features)
                        .ThenInclude(wf => wf.Feature)
                        .Include(w => w.Subcategory)
                        .ThenInclude(m => m.Category)
                        .AsQueryable();

            query = query.ApplyFiltering(queryObj);

            var columnsMap = new Dictionary <string, Expression <Func <Word, object> > >()
            {
                ["category"]    = w => w.Subcategory.Category.Name,
                ["subcategory"] = w => w.Subcategory.Name,
                ["name"]        = w => w.Name,
                ["meaning"]     = w => w.Meaning,
                ["createdAt"]   = w => w.CreatedAt
            };

            query = query.ApplyOrdering(queryObj, columnsMap);

            result.TotalItems = await query.CountAsync();

            query = query.ApplyPaging(queryObj);

            result.Items = await query.ToListAsync();

            return(result);
        }
Example #3
0
        public void WordQueryStartingWithUpperCase()
        {
            var w1  = session.Load <Word>(IntToGuid <Word>(1));
            var res = WordQuery.StartingWith(session)(w1.Title.ToUpper());

            Assert.IsTrue(res.Contains(w1));
        }
        public IEnumerable GetWords([FromBody] WordQuery query)
        {
            var words = new List <Word>();

            var connection = DatabaseHelper.OpenConnection();
            var command    = GetCommandForWordsSp(connection, query);

            using (var reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    var word = new Word();
                    word.Id   = int.Parse(reader[0].ToString());
                    word.Text = reader[1].ToString();
                    word.EnglishExplanation = reader[2].ToString();
                    word.RussianExplanation = reader[3].ToString();
                    word.Image   = reader[4].ToString();
                    word.Sound   = reader[4].ToString();
                    word.Synonim = reader[5].ToString();
                    word.Status  = reader[6].ToString();
                    words.Add(word);
                }
            }

            DatabaseHelper.CloseConnection(connection);
            return(words);
        }
Example #5
0
 /// <summary>
 /// 线程参数
 /// </summary>
 /// <param name="searcher">绑定结果池的分词搜索器</param>
 /// <param name="checkLessWord">未匹配分词自定义过滤处理</param>
 /// <param name="checkLess">未匹配分词自定义过滤处理</param>
 public ThreadParameter(StaticSearcher <keyType> searcher, CheckLessWord checkLessWord = null, CheckLess checkLess = null)
 {
     this.searcher      = searcher;
     this.checkLessWord = checkLessWord;
     wordQuery          = new WordQuery(searcher);
     queue = new Queue(searcher);
 }
Example #6
0
        public void WordQueryByTitlesUpperCase()
        {
            var w1  = session.Load <Word>(IntToGuid <Word>(1));
            var w2  = session.Load <Word>(IntToGuid <Word>(2));
            var res = WordQuery.ByTitles(session)(new[] { w1.Title.ToUpper(), w2.Title.ToUpper() });

            Assert.AreEqual(2, res.Count());
            Assert.IsTrue(res.Contains(w1));
            Assert.IsTrue(res.Contains(w2));
        }
Example #7
0
        private IEnumerable <Word> LoadMeasureWords(SearchOptionsDTO dto, ISession session, out bool mWordsMissed)
        {
            var mWordTitles = (from w in dto.MeasuresAll
                               .Union(dto.MeasuresAny)
                               .Select(x => x.Word)
                               where w != null
                               select w.Title).Distinct().ToList();
            var mWords = WordQuery.ByTitles(session)(mWordTitles).ToList();

            mWordsMissed = mWordTitles.Count != mWords.Count;
            return(mWords);
        }
Example #8
0
        public async Task <FileResult> GetPdf()
        {
            IWorkbook workbook = new XSSFWorkbook();
            ISheet    sheet1   = workbook.CreateSheet("Sheet1");

            var titleFont = workbook.CreateFont();

            titleFont.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.Bold;

            var titleStyle = workbook.CreateCellStyle();

            titleStyle.SetFont(titleFont);

            IRow row = sheet1.CreateRow(0);

            string[] headers = new string[] { "Word", "Meaning", "UK", "US", "Example", "Subcategory", "Category", "Date add" };
            for (var i = 0; i < headers.Length; i++)
            {
                ICell cell = row.CreateCell(i);
                cell.SetCellValue(headers[i]);
                cell.CellStyle = titleStyle;
            }

            var filter = new WordQuery();

            filter.WithoutPagination = true;
            var queryResult = await repository.GetWords(filter);

            for (var i = 0; i < queryResult.Items.Count(); i++)
            {
                row = sheet1.CreateRow(i + 1);
                var word = queryResult.Items.ElementAt(i);
                row.CreateCell(0).SetCellValue(word.Name);
                row.CreateCell(1).SetCellValue(word.Meaning);
                row.CreateCell(2).SetCellValue(word.PronunciationUK);
                row.CreateCell(3).SetCellValue(word.PronunciationUS);
                row.CreateCell(4).SetCellValue(Regex.Replace(word.Example, "<.*?>", String.Empty));
                row.CreateCell(5).SetCellValue(word.Subcategory.Name);
                row.CreateCell(6).SetCellValue(word.Subcategory.Category.Name);
                row.CreateCell(7).SetCellValue(String.Format("{0:MM-dd-yyyy}", word.CreatedAt));
            }

            for (var i = 0; i < headers.Length; i++)
            {
                sheet1.AutoSizeColumn(i);
            }

            var stream = new MemoryStream();

            workbook.Write(stream);

            return(File(new MemoryStream(stream.ToArray()), "application/vnd.ms-excel", "plik.xls"));
        }
Example #9
0
 /// <summary>
 /// 释放资源
 /// </summary>
 public void Dispose()
 {
     if (wordQuery != null)
     {
         wordQuery.Dispose();
         wordQuery = null;
     }
     if (queue != null)
     {
         queue.Dispose();
         queue = null;
     }
     Unmanaged.Free(ref getResultIndexsMapBuffer);
 }
        public JsonResult GetWordsForUserByUserLevel([FromBody] WordQuery query)
        {
            var connection   = DatabaseHelper.OpenConnection();
            var param        = GetParamForGettingWordsForUserByLevel(query.UserId, query.Level, int.Parse(query.Sublevel));
            var data         = connection.QueryMultiple("WordRepository_GetWordsForUserByLevel", param, commandType: CommandType.StoredProcedure);
            var wordsUdts    = data.Read <WordUdt>().ToList();
            var attemptsUdts = data.Read <AttemptUdt>().ToList();
            var words        = GetListWords(wordsUdts, attemptsUdts);

            DatabaseHelper.CloseConnection(connection);
            var serializedWords = JsonConvert.SerializeObject(words);

            return(new JsonResult(serializedWords));
        }
        public static IQueryable <Word> ApplyFiltering(this IQueryable <Word> query, WordQuery queryObj)
        {
            if (!String.IsNullOrEmpty(queryObj.Query))
            {
                query = query.Where(w => w.Name.Contains(queryObj.Query) ||
                                    w.Meaning.Contains(queryObj.Query) ||
                                    w.Example.Contains(queryObj.Query) ||
                                    w.PronunciationUK.Contains(queryObj.Query) ||
                                    w.PronunciationUS.Contains(queryObj.Query));
            }

            if (queryObj.CategoryId.HasValue)
            {
                query = query.Where(w => w.Subcategory.CategoryId == queryObj.CategoryId.Value);
            }

            if (queryObj.SubcategoryId.HasValue)
            {
                query = query.Where(w => w.SubcategoryId == queryObj.SubcategoryId.Value);
            }

            if (queryObj.PartOfSpeechId.HasValue)
            {
                query = query.Where(w => w.PartOfSpeechId == queryObj.PartOfSpeechId.Value);
            }

            if (!String.IsNullOrEmpty(queryObj.Name))
            {
                query = query.Where(w => w.Name.Contains(queryObj.Name));
            }

            if (!String.IsNullOrEmpty(queryObj.Meaning))
            {
                query = query.Where(w => w.Meaning.Contains(queryObj.Meaning));
            }

            if (!String.IsNullOrEmpty(queryObj.Example))
            {
                query = query.Where(w => w.Example.Contains(queryObj.Example));
            }

            if (queryObj.IsLearned.HasValue)
            {
                query = query.Where(w => w.IsLearned == queryObj.IsLearned.Value);
            }

            return(query);
        }
Example #12
0
        protected override void OnOk()
        {
            foreach (var crit in word.Crits)
            {
                var l = OptionsLoader.FromFormat(crit.OptionsFormat);
                crit.Options = l.ReplaceWord(crit.Options, oldTitle, word.Title);
            }

            (word as IEditableObject).EndEdit();

            // если такое слово уже было, делааем доступным врачу
            var toSave = WordQuery.ByTitle(Session)(word.Title) ?? word;

            AuthorityController.CurrentDoctor.AddWords(toSave.ToEnumerable());
            Session.DoSave(toSave);
            this.Send(Event.EntitySaved, toSave.AsParams(MessageKeys.Entity));
        }
Example #13
0
        /// <summary>
        /// Все слова с началом как у запроса с учетом предыдущего.
        /// </summary>
        /// <param name="query"></param>
        /// <param name="prev"></param>
        /// <returns></returns>
        private IEnumerable <Word> QueryWords(string query, object prev, bool withNotPersisted)
        {
            if (query.IsNullOrEmpty() && !ShowAllWordsOnEmptyQuery)
            {
                return(Enumerable.Empty <Word>());
            }

            Word parent = prev as Word;

            var unsaved = withNotPersisted
                ? CreatedWordsManager.Created.Where(w => w.Title.StartsWith(query, StringComparison.OrdinalIgnoreCase))
                : Enumerable.Empty <Word>();

            var fromDB = ShowChildrenFirst ?
                         WordQuery.StartingWithChildrenFirst(session)(parent, query) :
                         WordQuery.StartingWith(session)(query);

            return(fromDB.Union(unsaved));
        }
        private SqlCommand GetCommandForWordsSp(SqlConnection connection, WordQuery query)
        {
            var command = new SqlCommand("WordRepository_GetWordsByLevel", connection);

            command.CommandType = CommandType.StoredProcedure;
            var userId = new SqlParameter {
                ParameterName = "userId", Value = query.UserId
            };
            var section = new SqlParameter {
                ParameterName = "level", Value = query.Level
            };
            var level = new SqlParameter {
                ParameterName = "sublevel", Value = int.Parse(query.Sublevel)
            };

            command.Parameters.Add(userId);
            command.Parameters.Add(section);
            command.Parameters.Add(level);
            return(command);
        }
Example #15
0
        /// <summary>
        /// Делает тексты словаря словами словаря.
        /// Возвращает созданные слова.
        /// </summary>
        /// <param name="voc"></param>
        private IEnumerable <Word> CreateWordsFromTemp(Vocabulary voc, IEnumerable <WordTemplate> templates)
        {
            // для каждого шаблона есть слово
            Contract.Ensures(templates.Select(x => x.Title.ToLower())
                             .Except(voc.Words.Select(x => x.Title.ToLower())).Count() == 0);

            var created = new List <Word>();

            foreach (var text in templates.Select(x => x.Title))
            {
                var existing = WordQuery.ByTitle(session)(text); // для любого врача, в любом регистре
                if (existing == null)
                {
                    var w = new Word(text);
                    voc.AddWord(w);
                    created.Add(w);
                }
                else
                {
                    voc.AddWord(existing);
                }
            }
            return(created);
        }
Example #16
0
 private void CreateFilter()
 {
     _filter = new FilterViewModel <Word>(WordQuery.StartingWith(Session));
 }
Example #17
0
 public void Update(WordQuery item)
 {
     _todos[item.Key] = item;
 }
Example #18
0
 public void Add(WordQuery item)
 {
     item.Key         = Guid.NewGuid().ToString();
     _todos[item.Key] = item;
 }
Example #19
0
 /// <summary>
 /// 线程参数
 /// </summary>
 /// <param name="searcher">绑定结果池的分词搜索器</param>
 public ThreadParameter(StaticSearcher <keyType> searcher)
 {
     this.searcher = searcher;
     wordQuery     = new WordQuery(searcher);
     queue         = new Queue(searcher);
 }
Example #20
0
 /// <summary>
 ///     Determines whether an english word should be preceded by the indefinite article "a" or "an".
 ///     By Eamon Nerbonne; feedback can be reported to https://github.com/EamonNerbonne/a-vs-an/
 /// </summary>
 /// <param name="word">
 ///     The word to test.  AvsAn assumes this is a complete word; in some cases word-prefixes may result in
 ///     a differing classification that complete words.  If you wish to classify an incomplete word (a prefix), append a
 ///     non-word, non-space character such as the underscore "_" as a placeholder for further letters.
 /// </param>
 /// <returns>A classification result indicating "a" or "an" with some wikipedia-derived statistics.</returns>
 public static Result Query(string word)
 {
     return(WordQuery.Query(BuiltInDictionary.Root, word));
 }
Example #21
0
        /// <summary>
        /// Делает опции с реальными сущностями.
        /// </summary>
        protected SearchOptions LoadFromDTO(SearchOptionsDTO dto, ISession session)
        {
            Contract.Requires(dto != null);
            Contract.Ensures(dto.GetAllChildrenCount() == Contract.Result <SearchOptions>().GetAllChildrenCount());

            var result = new SearchOptions();

            // some options
            bool sscopeNotParsed = false;
            bool grOpNotParsed   = false;
            QueryGroupOperator groupOperator;

            if (!Enum.TryParse <QueryGroupOperator>(dto.GroupOperator, out groupOperator))
            {
                groupOperator = QueryGroupOperator.All;
                grOpNotParsed = true;
            }
            SearchScope sscope;

            if (!Enum.TryParse <SearchScope>(dto.SearchScope, out sscope))
            {
                sscope          = SearchScope.HealthRecord;
                sscopeNotParsed = true;
            }

            result.GroupOperator = groupOperator;
            result.SearchScope   = sscope;
            result.MinAny        = dto.MinAny;
            result.WithConf      = dto.WithConf;

            // words
            var allWordsTitles = dto.CWordsAll.Union(dto.CWordsAny).Union(dto.CWordsNot).Select(x => x.Title);
            var words          = WordQuery.ByTitles(session)(allWordsTitles);

            bool confNotParsedAll;
            bool confNotParsedAny;
            bool confNotParsedNot;

            result.CWordsAll = new List <Confindencable <Word> >(SelectConfWords(dto.CWordsAll, words, out confNotParsedAll));
            result.CWordsAny = new List <Confindencable <Word> >(SelectConfWords(dto.CWordsAny, words, out confNotParsedAny));
            result.CWordsNot = new List <Confindencable <Word> >(SelectConfWords(dto.CWordsNot, words, out confNotParsedNot));

            // measures
            bool mWordsMissed;
            bool uomsMissed;
            var  mWords = LoadMeasureWords(dto, session, out mWordsMissed);
            var  uoms   = LoadUoms(dto, session, out uomsMissed);

            bool mopNotParsed;
            var  mAll = SelectMeasures(dto.MeasuresAll, mWords, uoms, out mopNotParsed);
            var  mAny = SelectMeasures(dto.MeasuresAny, mWords, uoms, out mopNotParsed);

            result.MeasuresAll = new List <MeasureOp>(mAll);
            result.MeasuresAny = new List <MeasureOp>(mAny);

            // cats
            var cats = CategoryQuery.ByTitles(session)(dto.Categories.Select(x => x.Title));

            result.Categories = new List <HrCategory>(cats);

            // childs
            dto.Children.ForAll(x =>
            {
                var child = this.LoadFromDTO(x, session);
                result.Children.Add(child);
            });

            var smthMissed =
                result.CWordsAll.Count != dto.CWordsAll.Count ||
                result.CWordsAny.Count != dto.CWordsAny.Count ||
                result.CWordsNot.Count != dto.CWordsNot.Count ||
                result.MeasuresAll.Count != dto.MeasuresAll.Count ||
                result.MeasuresAny.Count != dto.MeasuresAny.Count ||
                result.Categories.Count != dto.Categories.Count ||
                mWordsMissed ||
                uomsMissed;

            var notParsed = confNotParsedAll || confNotParsedAny || confNotParsedNot || sscopeNotParsed || grOpNotParsed || mopNotParsed;

            if (smthMissed || notParsed || result.Children.Any(x => x.PartialLoaded))
            {
                result.SetPartialLoaded();
            }

            return(result);
        }