Exemplo n.º 1
0
        public InfoFact[] InfoFacts()
        {
            var  sName   = ObecneJmeno();
            bool sMuzsky = sName == uradName;


            lock (lockInfoObj)
            {
                if (_infofacts == null)
                {
                    List <InfoFact> f    = new List <InfoFact>();
                    var             stat = new HlidacStatu.Lib.Analysis.SubjectStatistic(this);
                    int             rok  = DateTime.Now.Year;
                    if (DateTime.Now.Month < 2)
                    {
                        rok = rok - 1;
                    }
                    if (stat.BasicStatPerYear.SummaryAfter2016().Pocet == 0)
                    {
                        f.Add(new InfoFact($"{sName} nemá žádné smluvní vztahy evidované v&nbsp;registru smluv.", InfoFact.ImportanceLevel.Medium));
                        f.Add(new InfoFact($"{(sMuzsky ? "Byl založen" : "Byla založena")} <b>{this.Datum_Zapisu_OR?.ToString("d. M. yyyy")}</b>.", InfoFact.ImportanceLevel.Medium));
                    }
                    else
                    {
                        f.Add(new InfoFact($"V roce <b>{rok}</b> uzavřel{(sMuzsky ? "" : "a")} {sName.ToLower()} " +
                                           Devmasters.Core.Lang.Plural.Get((int)stat.BasicStatPerYear[rok].Pocet, "jednu smlouvu v&nbsp;registru smluv", "{0} smlouvy v&nbsp;registru smluv", "celkem {0} smluv v&nbsp;registru smluv")
                                           + $" za <b>{HlidacStatu.Util.RenderData.ShortNicePrice(stat.BasicStatPerYear[rok].CelkemCena, html: true)}</b>."
                                           , InfoFact.ImportanceLevel.Summary)
                              );

                        f.Add(new InfoFact($"Mezi lety <b>{rok - 1}-{rok - 2000}</b> "
                                           + stat.BasicStatPerYear.YearChange(rok).RenderChangeWord(false, stat.BasicStatPerYear.YearChange(rok).CenaChangePerc,
                                                                                                    "došlo k <b>poklesu zakázek o&nbsp;{0:P2}</b> v&nbsp;Kč .", " nedošlo ke změně objemu zakázek.", "došlo k <b>nárůstu zakázek o&nbsp;{0:P2}</b> v&nbsp;Kč.")
                                           , InfoFact.ImportanceLevel.Medium)
                              );

                        if (stat.RatingPerYear[rok].NumBezCeny > 0)
                        {
                            f.Add(new InfoFact(
                                      $"V <b>{rok} utajil{(sMuzsky ? "" : "a")}</b> hodnotu kontraktu " +
                                      Devmasters.Core.Lang.Plural.Get((int)stat.RatingPerYear[rok].NumBezCeny, "u&nbsp;jedné smlouvy", "u&nbsp;{0} smluv", "u&nbsp;{0} smluv")
                                      + $", což je celkem <b>{stat.RatingPerYear[rok].PercentBezCeny.ToString("P2")}</b> ze všech.",
                                      InfoFact.ImportanceLevel.Medium)
                                  );
                        }
                        else if (stat.RatingPerYear[rok - 1].NumBezCeny > 0)
                        {
                            f.Add(new InfoFact(
                                      $"V <b>{rok - 1} utajil{(sMuzsky ? "" : "a")}</b> hodnotu kontraktů " +
                                      Devmasters.Core.Lang.Plural.Get((int)stat.RatingPerYear[rok - 1].NumBezCeny, "u&nbsp;jedné smlouvy", "u&nbsp;{0} smluv", "u&nbsp;{0} smluv")
                                      + $", což je celkem <b>{stat.RatingPerYear[rok - 1].PercentBezCeny.ToString("P2")}</b> ze všech."
                                      , InfoFact.ImportanceLevel.Medium)
                                  );
                        }

                        long numFatalIssue = HlidacStatu.Lib.Data.Smlouva.Search.SimpleSearch($"ico:{this.ICO} AND chyby:zasadni", 0, 0, HlidacStatu.Lib.Data.Smlouva.Search.OrderResult.FastestForScroll, exactNumOfResults: true).Total;
                        long numVazneIssue = HlidacStatu.Lib.Data.Smlouva.Search.SimpleSearch($"ico:{this.ICO} AND chyby:vazne", 0, 0, HlidacStatu.Lib.Data.Smlouva.Search.OrderResult.FastestForScroll, exactNumOfResults: true).Total;

                        if (numFatalIssue > 0)
                        {
                            f.Add(new InfoFact($@"Má v registru smluv
                                    <b>{Devmasters.Core.Lang.Plural.GetWithZero((int)numFatalIssue, "0 smluv", "jednu smlouvu obsahující", "{0} smlouvy obsahující", "{0:### ### ##0} smluv obsahujících ")}
                                        tak závažné nedostatky v rozporu se zákonem,
                                    </b>že jsou velmi pravděpodobně neplatné.", InfoFact.ImportanceLevel.High));
                        }
                        if (numVazneIssue > 0)
                        {
                            f.Add(new InfoFact($@"Má v registru smluv
                                    <b>{Devmasters.Core.Lang.Plural.GetWithZero((int)numFatalIssue, "0 smluv", "jednu smlouvu obsahující", "{0} smlouvy obsahující", "{0:### ### ##0} smluv obsahujících ")}</b>
                                        vážné nedostatky."
                                               , InfoFact.ImportanceLevel.Medium)
                                  );
                        }

                        DateTime datumOd = new DateTime(DateTime.Now.Year - 10, 1, 1);
                        if (PatrimStatu() == false &&
                            IsSponzor() &&
                            Events(m => m.Type == (int)FirmaEvent.Types.Sponzor && m.DatumOd >= datumOd).Count() > 0
                            )
                        {
                            var        sponzoring = this.Events(m => m.Type == (int)FirmaEvent.Types.Sponzor && m.DatumOd >= datumOd);
                            string[]   strany     = sponzoring.Select(m => m.AddInfo).Distinct().ToArray();
                            DateTime[] roky       = sponzoring.Select(m => m.DatumOd.Value).Distinct().OrderBy(y => y).ToArray();
                            decimal    celkem     = sponzoring.Sum(m => m.AddInfoNum) ?? 0;
                            decimal    top        = sponzoring.Max(m => m.AddInfoNum) ?? 0;

                            f.Add(new InfoFact($"{sName} "
                                               + Devmasters.Core.Lang.Plural.Get(roky.Count(), "v roce " + roky[0].Year, $"mezi roky {roky.First().Year}-{roky.Last().Year - 2000}", $"mezi roky {roky.First().Year}-{roky.Last().Year - 2000}")
                                               + $" sponzoroval{(sMuzsky ? "" : "a")} " +
                                               Devmasters.Core.Lang.Plural.Get(strany.Length, strany[0], "{0} polit.strany", "{0} polit.stran")
                                               + $" v&nbsp;celkové výši <b>{HlidacStatu.Util.RenderData.ShortNicePrice(celkem, html: true)}</b>. "
                                               + $"Nejvyšší sponzorský dar byl ve výši {RenderData.ShortNicePrice(top, html: true)}."
                                               , InfoFact.ImportanceLevel.Medium)
                                  );
                        }

                        if (PatrimStatu() == false &&
                            StaticData.FirmySVazbamiNaPolitiky_nedavne_Cache.Get().SoukromeFirmy.ContainsKey(this.ICO)
                            )
                        {
                            var politici = StaticData.FirmySVazbamiNaPolitiky_nedavne_Cache.Get().SoukromeFirmy[this.ICO];
                            if (politici.Count > 0)
                            {
                                var sPolitici = Osoby.GetById.Get(politici[0]).FullNameWithYear();
                                if (politici.Count == 2)
                                {
                                    sPolitici = sPolitici + " a " + Osoby.GetById.Get(politici[1]).FullNameWithYear();
                                }
                                else if (politici.Count == 3)
                                {
                                    sPolitici = sPolitici
                                                + ", "
                                                + Osoby.GetById.Get(politici[1]).FullNameWithYear()
                                                + " a "
                                                + Osoby.GetById.Get(politici[2]).FullNameWithYear();
                                }
                                else if (politici.Count > 3)
                                {
                                    sPolitici = sPolitici
                                                + ", "
                                                + Osoby.GetById.Get(politici[1]).FullNameWithYear()
                                                + ", "
                                                + Osoby.GetById.Get(politici[2]).FullNameWithYear()
                                                + " a další";
                                }
                                f.Add(new InfoFact(
                                          $"Ve firmě se "
                                          + Devmasters.Core.Lang.Plural.Get(politici.Count()
                                                                            , " angažuje jedna politicky angažovaná osoba - "
                                                                            , " angažují {0} politicky angažované osoby - "
                                                                            , " angažuje {0} politicky angažovaných osob - ")
                                          + sPolitici + "."
                                          , InfoFact.ImportanceLevel.Medium)
                                      );
                            }
                        }

                        if (PatrimStatu() && stat.RatingPerYear[rok].NumSPolitiky > 0)
                        {
                            f.Add(new InfoFact($"V <b>{rok}</b> uzavřel{(sMuzsky ? "" : "a")} {sName.ToLower()} " +
                                               Devmasters.Core.Lang.Plural.Get((int)stat.RatingPerYear[rok].NumSPolitiky, "jednu smlouvu; {0} smlouvy;{0} smluv")
                                               + $" s firmama s vazbou na politiky za celkem <b>{HlidacStatu.Util.RenderData.ShortNicePrice(stat.RatingPerYear[rok].SumKcSPolitiky, html: true)}</b> "
                                               + $" (tj. {stat.RatingPerYear[rok].PercentKcSPolitiky.ToString("P2")})."
                                               , InfoFact.ImportanceLevel.Medium)
                                  );
                        }
                        else if (PatrimStatu() && stat.RatingPerYear[rok - 1].NumSPolitiky > 0)
                        {
                            f.Add(new InfoFact($"V <b>{rok - 1}</b> uzavřel{(sMuzsky ? "" : "a")} {sName.ToLower()} " +
                                               Devmasters.Core.Lang.Plural.Get((int)stat.RatingPerYear[rok - 1].NumSPolitiky, "jednu smlouvu; {0} smlouvy;{0} smluv")
                                               + $" s firmama s vazbou na politiky za celkem <b>{HlidacStatu.Util.RenderData.ShortNicePrice(stat.RatingPerYear[rok - 1].SumKcSPolitiky, html: true)}</b> "
                                               + $" (tj. {stat.RatingPerYear[rok - 1].PercentKcSPolitiky.ToString("P2")})."
                                               , InfoFact.ImportanceLevel.Medium)
                                  );
                        }


                        f.Add(new InfoFact($"Od roku <b>2016</b> uzavřel{(sMuzsky ? "" : "a")} {sName.ToLower()} " +
                                           Devmasters.Core.Lang.Plural.Get((int)stat.BasicStatPerYear.SummaryAfter2016().Pocet, "jednu smlouvu v&nbsp;registru smluv", "{0} smlouvy v&nbsp;registru smluv", "celkem {0} smluv v&nbsp;registru smluv")
                                           + $" za <b>{HlidacStatu.Util.RenderData.ShortNicePrice(stat.BasicStatPerYear.SummaryAfter2016().CelkemCena, html: true)}</b>."
                                           , InfoFact.ImportanceLevel.Low)
                              );
                    }

                    if (this.PatrimStatu() == false && this.IcosInHolding(Relation.AktualnostType.Aktualni).Count() > 2)
                    {
                        var statHolding = this.StatisticForHolding(Relation.AktualnostType.Aktualni);
                        if (statHolding.Summary.Pocet > 3)
                        {
                            f.Add(new InfoFact($"V roce <b>{rok}</b> uzavřel celý holding " +
                                               Devmasters.Core.Lang.Plural.Get((int)statHolding.Data[rok].Pocet, "jednu smlouvu v&nbsp;registru smluv", "{0} smlouvy v&nbsp;registru smluv", "celkem {0} smluv v&nbspregistru smluv")
                                               + $" za <b>{HlidacStatu.Util.RenderData.ShortNicePrice(statHolding.Data[rok].CelkemCena, html: true)}</b>."
                                               , InfoFact.ImportanceLevel.Low)
                                  );

                            f.Add(new InfoFact($"Mezi lety <b>{rok - 1}-{rok - 2000}</b> "
                                               + stat.BasicStatPerYear.YearChange(rok).RenderChangeWord(false, stat.BasicStatPerYear.YearChange(rok).CenaChangePerc,
                                                                                                        "celému holdingu poklesla hodnota smluv o&nbsp;<b>{0:P2}</b>.", " nedošlo pro celý holding ke změně hodnoty smluv.", "celému holdingu narostla hodnota smluv o&nbsp;<b>{0:P2}</b>.")
                                               , InfoFact.ImportanceLevel.Low)
                                  );
                        }
                    }

                    _infofacts = f.OrderByDescending(o => o.Level).ToArray();
                }
            }
            return(_infofacts);
        }
Exemplo n.º 2
0
        public InfoFact[] InfoFacts()
        {
            lock (lockInfoObj)
            {
                if (_infofacts == null)
                {
                    List <InfoFact> f    = new List <InfoFact>();
                    var             stat = new HlidacStatu.Lib.Analysis.OsobaStatistic(this, Relation.AktualnostType.Nedavny);
                    int             rok  = DateTime.Now.Year;
                    if (DateTime.Now.Month <= 2)
                    {
                        rok = rok - 1;
                    }
                    var kdoje = this.Description(false,
                                                 m => m.Type != (int)HlidacStatu.Lib.Data.FirmaEvent.Types.Sponzor &&
                                                 m.Type != (int)HlidacStatu.Lib.Data.FirmaEvent.Types.SponzorZuctu,
                                                 2, itemDelimeter: ", ");
                    var descr = $"<b>{this.FullNameWithYear()}</b>";
                    if (!string.IsNullOrEmpty(kdoje))
                    {
                        descr += "," + kdoje + (kdoje.EndsWith(".") ? "" : ".");
                    }
                    f.Add(new InfoFact(descr, InfoFact.ImportanceLevel.Summary));

                    var statDesc = "";
                    if (stat.StatniFirmy.Count > 0)
                    {
                        statDesc += $"Angažoval se v {Devmasters.Core.Lang.Plural.Get(stat.StatniFirmy.Count, "jedné státní firmě","{0} státních firmách","{0} státních firmách")}. ";
                    }
                    if (stat.SoukromeFirmy.Count > 0)
                    {
                        statDesc += $"Angažoval se {(statDesc.Length>0 ? "také" : "")} v {Devmasters.Core.Lang.Plural.Get(stat.SoukromeFirmy.Count, "jedné soukr.firmě", "{0} soukr.firmách", "{0} soukr.firmách")}, "
                                    + $"tyto firmy získaly od státu od 2016 celkem "
                                    + Devmasters.Core.Lang.Plural.Get((int)stat.BasicStatPerYear.Summary.Pocet, "jednu smlouvu", "{0} smlouvy", "{0} smluv")
                                    + " v celkové výši " + HlidacStatu.Lib.Data.Smlouva.NicePrice(stat.BasicStatPerYear.SummaryAfter2016().CelkemCena, html: true, shortFormat: true)
                                    + ".";
                    }
                    ;

                    if (statDesc.Length > 0)
                    {
                        f.Add(new InfoFact(statDesc, InfoFact.ImportanceLevel.Stat));
                    }

                    DateTime datumOd = new DateTime(DateTime.Now.Year - 10, 1, 1);
                    if (this.IsSponzor() && this.Sponzoring().Where(m => m.DatumOd >= datumOd).Count() > 0)
                    {
                        var        sponzoring = this.Sponzoring().Where(m => m.DatumOd >= datumOd).ToArray();
                        string[]   strany     = sponzoring.Select(m => m.AddInfo).Distinct().ToArray();
                        DateTime[] roky       = sponzoring.Select(m => m.DatumOd.Value).Distinct().OrderBy(y => y).ToArray();
                        decimal    celkem     = sponzoring.Sum(m => m.AddInfoNum) ?? 0;
                        decimal    top        = sponzoring.Max(m => m.AddInfoNum) ?? 0;

                        f.Add(new InfoFact($"{this.FullName()} "
                                           + Devmasters.Core.Lang.Plural.Get(roky.Count(), "v roce " + roky[0].Year, $"mezi roky {roky.First().Year}-{roky.Last().Year - 2000}", $"mezi roky {roky.First().Year}-{roky.Last().Year - 2000}")
                                           + $" sponzoroval{(this.Muz() ? "" : "a")} " +
                                           Devmasters.Core.Lang.Plural.Get(strany.Length, strany[0], "{0} polit. strany", "{0} polit. stran")
                                           + $" v&nbsp;celkové výši <b>{HlidacStatu.Util.RenderData.ShortNicePrice(celkem, html: true)}</b>. "
                                           + $"Nejvyšší sponzorský dar byl ve výši {RenderData.ShortNicePrice(top, html: true)}."
                                           , InfoFact.ImportanceLevel.Medium)
                              );
                    }

                    var ostat = new HlidacStatu.Lib.Analysis.OsobaStatistic(this.NameId, HlidacStatu.Lib.Data.Relation.AktualnostType.Nedavny);
                    if (ostat.BasicStatPerYear.Summary.Pocet > 0)
                    {
                        if (ostat.BasicStatPerYear[rok].Pocet > 0)
                        {
                            f.Add(new InfoFact(
                                      Devmasters.Core.Lang.Plural.Get(ostat.SoukromeFirmy.Count, $"Jedna firma, ve které se angažuje, v&nbsp;roce {rok} získala", $"{{0}} firem, ve kterých se angažuje, v&nbsp;roce {rok} získaly", $"{{0}} firem, ve kterých se angažuje, v&nbsp;roce {rok} získaly")
                                      + $" zakázky za celkem <b>{HlidacStatu.Util.RenderData.ShortNicePrice(stat.BasicStatPerYear[rok].CelkemCena, html: true)}</b>."
                                      , InfoFact.ImportanceLevel.Medium)
                                  );
                        }
                        else if (ostat.BasicStatPerYear[rok - 1].Pocet > 0)
                        {
                            f.Add(new InfoFact(
                                      $"Je angažován{(this.Muz() ? "" : "a")} v&nbsp;" +
                                      Devmasters.Core.Lang.Plural.Get(ostat.SoukromeFirmy.Count, $"jedné firmě, která v&nbsp;roce {rok - 1} získala", $"{{0}} firmách, které v&nbsp;roce {rok} získaly", $"{{0}} firmách, které v&nbsp;roce {rok - 1} získaly")
                                      + $" zakázky za celkem <b>{HlidacStatu.Util.RenderData.ShortNicePrice(stat.BasicStatPerYear[rok - 1].CelkemCena, html: true)}</b>."
                                      , InfoFact.ImportanceLevel.Medium)
                                  );
                        }
                    }
                    _infofacts = f.OrderByDescending(o => o.Level).ToArray();
                }
            }
            return(_infofacts);
        }