public RatingDataPerYear(IEnumerable <RatingDataPerYear> items, BasicDataPerYear basicData)
        {
            var validItems = items.Where(i => i != null);
            int firstYear  = Analysis.BasicDataPerYear.UsualFirstYear;

            if (validItems.Count() > 0)
            {
                firstYear = validItems.Min(m => m.FirstYear);
            }
            int lastYear = DateTime.Now.Year;

            if (validItems.Count() > 0)
            {
                lastYear = validItems.Max(m => m.LastYear);
            }

            Dictionary <int, RatingData> rdata = new Dictionary <int, RatingData>();

            for (int i = firstYear; i <= lastYear; i++)
            {
                rdata.Add(i, new RatingData()
                {
                    NumBezCeny            = validItems.Sum(s => s.Data.ContainsKey(i) ? s.Data[i].NumBezCeny : 0),
                    NumSPolitiky          = validItems.Sum(s => s.Data.ContainsKey(i) ? s.Data[i].NumSPolitiky : 0),
                    NumBezSmluvniStrany   = validItems.Sum(s => s.Data.ContainsKey(i) ? s.Data[i].NumBezSmluvniStrany : 0),
                    SumKcBezSmluvniStrany = validItems.Sum(s => s.Data.ContainsKey(i) ? s.Data[i].SumKcBezSmluvniStrany : 0),
                    SumKcSPolitiky        = validItems.Sum(s => s.Data.ContainsKey(i) ? s.Data[i].SumKcSPolitiky : 0)
                });
            }
            Init(rdata, basicData);
        }
 public BasicDataPerYear StatPerYearStatni()
 {
     if (_statPerYearStatni == null)
     {
         _statPerYearStatni = new BasicDataPerYear(this.StatniFirmy.Select(m => m.Value.BasicStatPerYear));
     }
     return(_statPerYearStatni);
 }
 public BasicDataPerYear StatPerYearSoukrome()
 {
     if (_statPerYearSoukrome == null)
     {
         _statPerYearSoukrome = new BasicDataPerYear(this.SoukromeFirmy.Select(m => m.Value.BasicStatPerYear));
     }
     return(_statPerYearSoukrome);
 }
        static OsobaStatistic Empty(Data.Relation.AktualnostType aktualnost = Data.Relation.AktualnostType.Nedavny)
        {
            OsobaStatistic os = new OsobaStatistic();

            os.Aktualnost       = aktualnost;
            os.BasicStatPerYear = BasicDataPerYear.Empty();
            os.RatingPerYear    = RatingDataPerYear.Empty();
            return(os);
        }
        protected virtual void Init(Dictionary <int, RatingData> dataFromDb, BasicDataPerYear basicData)
        {
            if (dataFromDb == null)
            {
                dataFromDb = new Dictionary <int, RatingData>();
            }


            //add missing years
            for (int year = FirstYear; year <= LastYear; year++)
            {
                if (dataFromDb.ContainsKey(year))
                {
                    Data.Add(year, dataFromDb[year]);
                }
                else
                {
                    Data.Add(year, RatingData.Empty());
                }
            }

            //add summary
            Data.Add(DataPerYear.AllYearsSummaryKey, new RatingData()
            {
                NumBezCeny            = Data.Sum(m => m.Value.NumBezCeny),
                NumBezSmluvniStrany   = Data.Sum(m => m.Value.NumBezSmluvniStrany),
                NumSPolitiky          = Data.Sum(m => m.Value.NumSPolitiky),
                SumKcSPolitiky        = Data.Sum(m => m.Value.SumKcSPolitiky),
                SumKcBezSmluvniStrany = Data.Sum(m => m.Value.SumKcBezSmluvniStrany)
            });
            Data[DataPerYear.AllYearsSummaryKey].PercentBezCeny =
                basicData.Summary.Pocet == 0 ? 0 : (decimal)Data[DataPerYear.AllYearsSummaryKey].NumBezCeny / basicData.Summary.Pocet;
            Data[DataPerYear.AllYearsSummaryKey].PercentBezSmluvniStrany =
                basicData.Summary.Pocet == 0 ? 0 : (decimal)Data[DataPerYear.AllYearsSummaryKey].NumBezSmluvniStrany / basicData.Summary.Pocet;
            Data[DataPerYear.AllYearsSummaryKey].PercentKcBezSmluvniStrany =
                basicData.Summary.CelkemCena == 0 ? 0 : (decimal)Data[DataPerYear.AllYearsSummaryKey].SumKcBezSmluvniStrany / basicData.Summary.CelkemCena;
            Data[DataPerYear.AllYearsSummaryKey].PercentSPolitiky =
                basicData.Summary.Pocet == 0 ? 0 : (decimal)Data[DataPerYear.AllYearsSummaryKey].NumSPolitiky / basicData.Summary.Pocet;
            Data[DataPerYear.AllYearsSummaryKey].PercentKcSPolitiky =
                basicData.Summary.CelkemCena == 0 ? 0 : ((decimal)(Data[DataPerYear.AllYearsSummaryKey].SumKcSPolitiky) / (decimal)basicData.Summary.CelkemCena);

            //calculate percents
            for (int year = FirstYear; year <= LastYear; year++)
            {
                Data[year].PercentBezCeny =
                    basicData[year].Pocet == 0 ? 0 : (decimal)Data[year].NumBezCeny / basicData[year].Pocet;
                Data[year].PercentBezSmluvniStrany =
                    basicData[year].Pocet == 0 ? 0 : (decimal)Data[year].NumBezSmluvniStrany / basicData[year].Pocet;
                Data[year].PercentKcBezSmluvniStrany =
                    basicData[year].CelkemCena == 0 ? 0 : (decimal)Data[year].SumKcBezSmluvniStrany / basicData[year].CelkemCena;
                Data[year].PercentSPolitiky =
                    basicData[year].Pocet == 0 ? 0 : (decimal)Data[year].NumSPolitiky / basicData[year].Pocet;
                Data[year].PercentKcSPolitiky =
                    basicData[year].CelkemCena == 0 ? 0 : ((decimal)(Data[year].SumKcSPolitiky) / (decimal)basicData[year].CelkemCena);
            }
        }
