private XbrlContext GetContext(LogicalModel.InstanceFact fact) { var contextcount = this.Contexts.Items.Count; var contextid = String.Format("CT_{0}", contextcount + 1); XbrlContext ct = null; ct = new XbrlContext(); ct.ID = contextid; ct.Entity = this.Entity; ct.Period = this.ReportingPeriod; var scenario = new Scenario(); foreach (var dimension in fact.Dimensions) { scenario.Dimensions.Add(dimension); } ct.Scenario = scenario; return(ct); }
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(); }