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 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 registru smluv", "{0} smlouvy v registru smluv", "celkem {0} smluv v 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 {0:P2}</b> v Kč .", " nedošlo ke změně objemu zakázek.", "došlo k <b>nárůstu zakázek o {0:P2}</b> v 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 jedné smlouvy", "u {0} smluv", "u {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 jedné smlouvy", "u {0} smluv", "u {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 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 registru smluv", "{0} smlouvy v registru smluv", "celkem {0} smluv v 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 registru smluv", "{0} smlouvy v registru smluv", "celkem {0} smluv v registru 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 <b>{0:P2}</b>.", " nedošlo pro celý holding ke změně hodnoty smluv.", "celému holdingu narostla hodnota smluv o <b>{0:P2}</b>.") , InfoFact.ImportanceLevel.Low) ); } } _infofacts = f.OrderByDescending(o => o.Level).ToArray(); } } return(_infofacts); }
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 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 roce {rok} získala", $"{{0}} firem, ve kterých se angažuje, v roce {rok} získaly", $"{{0}} firem, ve kterých se angažuje, v 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 " + Devmasters.Core.Lang.Plural.Get(ostat.SoukromeFirmy.Count, $"jedné firmě, která v roce {rok - 1} získala", $"{{0}} firmách, které v roce {rok} získaly", $"{{0}} firmách, které v 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); }