Exemple #1
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);
        }
Exemple #2
0
        private List <Uom> LoadUoms(SearchOptionsDTO dto, ISession session, out bool uomsMissed)
        {
            var uomSpecs = dto.MeasuresAll
                           .Union(dto.MeasuresAny)
                           .Where(x => x.UomDescr != null)
                           .Select(x => new { Abbr = x.Abbr, Descr = x.UomDescr, TypeName = x.UomTypeTitle == null ? null : x.UomTypeTitle })
                           .Distinct()
                           .ToList();
            var uoms = uomSpecs
                       .Select(x => UomQuery.ByAbbrDescrAndTypeName(session)(x.Abbr, x.Descr, x.TypeName))
                       .Where(x => x != null)
                       .ToList();

            uomsMissed = uomSpecs.Count != uoms.Count;
            return(uoms);
        }
Exemple #3
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);
        }
Exemple #4
0
 protected abstract string WriteOptionsInner(SearchOptionsDTO dto);
Exemple #5
0
        public static int GetAllChildrenCount(this SearchOptionsDTO dto)
        {
            Contract.Requires(dto != null);

            return(dto.Children.Aggregate(dto.Children.Count, (x, d) => x + GetAllChildrenCount(d)));
        }
Exemple #6
0
 protected override string WriteOptionsInner(SearchOptionsDTO dto)
 {
     return(dto.SerializeDCJson());
 }
Exemple #7
0
 public Graph(RouteFeature[] routeFeature2s, SearchOptionsDTO searchOptions)
 {
     _routeFeature2s = routeFeature2s;
     _searchOptions  = searchOptions;
 }