Пример #1
0
        private static RatingDataPerYear getRatingForSimpleQuery(string query)
        {
            Dictionary <int, RatingData> result = new Dictionary <int, RatingData>();

            AggregationContainerDescriptor <HlidacStatu.Lib.Data.Smlouva> aggY =
                new AggregationContainerDescriptor <HlidacStatu.Lib.Data.Smlouva>()
                .DateHistogram("x-agg", h => h
                               .Field(f => f.datumUzavreni)
                               .CalendarInterval(Nest.DateInterval.Year)
                               );
            AggregationContainerDescriptor <HlidacStatu.Lib.Data.Smlouva> aggYSum =
                new AggregationContainerDescriptor <HlidacStatu.Lib.Data.Smlouva>()
                .DateHistogram("x-agg", h => h
                               .Field(f => f.datumUzavreni)
                               .CalendarInterval(Nest.DateInterval.Year)
                               .Aggregations(agg => agg
                                             .Sum("sumincome", s => s
                                                  .Field(ff => ff.CalculatedPriceWithVATinCZK)
                                                  )
                                             )
                               );

            //init result
            for (int year = BasicDataPerYear.UsualFirstYear; year <= DateTime.Now.Year; year++)
            {
                result.Add(year, RatingData.Empty());
            }

            var bezCenyStat = HlidacStatu.Lib.Data.Smlouva.Search.SimpleSearch("issues.issueTypeId:100 " + query, 1, 0,
                                                                               HlidacStatu.Lib.Data.Smlouva.Search.OrderResult.FastestForScroll, aggY, exactNumOfResults: true);

            if (bezCenyStat.IsValid)
            {
                foreach (Nest.DateHistogramBucket val in ((BucketAggregate)bezCenyStat.ElasticResults.Aggregations["x-agg"]).Items)
                {
                    if (result.ContainsKey(val.Date.Year))
                    {
                        result[val.Date.Year].NumBezCeny = val.DocCount ?? 0;
                    }
                }
            }

            var bezSmluvniStr = HlidacStatu.Lib.Data.Smlouva.Search.SimpleSearch("(issues.issueTypeId:18 OR issues.issueTypeId:12) AND " + query, 1, 0,
                                                                                 HlidacStatu.Lib.Data.Smlouva.Search.OrderResult.FastestForScroll, aggYSum, exactNumOfResults: true);

            if (bezSmluvniStr.IsValid)
            {
                foreach (Nest.DateHistogramBucket val in ((BucketAggregate)bezSmluvniStr.ElasticResults.Aggregations["x-agg"]).Items)
                {
                    if (result.ContainsKey(val.Date.Year))
                    {
                        result[val.Date.Year].NumBezSmluvniStrany   = val.DocCount ?? 0;
                        result[val.Date.Year].SumKcBezSmluvniStrany = (decimal)(((Nest.DateHistogramBucket)val).Sum("sumincome").Value ?? 0);
                    }
                }
            }

            QueryContainer qc = new QueryContainerDescriptor <HlidacStatu.Lib.Data.Smlouva>()
                                .Bool(b => b
                                      .Must(
                                          m => m.Term(t => t.Field(f => f.SVazbouNaPolitikyNedavne).Value(true))
                                          ,
                                          m1 => Lib.Data.Smlouva.Search.GetSimpleQuery(query)
                                          )
                                      );
            var vazbyNaSoukr = HlidacStatu.Lib.Data.Smlouva.Search.SearchRaw(qc, 1, 0, HlidacStatu.Lib.Data.Smlouva.Search.OrderResult.FastestForScroll, aggYSum);

            if (vazbyNaSoukr.IsValid)
            {
                foreach (Nest.DateHistogramBucket val in ((BucketAggregate)vazbyNaSoukr.ElasticResults.Aggregations["x-agg"]).Items)
                {
                    if (result.ContainsKey(val.Date.Year))
                    {
                        result[val.Date.Year].NumSPolitiky   = val.DocCount ?? 0;
                        result[val.Date.Year].SumKcSPolitiky = (decimal)(((Nest.DateHistogramBucket)val).Sum("sumincome").Value ?? 0);
                    }
                }
            }

            //calculate percents
            return(new RatingDataPerYear(result, GetBasicStatisticForSimpleQuery(query)));
        }