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);
        }
        public IHttpActionResult DescargarEjecucionConsultaParametrizada()
        {
            var    serializerSettings = new JsonSerializerSettings();
            String consultaAnalisis   = getFormKeyValue("consulta");

            var resultado = new ResultadoOperacionDto()
            {
                Resultado = true,
                Mensaje   = "Ok"
            };

            var consultaAnalisisDto = (ConsultaAnalisisDto)JsonConvert.DeserializeObject(consultaAnalisis, typeof(ConsultaAnalisisDto), serializerSettings);

            try
            {
                resultado = DocumentoInstanciaService.ObtenerVersionesDocumentosPorConfiguracionConsulta(consultaAnalisisDto);

                if (resultado.Resultado)
                {
                    var resultadoOperacionTaxonomia = DocumentoInstanciaService.ObtenerTaxonomiaBdPorId(consultaAnalisisDto.IdTaxonomiaXbrl);
                    if (resultadoOperacionTaxonomia.Resultado)
                    {
                        var taxonomia = (TaxonomiaXbrl)resultadoOperacionTaxonomia.InformacionExtra;

                        var listaDts = DocumentoInstanciaXbrlDtoConverter.ConvertirDTSDocumentoInstancia(taxonomia.ArchivoTaxonomiaXbrl);
                        var taxoDto  = _cacheTaxonomiaXbrl.ObtenerTaxonomia(listaDts);

                        var estructuraDocumento = ConsultaAnalisisService.ObtenerInformacionConsultaDocumentos(consultaAnalisisDto, (List <DocumentoInstanciaXbrlDto>)resultado.InformacionExtra, taxoDto);
                        return(this.ExportDatosEstructuraDocumento("Index", estructuraDocumento, "estructuraDocumento.xls", consultaAnalisisDto));
                    }
                }
            }
            catch (Exception ex)
            {
                resultado.Resultado        = false;
                resultado.InformacionExtra = ex;
                resultado.Mensaje          = "Ocurrio un error al obtener informacion de una configuracion de una consulta de analisis: " + ex.Message;
                return(Json(resultado));
            }

            return(Json(resultado));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Retorna la definición de la taxonomía por el identificador.
        /// </summary>
        /// <param name="idTaxonomia">Identificador de la taxonomía.</param>
        /// <returns>Resultado con la definición de la taxonomía.</returns>
        private ResultadoOperacionDto ObtenerDefinicionTaxonomiaPorId(long idTaxonomia)
        {
            var resultado = DocumentoInstanciaService.ObtenerTaxonomiaBdPorId(idTaxonomia);
            var errores   = new List <ErrorCargaTaxonomiaDto>();

            if (resultado.Resultado && resultado.InformacionExtra != null)
            {
                //Cargar la taxonomía
                var taxoBd   = resultado.InformacionExtra as TaxonomiaXbrl;
                var listaDts =
                    DocumentoInstanciaXbrlDtoConverter.ConvertirDTSDocumentoInstancia(taxoBd.ArchivoTaxonomiaXbrl);
                var taxoDto = _cacheTaxonomiaXbrl.ObtenerTaxonomia(listaDts);
                if (taxoDto == null)
                {
                    var resultadoTaxonomia = DocumentoInstanciaService.ObtenerTaxonomiaXbrlProcesada(idTaxonomia, errores);
                    var taxonomia          = resultadoTaxonomia.InformacionExtra as ITaxonomiaXBRL;
                    taxoDto = XbrlViewerService.CrearTaxonomiaAPartirDeDefinicionXbrl(taxonomia);
                    if (taxonomia.ManejadorErrores.PuedeContinuar())
                    {
                        _cacheTaxonomiaXbrl.AgregarTaxonomia(listaDts, taxoDto);
                        _estrategiaCacheTaxonomia.AgregarTaxonomia(DocumentoInstanciaXbrlDtoConverter.ConvertirArchivoTaxonomiaXbrl(taxoBd.ArchivoTaxonomiaXbrl)
                                                                   , taxonomia);
                    }
                    else
                    {
                        resultado.Resultado        = false;
                        resultado.InformacionExtra = taxonomia.ManejadorErrores.GetErroresTaxonomia();
                    }
                }
            }
            if (errores.Count() > 0)
            {
                LogUtil.Error(errores);
            }
            return(resultado);
        }