public ResultadoOperacionDto BorrarTaxonomiaXbrl(long idTaxonomiaXbrl, long idUsuarioExec)
        {
            var resultado = new ResultadoOperacionDto();

            try
            {
                var param = new List <object>()
                {
                    TaxonomiaXbrlRepository.Obtener(idTaxonomiaXbrl).Nombre
                };
                resultado.InformacionAuditoria = new InformacionAuditoriaDto(idUsuarioExec, ConstantsAccionAuditable.Borrar, ConstantsModulo.TaxonomiaXbrl, MensajesServicios.BorrarTaxonomiaXbrl, param);
                TaxonomiaXbrlRepository.DbContext.Database.ExecuteSqlCommand(string.Format("delete from TipoEmpresaTaxonomiaXbrl where IdTaxonomiaXbrl = {0};", idTaxonomiaXbrl));
                ArchivoTaxonomiaXbrlRepository.Borrar(idTaxonomiaXbrl);
                TaxonomiaXbrlRepository.Borrar(idTaxonomiaXbrl);
                resultado.Resultado        = true;
                resultado.InformacionExtra = true;
            }
            catch (Exception exception)
            {
                resultado.Resultado            = false;
                resultado.Mensaje              = exception.Message;
                resultado.InformacionExtra     = exception;
                resultado.InformacionAuditoria = null;
            }
            return(resultado);
        }
        public ResultadoOperacionDto GuardarTaxonomiaXbrl(TaxonomiaXbrlDto taxonomiaXbrl, long idUsuarioExec)
        {
            var resultado = new ResultadoOperacionDto();

            try
            {
                var param = new List <object>()
                {
                    taxonomiaXbrl.Nombre
                };
                var informacionAuditoria = new InformacionAuditoriaDto(idUsuarioExec, taxonomiaXbrl.IdTaxonomiaXbrl == 0 ? ConstantsAccionAuditable.Insertar : ConstantsAccionAuditable.Actualizar, ConstantsModulo.TaxonomiaXbrl, taxonomiaXbrl.IdTaxonomiaXbrl == 0 ? MensajesServicios.InsertarTaxonomiaXbrl : MensajesServicios.ActualizarTaxonomiaXbrl, param);
                var taxonomia            = TaxonomiaXbrlRepository.GetById(taxonomiaXbrl.IdTaxonomiaXbrl);

                if (taxonomia == null)
                {
                    taxonomia = new TaxonomiaXbrl
                    {
                        Nombre                  = taxonomiaXbrl.Nombre,
                        Descripcion             = taxonomiaXbrl.Descripcion,
                        Anio                    = taxonomiaXbrl.Anio,
                        Activa                  = taxonomiaXbrl.Activa,
                        EspacioNombresPrincipal = taxonomiaXbrl.EspacioNombresPrincipal
                    };
                }
                else
                {
                    taxonomia.Nombre                  = taxonomiaXbrl.Nombre;
                    taxonomia.Descripcion             = taxonomiaXbrl.Descripcion;
                    taxonomia.Anio                    = taxonomiaXbrl.Anio;
                    taxonomia.Activa                  = taxonomiaXbrl.Activa;
                    taxonomia.EspacioNombresPrincipal = taxonomiaXbrl.EspacioNombresPrincipal;
                }
                resultado = TaxonomiaXbrlRepository.Guardar(taxonomia);
                resultado.InformacionAuditoria = informacionAuditoria;

                if (resultado.Resultado)
                {
                    var id = Convert.ToInt64(resultado.InformacionExtra);

                    ArchivoTaxonomiaXbrlRepository.Borrar(id);

                    var archivo = new ArchivoTaxonomiaXbrl
                    {
                        IdTaxonomiaXbrl = id,
                        Href            = taxonomiaXbrl.PuntoEntrada
                    };

                    ArchivoTaxonomiaXbrlRepository.Guardar(archivo);
                }
            }
            catch (Exception exception)
            {
                resultado.Resultado        = false;
                resultado.Mensaje          = exception.Message;
                resultado.InformacionExtra = exception;
            }
            return(resultado);
        }
        /// <summary>
        /// Obtiene una taxonomia xbrl por su identificador
        /// </summary>
        /// <param name="idTaxonomiaXbrl"></param>
        /// <returns></returns>
        public TaxonomiaXbrlDto ObtenerTaxonomiaXbrlPorId(long idTaxonomiaXbrl)
        {
            var entidad = TaxonomiaXbrlRepository.Obtener(idTaxonomiaXbrl);
            var archivo = ArchivoTaxonomiaXbrlRepository.Obtener(entidad.IdTaxonomiaXbrl);

            return(new TaxonomiaXbrlDto
            {
                IdTaxonomiaXbrl = entidad.IdTaxonomiaXbrl,
                Nombre = entidad.Nombre,
                Descripcion = entidad.Descripcion,
                Anio = entidad.Anio,
                Activa = entidad.Activa,
                EspacioNombresPrincipal = entidad.EspacioNombresPrincipal,
                PuntoEntrada = archivo != null ? archivo.Href : null
            });
        }
        /// <summary>
        /// Obtiene las taxonomias xbrl asignadas a un tipo de empresa.
        /// </summary>
        /// <returns></returns>
        public List <TaxonomiaXbrlDto> ObtenerTaxonomiasXbrl(long idTipoEmpresa)
        {
            var entidades = TaxonomiaXbrlRepository.ObtenerAsignadas(idTipoEmpresa);

            var taxonomias = entidades.Select(e =>
            {
                var archivo = ArchivoTaxonomiaXbrlRepository.Obtener(e.IdTaxonomiaXbrl);

                return(new TaxonomiaXbrlDto
                {
                    IdTaxonomiaXbrl = e.IdTaxonomiaXbrl,
                    Nombre = e.Nombre,
                    Descripcion = e.Descripcion,
                    Anio = e.Anio,
                    Activa = e.Activa,
                    EspacioNombresPrincipal = e.EspacioNombresPrincipal,
                    PuntoEntrada = archivo != null ? archivo.Href : null
                });
            });

            return(taxonomias.ToList());
        }