예제 #1
0
        /// <summary>
        /// Carga y agrega taxonomía a Cache
        /// </summary>
        /// <param name="list">Lista de DTS de taxonomía</param>
        /// <param name="CacheTaxonomia">Objeto de caché de taxonomía a agregar</param>
        /// <returns>La taxonomía agregada</returns>
        private TaxonomiaDto AgregarTaxonomiaACache(IList <DtsDocumentoInstanciaDto> list, ICacheTaxonomiaXBRL CacheTaxonomia)
        {
            var errores = new List <ErrorCargaTaxonomiaDto>();

            if (list != null && list.Count > 0)
            {
                var taxo = XPEServiceImpl.GetInstance(ForzarHttp).CargarTaxonomiaXbrl(list[0].HRef, errores, false);
                if (errores.Count > 0)
                {
                    LogUtil.Error("La taxonomía: " + list[0].HRef + " contiene errores");
                    foreach (var error in errores)
                    {
                        LogUtil.Error(error);
                    }
                }
                else
                {
                    if (CacheTaxonomia.ObtenerTaxonomia(list) == null)
                    {
                        CacheTaxonomia.AgregarTaxonomia(list, taxo);
                    }
                    return(taxo);
                }
            }
            else
            {
                errores.Add(new ErrorCargaTaxonomiaDto()
                {
                    Mensaje   = "No existen archivos en la lista de SchemaRef",
                    Severidad = ErrorCargaTaxonomiaDto.SEVERIDAD_FATAL
                });
            }

            return(null);
        }
        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));
        }
예제 #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);
        }