Ejemplo n.º 1
0
        /// <summary>
        /// Obtiene el diccionario con las notas obtenidas del documento de excel.
        /// </summary>
        /// <param name="renglon">Fila donde se encuentra la celda a evaluar.</param>
        /// <param name="col">Columna donde se encuentra la celda a evaluar.</param>
        /// <param name="idiomaDefault">Identificador del lenguaje por defecto del documento.</param>
        /// <returns></returns>
        public static IDictionary <string, IList <NotaAlPieDto> > ObtenerComentariosCelda(IRow renglon, int col, String idiomaDefault)
        {
            if (renglon == null)
            {
                return(null);
            }
            var celda = renglon.LastCellNum >= col?renglon.GetCell(col, MissingCellPolicy.CREATE_NULL_AS_BLANK) : null;

            if (celda == null)
            {
                return(null);
            }
            var textoNotas = celda.CellComment != null && celda.CellComment.String != null ? celda.CellComment.String.String : null;

            if (String.IsNullOrWhiteSpace(textoNotas))
            {
                return(null);
            }

            var itemsArray      = RegexFootNoteSeparator.Split(textoNotas);
            var diccionarioNoas = new Dictionary <string, IList <NotaAlPieDto> >();

            var textoNota = String.Empty;
            var lenguaje  = idiomaDefault;

            foreach (var item in itemsArray)
            {
                if (RegexFootNoteSeparator.IsMatch(item))
                {
                    if (RegexLanguageAttr.IsMatch(item))
                    {
                        lenguaje = RegexPrefixLanguageAttr.Split(item)[1];
                        lenguaje = lenguaje.Substring(0, lenguaje.Length - 1);
                    }
                    else
                    {
                        lenguaje = idiomaDefault;
                    }
                    continue;
                }
                IList <NotaAlPieDto> listaNotas;
                if (diccionarioNoas.ContainsKey(lenguaje))
                {
                    listaNotas = diccionarioNoas[lenguaje];
                }
                else
                {
                    listaNotas = new List <NotaAlPieDto>();
                    diccionarioNoas.Add(lenguaje, listaNotas);
                }
                var nota = new NotaAlPieDto()
                {
                    Valor  = item,
                    Idioma = lenguaje
                };
                listaNotas.Add(nota);
            }

            return(diccionarioNoas);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Carga las notas al pie de base de datos al modelo de DTO del documento de instancia
        /// </summary>
        /// <param name="instanciaDb"></param>
        /// <param name="instanciaXbrlDto"></param>
        private static void CargarNotasAlPie(DocumentoInstancia instanciaDb, DocumentoInstanciaXbrlDto instanciaXbrlDto)
        {
            var hechosPorIdRef = instanciaXbrlDto.HechosPorId;
            var notasPorIdRef  = new Dictionary <string, List <NotaAlPieDto> >();

            foreach (var notaDb in instanciaDb.NotaAlPie)
            {
                var notaDto = new NotaAlPieDto {
                    Idioma = notaDb.Idioma, Rol = notaDb.Rol, Valor = notaDb.Valor
                };
                if (!notasPorIdRef.ContainsKey(notaDb.IdRef))
                {
                    notasPorIdRef.Add(notaDb.IdRef, new List <NotaAlPieDto>());
                }
                notasPorIdRef[notaDb.IdRef].Add(notaDto);
            }
            //Agregar notas a hechos por idioma
            foreach (var notaPorId in notasPorIdRef)
            {
                if (hechosPorIdRef.ContainsKey(notaPorId.Key))
                {
                    var hecho = hechosPorIdRef[notaPorId.Key];
                    hecho.NotasAlPie = new Dictionary <string, IList <NotaAlPieDto> >();
                    foreach (var notaDto in notaPorId.Value)
                    {
                        if (!hecho.NotasAlPie.ContainsKey(notaDto.Idioma))
                        {
                            hecho.NotasAlPie.Add(notaDto.Idioma, new List <NotaAlPieDto>());
                        }
                        hecho.NotasAlPie[notaDto.Idioma].Add(notaDto);
                    }
                }
            }
        }