/// <summary> /// Obtiene una taxonomía del caché o la carga y agrega en caso de no encontrarse /// </summary> /// <param name="listaDts"></param> /// <returns></returns> private TaxonomiaDto ObtenerTaxonomia(IList <DtsDocumentoInstanciaDto> listaDts) { var tax = CacheTaxonomia.ObtenerTaxonomia(listaDts); if (tax == null) { //Cargar taxonomía si no se encuentra en cache var errores = new List <ErrorCargaTaxonomiaDto>(); var xpe = AbaxXBRLCore.XPE.impl.XPEServiceImpl.GetInstance(ForzarHttp); tax = xpe.CargarTaxonomiaXbrl(listaDts.Where(x => x.Tipo == DtsDocumentoInstanciaDto.SCHEMA_REF).First().HRef, errores, false); if (tax != null) { CacheTaxonomia.AgregarTaxonomia(listaDts, tax); } else { LogUtil.Error("Error al cargar taxonomía:" + listaDts.Where(x => x.Tipo == DtsDocumentoInstanciaDto.SCHEMA_REF).First().HRef); foreach (var error in errores) { LogUtil.Error(error.Mensaje); } } } return(tax); }
public IHttpActionResult CargarDocumentoInstanciaXbrl(long?idDocumentoInstancia, int?numeroVersion) { var viewerService = new XbrlViewerService(); var resultadoOperacion = new ResultadoOperacionDto(); if (idDocumentoInstancia != null) { if (numeroVersion != null) { resultadoOperacion = DocumentoInstanciaService.ObtenerVersionModeloDocumentoInstanciaXbrl(idDocumentoInstancia.Value, numeroVersion.Value, IdUsuarioExec); } else { resultadoOperacion = DocumentoInstanciaService.ObtenerModeloDocumentoInstanciaXbrl(idDocumentoInstancia.Value, IdUsuarioExec); } var instanciaDto = (resultadoOperacion.InformacionExtra as DocumentoInstanciaXbrlDto); if (instanciaDto != null) { var taxonomiaDto = CacheTaxonomia.ObtenerTaxonomia(instanciaDto.DtsDocumentoInstancia); if (taxonomiaDto == null) { var taxo = new TaxonomiaXBRL { ManejadorErrores = new ManejadorErroresCargaTaxonomia() }; foreach (var dts in instanciaDto.DtsDocumentoInstancia) { if (dts.Tipo == DtsDocumentoInstanciaDto.SCHEMA_REF) { taxo.ProcesarDefinicionDeEsquema(dts.HRef); } } taxo.CrearArbolDeRelaciones(); taxonomiaDto = viewerService.CrearTaxonomiaAPartirDeDefinicionXbrl(taxo); CacheTaxonomia.AgregarTaxonomia(instanciaDto.DtsDocumentoInstancia, taxonomiaDto); EstrategiaCacheTaxonomia.AgregarTaxonomia(DocumentoInstanciaXbrlDtoConverter.ConvertirDtsDocumentoInstancia(instanciaDto.DtsDocumentoInstancia), taxo); } (resultadoOperacion.InformacionExtra as DocumentoInstanciaXbrlDto).Taxonomia = taxonomiaDto; } } else { resultadoOperacion.Resultado = false; resultadoOperacion.Mensaje = "El identificador del documento de instancia es requerido"; } var jsonResult = this.Json(resultadoOperacion); return(jsonResult); }