Example #6
0
        private static BasicDataPerYear getBasicStatisticForSimpleQuery(string query)
        {
            Dictionary <int, BasicData> result = new Dictionary <int, BasicData>();

            if (string.IsNullOrEmpty(query))
            {
                return(BasicDataPerYear.Empty());
            }


            AggregationContainerDescriptor <HlidacStatu.Lib.Data.Smlouva> aggs = new AggregationContainerDescriptor <HlidacStatu.Lib.Data.Smlouva>()
                                                                                 .DateHistogram("x-agg", h => h
                                                                                                .Field(f => f.datumUzavreni)
                                                                                                .Interval(Nest.DateInterval.Year)
                                                                                                .Aggregations(agg => agg
                                                                                                              .Sum("sumincome", s => s
                                                                                                                   .Field(ff => ff.CalculatedPriceWithVATinCZK)
                                                                                                                   )
                                                                                                              )
                                                                                                );
            // new AggregationContainerDescriptor<HlidacStatu.Lib.Data.Smlouva>().Sum("sumKc", m => m.Field(f => f.CalculatedPriceWithVATinCZK))
            //CelkemCena = res.ElasticResults.Aggregations.Keys.Contains("sumKc") ? ((Nest.ValueAggregate)res.Result.Aggregations["sumKc"]).Value : 0,


            var client = HlidacStatu.Lib.ES.Manager.GetESClient();
            var res    = HlidacStatu.Lib.Data.Smlouva.Search.SimpleSearch(query, 0, 0,
                                                                          HlidacStatu.Lib.Data.Smlouva.Search.OrderResult.FastestForScroll, aggs, true, exactNumOfResults: true);

            if (res.IsValid == false)
            {
                return(BasicDataPerYear.Empty());
            }
            foreach (Nest.DateHistogramBucket val in ((BucketAggregate)res.ElasticResults.Aggregations["x-agg"]).Items)
            {
                var bdata = new BasicData()
                {
                    Pocet      = val.DocCount ?? 0,
                    CelkemCena = (decimal)(((Nest.DateHistogramBucket)val).Sum("sumincome").Value ?? 0)
                };
                result.Add(val.Date.Year, bdata);
            }
            return(new BasicDataPerYear(result));
        }
Example #7
0
        public void Add(BasicDataPerYear oth)
        {
            //Dictionary<int, BasicData> data = new Dictionary<int, BasicData>();
            foreach (var kv in oth.Data)
            {
                if (this.Data.Keys.Contains(kv.Key))
                {
                    this.Data[kv.Key].Add(kv.Value.Pocet, kv.Value.CelkemCena);
                }
                else
                {
                    this.Data.Add(kv.Key, kv.Value);
                }
            }

            //add summary
            this.Data.Remove(DataPerYear.AllYearsSummaryKey);
            Data.Add(DataPerYear.AllYearsSummaryKey, new BasicData()
            {
                Pocet      = Data.Sum(m => m.Value.Pocet),
                CelkemCena = Data.Sum(m => m.Value.CelkemCena)
            });
        }
 public static RatingDataPerYear Empty()
 {
     return(new RatingDataPerYear(
                new Dictionary <int, RatingData>(), BasicDataPerYear.Empty()
                ));
 }
 public RatingDataPerYear(Dictionary <int, RatingData> dataFromDb, BasicDataPerYear basicData)
 {
     Init(dataFromDb, basicData);
 }