private string GetFRDBaseAsRTF(GISADataset.FRDBaseRow FRDBaseRow) { GisaDataSetHelper.ManageDatasetConstraints(false); StringBuilder Result = new StringBuilder(); var cotas = new List<string>(); GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection()); try { string IDFRDbase = FRDBaseRow.ID.ToString(); PesquisaRule.Current.LoadFRDBaseData(GisaDataSetHelper.GetInstance(), IDFRDbase, ho.Connection); if (FRDBaseRow.NivelRow.IDTipoNivel == TipoNivel.ESTRUTURAL) DBAbstractDataLayer.DataAccessRules.ControloAutRule.Current.LoadControloAutFromNivel(GisaDataSetHelper.GetInstance(), FRDBaseRow.NivelRow.ID, ho.Connection); // Obter info sobre cota se for documento ou subdocumento var idTipoNivelRelacionado = FRDBaseRow.NivelRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica().First().IDTipoNivelRelacionado; if (idTipoNivelRelacionado == TipoNivelRelacionado.D || idTipoNivelRelacionado == TipoNivelRelacionado.SD) cotas = PesquisaRule.Current.LoadDocumentoCotas(IDFRDbase, ho.Connection); // --Identificação-- Result.Append("\\fs36\\b{}Identificação\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}"); // Codigo de Referência Result.Append(GetConditionalText("\\i{}Código de referencia: \\i0{}", DBAbstractDataLayer.DataAccessRules.NivelRule.Current.GetCodigoOfNivel(FRDBaseRow.NivelRow.ID, ho.Connection)[0].ToString(), "\\par{}")); } catch (Exception ex) { Trace.WriteLine(ex); } finally { ho.Dispose(); GisaDataSetHelper.ManageDatasetConstraints(true); } // Nivel de descrição (TipoNivel) Result.Append(GetConditionalText("\\i{}Nível de descrição: \\i0{}", TipoNivelRelacionado.GetTipoNivelRelacionadoDaPrimeiraRelacaoEncontrada(FRDBaseRow.NivelRow).Designacao, "\\par{}")); // Título //Result.Append("\\i{}Designação: \\i0{}" + Nivel.GetDesignacao(FRDBaseRow.NivelRow) + "\\par{}"); Result.Append("\\i{}Título: \\i0{}" + Nivel.GetDesignacao(FRDBaseRow.NivelRow) + "\\par{}"); // Datas if (FRDBaseRow.GetSFRDDatasProducaoRows().Length == 1) { string inicioTexto = string.Empty; if (!FRDBaseRow.GetSFRDDatasProducaoRows()[0].IsInicioTextoNull()) inicioTexto = FRDBaseRow.GetSFRDDatasProducaoRows()[0].InicioTexto + " "; Result.Append("\\i{}Data(s) de produção: \\i0{}" + inicioTexto + GUIHelper.GUIHelper.FormatDateInterval(FRDBaseRow.GetSFRDDatasProducaoRows()[0]) + "\\par{}"); } // Agrupador if (FRDBaseRow.GetSFRDAgrupadorRows().Length == 1) Result.Append(GetConditionalText("\\i{}Agrupador: \\i0{}", FRDBaseRow.GetSFRDAgrupadorRows()[0].Agrupador, "\\par{}")); //Dimensão do documento var dimSup = GisaDataSetHelper.GetInstance().SFRDDimensaoSuporte.Cast<GISADataset.SFRDDimensaoSuporteRow>() .SingleOrDefault(r => r.IDFRDBase == FRDBaseRow.ID); if (dimSup != null) Result.Append(GetConditionalText("\\i{}Dimensão: \\i0{}", dimSup["Nota"] == DBNull.Value ? "" : dimSup.Nota, "\\par{}")); // Cota do documento na UF if (cotas.Count > 0) { Result.AppendLine("\\i{}Cota: \\i0{}\\par{}"); var cotasStr = new StringBuilder(); cotas.ForEach(c => { if (cotasStr.Length > 0) cotasStr.Append("\\b, \\b0"); cotasStr.Append(c); }); Result.Append(cotasStr); Result.Append("\\par{}"); } // --Contexto-- StringBuilder Contexto = new StringBuilder(); if (FRDBaseRow.GetSFRDContextoRows().Length == 1) { if (FRDBaseRow.NivelRow.IDTipoNivel != TipoNivel.ESTRUTURAL) Contexto.Append(GetConditionalText("\\i{}História administrativa: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDContextoRows()[0]["HistoriaAdministrativa"]), "\\par{}")); else { GISADataset.ControloAutRow caRow = FRDBaseRow.NivelRow.GetNivelControloAutRows()[0].ControloAutRow; GISADataset.ControloAutDatasExistenciaRow cadeRow = null; if (caRow.GetControloAutDatasExistenciaRows().Length > 0) { cadeRow = caRow.GetControloAutDatasExistenciaRows()[0]; Contexto.Append(GetConditionalText("\\i{}Datas de existência: \\i0{}\\par{}", GUIHelper.GUIHelper.FormatDateInterval(cadeRow), "\\par{}")); } Contexto.Append(GetConditionalText("\\i{}História: \\i0{}\\par{}", string.Format("{0}", caRow["DescHistoria"]), "\\par{}")); Contexto.Append(GetConditionalText("\\i{}Zona geográfica: \\i0{}\\par{}", string.Format("{0}", caRow["DescZonaGeografica"]), "\\par{}")); Contexto.Append(GetConditionalText("\\i{}Estatuto legal: \\i0{}\\par{}", string.Format("{0}", caRow["DescEstatutoLegal"]), "\\par{}")); Contexto.Append(GetConditionalText("\\i{}Funções, ocupações e atividades: \\i0{}\\par{}", string.Format("{0}", caRow["DescOcupacoesActividades"]), "\\par{}")); Contexto.Append(GetConditionalText("\\i{}Enquadramento legal: \\i0{}\\par{}", string.Format("{0}", caRow["DescEnquadramentoLegal"]), "\\par{}")); Contexto.Append(GetConditionalText("\\i{}Estrutura interna: \\i0{}\\par{}", string.Format("{0}", caRow["DescEstruturaInterna"]), "\\par{}")); Contexto.Append(GetConditionalText("\\i{}Contexto geral: \\i0{}\\par{}", string.Format("{0}", caRow["DescContextoGeral"]), "\\par{}")); Contexto.Append(GetConditionalText("\\i{}Outras informações relevantes: \\i0{}\\par{}", string.Format("{0}", caRow["DescOutraInformacaoRelevante"]), "\\par{}")); } Contexto.Append(GetConditionalText("\\i{}História arquivística: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDContextoRows()[0]["HistoriaCustodial"]), "\\par{}")); Contexto.Append(GetConditionalText("\\i{}Fonte imediata de aquisicao: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDContextoRows()[0]["FonteImediataDeAquisicao"]), "\\par{}")); GISADataset.RelacaoHierarquicaRow[] rhrows = FRDBaseRow.NivelRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica(); if (rhrows.Length > 0) { Int64 idT = FRDBaseRow.NivelRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica()[0].TipoNivelRelacionadoRow.ID; if ((idT == TipoNivelRelacionado.SR) || (idT == TipoNivelRelacionado.SSR)) { if (System.Convert.ToBoolean(FRDBaseRow.GetSFRDContextoRows()[0]["SerieAberta"])) Contexto.Append(GetConditionalText("\\i{}Condição da Série: \\i0{}\\par{}", string.Format("{0}", "Aberta"), "\\par{}")); else Contexto.Append(GetConditionalText("\\i{}Condição da Série: \\i0{}\\par{}", string.Format("{0}", "Fechada"), "\\par{}")); } } } if (FRDBaseRow.NivelRow.IDTipoNivel == TipoNivel.ESTRUTURAL) { Result.Append(Section("\\fs36\\b{}Contexto\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}", Contexto.ToString())); } else { GetAutores(FRDBaseRow.NivelRow); GetEntidadesProdutoras(FRDBaseRow.NivelRow); Result.Append(Section("\\fs36\\b{}Contexto\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}", GetConditionalText("\\i{}Autores: \\i0{}", printCAs(Autores), Contexto.ToString()), GetConditionalText("\\i{}Entidade produtora: \\i0{}", printCAs(EPs), Contexto.ToString()) )); } // --ConteudoEstrutura-- Result.Append(Section("\\fs36\\b{}Conteúdo e estrutura\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}", GetConditionalText("\\i{}Tipologia informacional: \\i0{}\\par{}", GetTermosIndexados(FRDBaseRow, TipoNoticiaAut.TipologiaInformacional), ""))); // -- Conteudo caso seja um processo de obras -- ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection()); bool processoObras = IsRelatedToProcessoObras(FRDBaseRow, ho.Connection); // Dados estruturados de processos de obras: try { if (processoObras) { //Result.Append(GetConditionalText("", "\\i{}Conteúdo informacional: \\i0{}\\par{}", "\\li128\\par\\li0{}")); Result.Append(GetConditionalText("", "\\i{}Conteúdo informacional: \\i0{}\\par{}", "")); Result.Append(gen_content_PROCESSO_OBRAS(FRDBaseRow.IDNivel, ho.Connection)); } } catch (Exception ex) { Trace.WriteLine(ex); } finally { ho.Dispose(); GisaDataSetHelper.ManageDatasetConstraints(true); } string ConteudoEstrutura = ""; if (FRDBaseRow.GetSFRDConteudoEEstruturaRows().Length == 1) { if (!processoObras) ConteudoEstrutura += GetConditionalText("\\i{}Conteúdo informacional: \\i0{}\\par{}", string.Format(" {0}", FRDBaseRow.GetSFRDConteudoEEstruturaRows()[0]["ConteudoInformacional"]), "\\li128\\par\\li0{}"); else ConteudoEstrutura += GetConditionalText("\\i{}Observações: \\i0{}\\par{}", string.Format(" {0}", FRDBaseRow.GetSFRDConteudoEEstruturaRows()[0]["ConteudoInformacional"]), "\\li128\\par\\li0{}"); ConteudoEstrutura += GetConditionalText("\\i{}Diploma: \\i0{}\\par{}", GetTermosIndexados(FRDBaseRow, TipoNoticiaAut.Diploma), "\\li128\\li0{}"); ConteudoEstrutura += GetConditionalText("\\i{}Modelo: \\i0{}\\par{}", GetTermosIndexados(FRDBaseRow, TipoNoticiaAut.Modelo), "\\li128\\li0{}"); //Avaliação if (FRDBaseRow.GetSFRDAvaliacaoRows().Length > 0) { string ava = null; var sfrda = FRDBaseRow.GetSFRDAvaliacaoRows()[0]; ConteudoEstrutura += GetConditionalText("\\i{}Observações/Enquadramento legal: \\i0{}\\par{}", string.Format("{0}", sfrda["Observacoes"]), "\\li128\\par\\li0{}"); if (sfrda.IsPreservarNull() && sfrda.IsPrazoConservacaoNull()) ava = ""; else { if (sfrda.Preservar) ava = "Preservar."; else ava = "Eliminar após " + (sfrda.IsPrazoConservacaoNull() ? "0" : sfrda.PrazoConservacao.ToString()) + " ano(s)."; } if (ava.CompareTo("") != 0) ConteudoEstrutura += GetConditionalText("\\i{}Avaliação: \\i0{}\\par{}", ava, "\\li128\\li0{}\\par{}"); ConteudoEstrutura += "\\i{}Publicado: \\i0{}\\par{}" + Concorrencia.translateBoolean(FRDBaseRow.GetSFRDAvaliacaoRows()[0].Publicar) + "\\li128\\par\\li0{}"; ConteudoEstrutura += GetConditionalText("\\i{}Referência na tabela de avaliação: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDAvaliacaoRows()[0]["RefTabelaAvaliacao"]), "\\li128\\li0{}\\par{}"); if (!sfrda.IsIDAutoEliminacaoNull()) ConteudoEstrutura += "\\i{}Auto de eliminação: \\i0{}\\par{}" + sfrda.AutoEliminacaoRow.Designacao + "\\li128\\li0{}\\par{}"; } ConteudoEstrutura += GetConditionalText("\\i{}Incorporações: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDConteudoEEstruturaRows()[0]["Incorporacao"]), "\\li128\\par\\li0{}"); Result.Append(ConteudoEstrutura); } // --Condições de acesso e de utilização-- if (FRDBaseRow.GetSFRDCondicaoDeAcessoRows().Length == 1) { // Linguas string langs = ""; foreach (GISADataset.SFRDLinguaRow lang in FRDBaseRow.GetSFRDCondicaoDeAcessoRows()[0].GetSFRDLinguaRows()) langs += lang.Iso639Row.LanguageNameEnglish + ", "; if (langs.Length > 2) langs = langs.Substring(0, langs.Length - 2); //Alfabetos string alfs = ""; foreach (GISADataset.SFRDAlfabetoRow alf in FRDBaseRow.GetSFRDCondicaoDeAcessoRows()[0].GetSFRDAlfabetoRows()) alfs += alf.Iso15924Row.ScriptNameEnglish + ", "; if (alfs.Length > 2) alfs = alfs.Substring(0, alfs.Length - 2); //Formas Suporte/Acondicionamento string fsas = ""; foreach (GISADataset.SFRDFormaSuporteAcondRow fsa in FRDBaseRow.GetSFRDCondicaoDeAcessoRows()[0].GetSFRDFormaSuporteAcondRows()) fsas += fsa.TipoFormaSuporteAcondRow.Designacao + ", "; if (fsas.Length > 2) fsas = fsas.Substring(0, fsas.Length - 2); //Materiais de Suporte string mats = ""; foreach (GISADataset.SFRDMaterialDeSuporteRow mat in FRDBaseRow.GetSFRDCondicaoDeAcessoRows()[0].GetSFRDMaterialDeSuporteRows()) mats += mat.TipoMaterialDeSuporteRow.Designacao + ", "; if (mats.Length > 2) mats = mats.Substring(0, mats.Length - 2); //Tecnicas de Registo string tecs = ""; foreach (GISADataset.SFRDTecnicasDeRegistoRow tec in FRDBaseRow.GetSFRDCondicaoDeAcessoRows()[0].GetSFRDTecnicasDeRegistoRows()) tecs += tec.TipoTecnicasDeRegistoRow.Designacao + ", "; if (tecs.Length > 2) tecs = tecs.Substring(0, tecs.Length - 2); //Estado de Conservação string cons = ""; foreach (GISADataset.SFRDEstadoDeConservacaoRow con in FRDBaseRow.GetSFRDCondicaoDeAcessoRows()[0].GetSFRDEstadoDeConservacaoRows()) cons += con.TipoEstadoDeConservacaoRow.Designacao + ", "; if (cons.Length > 2) cons = cons.Substring(0, cons.Length - 2); Result.Append(Section("\\fs36\\b{}Condições de acesso e de utilização\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}", GetConditionalText("\\i{}Condições de acesso: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDCondicaoDeAcessoRows()[0]["CondicaoDeAcesso"]), "\\li128\\par\\li0{}"), GetConditionalText("\\i{}Condições de reprodução: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDCondicaoDeAcessoRows()[0]["CondicaoDeReproducao"]), "\\li128\\par\\li0{}"), GetConditionalText("\\i{}Linguas: \\i0{}\\par{}", string.Format("{0}", langs), "\\li128\\par\\li0{}"), GetConditionalText("\\i{}Alfabetos: \\i0{}\\par{}", string.Format("{0}", alfs), "\\li128\\par\\li0{}"), GetConditionalText("\\i{}Formas de Suporte / Acondicionamento: \\i0{}\\par{}", string.Format("{0}", fsas), "\\li128\\par\\li0{}"), GetConditionalText("\\i{}Materiais de Suporte: \\i0{}\\par{}", string.Format("{0}", mats), "\\li128\\par\\li0{}"), GetConditionalText("\\i{}Técnicas de Registo: \\i0{}\\par{}", string.Format("{0}", tecs), "\\li128\\par\\li0{}"), GetConditionalText("\\i{}Estado de Conservação: \\i0{}\\par{}", string.Format("{0}", cons), "\\li128\\par\\li0{}"), GetConditionalText("\\i{}Instrumentos de pesquisa: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDCondicaoDeAcessoRows()[0]["AuxiliarDePesquisa"]), "\\li128\\par\\li0{}"))); } // --Documentação associada-- if (FRDBaseRow.GetSFRDDocumentacaoAssociadaRows().Length > 0) Result.Append(Section("\\fs36\\b{}Documentação associada\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}", GetConditionalText("\\i{}Existência e localização de originais: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDDocumentacaoAssociadaRows()[0]["ExistenciaDeOriginais"]), "\\li128\\par\\li0{}") + GetConditionalText("\\i{}Existência e localização de cópias: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDDocumentacaoAssociadaRows()[0]["ExistenciaDeCopias"]), "\\li128\\par\\li0{}") + GetConditionalText("\\i{}Unidades de Descrição: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDDocumentacaoAssociadaRows()[0]["UnidadesRelacionadas"]), "\\li128\\par\\li0{}") + GetConditionalText("\\i{}Notas de Publicação: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDDocumentacaoAssociadaRows()[0]["NotaDePublicacao"]), "\\li128\\par\\li0{}"))); // --Notas-- if (FRDBaseRow.GetSFRDNotaGeralRows().Length > 0) Result.Append(Section("\\fs36\\b{}Nota Geral\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}", GetConditionalText("", string.Format("{0}", FRDBaseRow.GetSFRDNotaGeralRows()[0]["NotaGeral"]), "\\li128\\par\\li0{}"))); // --Controlo de Descrição-- if (! (FRDBaseRow.IsRegrasOuConvencoesNull())) { string lastEdit = ""; if (GisaDataSetHelper.GetInstance().FRDBaseDataDeDescricao.Select("IdFRDBase =" + FRDBaseRow.ID.ToString(), "DataEdicao DESC").Length > 0) lastEdit = ((GISADataset.FRDBaseDataDeDescricaoRow)(GisaDataSetHelper.GetInstance().FRDBaseDataDeDescricao.Select("IdFRDBase =" + FRDBaseRow.ID.ToString(), "DataEdicao DESC")[0])).DataEdicao.ToString(); Result.Append(Section("\\fs36\\b{}Controlo de Descrição\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}", GetConditionalText("\\i{}Regras e Convenções: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.RegrasOuConvencoes), "\\li128\\par\\li0{}") + GetConditionalText("\\i{}Notas do arquivista: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.NotaDoArquivista), "\\li128\\par\\li0{}") + GetConditionalText("\\i{}Data da última edição: \\i0{}\\par{}", string.Format("{0}", lastEdit), "\\li128\\par\\li0{}"))); } // --Indexação-- Result.Append(Section("\\fs36\\b{}Indexação\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}", GetConditionalText("\\i{}Conteúdos: \\i0{}\\par{}", GetTermosIndexados_OutrasFormas(FRDBaseRow), ""))); // Acrescentar informação nos detalhes dos resultados da pesquisa de UAs: // Informação de requisição, se estiver requisitada e não devolvida. Qual a requisição, a data e a entidade e as notas. ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection()); try { //string ID = FRDBaseRow.ID.ToString(); if (MovimentoRule.Current.estaRequisitado(FRDBaseRow.IDNivel, ho.Connection)) { MovimentoRule.RequisicaoInfo requisicao = MovimentoRule.Current.getRequisicaoInfo(FRDBaseRow.IDNivel, ho.Connection); Result.Append("\\fs36\\b{}Requisição:\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}"); // Codigo de movimento Result.Append(GetConditionalText("\\i{}Movimento: \\i0{}", requisicao.idMovimento.ToString(), "\\par{}")); Result.Append(GetConditionalText("\\i{}Data: \\i0{}", requisicao.data.ToString(), "\\par{}")); Result.Append(GetConditionalText("\\i{}Entidade: \\i0{}", requisicao.entidade, "\\par{}")); Result.Append(GetConditionalText("\\i{}Notas: \\i0{}", requisicao.notas, "\\par{}")); } } catch (Exception ex) { Trace.WriteLine(ex); } finally { ho.Dispose(); } return Result.ToString(); }