protected void SetFilingIndicators() { var finds = new Dictionary <string, string>(); this.FilingIndicators.Clear(); this.XbrlFilingIndicators.Clear(); foreach (var fact in Facts) { var cells = fact.Cells; foreach (var cell in cells) { var tableid = cell.Remove(cell.IndexOf("<")); if (!finds.ContainsKey(tableid)) { var table = this.Taxonomy.Tables.FirstOrDefault(i => i.ID == tableid); var find = table.FilingIndicator; finds.Add(tableid, find); var filingndicator = new FilingIndicator(); filingndicator.ContextID = FilingIndicator.DefaultContextID; filingndicator.Value = find; this.XbrlFilingIndicators.Add(filingndicator); var logicalFind = new LogicalModel.FilingIndicator(); logicalFind.ID = find; this.FilingIndicators.Add(logicalFind); } } } //return finds.Select(i=>i.Key).ToList(); }
public void LoadLogicalData() { this.FactDictionary.SetInstance(this); this.TaxonomyModuleReference = this.SchemaRef.Href; this.FilingIndicators = this.XbrlFilingIndicators.Select(i => { var find = new LogicalModel.FilingIndicator(); find.ID = i.Value; find.Filed = i.Filed; return(find); }).ToList(); var lastfactpartid = Taxonomy.CounterFactParts.Keys.Max(); var ix = 0; foreach (var xbrlfact in XbrlFacts) { //var instancecontext = this.Contexts.Items[xbrlfact.ContextRef]; var logicalfact = new LogicalModel.InstanceFact(); logicalfact.IX = ix; ix++; logicalfact.UnitID = xbrlfact.UnitRef; logicalfact.ContextID = xbrlfact.ContextRef; logicalfact.ID = xbrlfact.ID; logicalfact.Decimals = String.IsNullOrEmpty(xbrlfact.Decimals) ? "" : xbrlfact.Decimals; var factstring = ""; factstring = String.Format("{0},", xbrlfact.Concept); var factparts = new List <String>(); factparts.Add(xbrlfact.Concept); var conceptid = GetPartID(xbrlfact.Concept); var factids = new List <int>(); factids.Add(conceptid); var factkey = factstring; logicalfact.Concept = new LogicalModel.Concept(); logicalfact.Concept.Content = xbrlfact.Concept; logicalfact.Value = xbrlfact.Value; this.FactDictionary.AddFact(logicalfact); this.Facts.Add(logicalfact); } Logger.WriteLine(String.Format("Instance has {0} facts", this.Facts.Count)); XbrlFacts.Clear(); var miconceptfact = Facts.FirstOrDefault(i => i.Concept.Name.StartsWith("mi")); if (miconceptfact != null) { var micontext = Contexts.Items[miconceptfact.ContextID]; var miunit = Units.FirstOrDefault(i => i.ID == miconceptfact.UnitID); if (miunit != null) { var measurestring = miunit.Measure.Content.ToLower(); var taxunit = Taxonomy.Units.FirstOrDefault(i => i.Measure.Content.ToLower() == measurestring); ReportingMonetaryUnit = taxunit; } } if (Contexts.Items.Count > 0) { var firstcontext = Contexts.Items.Values.FirstOrDefault(); this.Entity = firstcontext.Entity; this.ReportingDate = firstcontext.Period.Instant; this.ReportingPeriod = firstcontext.Period; } SetCells(); SetExtensions(); SaveToJson(); }