public void AddCorrespondenciaRA(CorrespondenciaRAs CRa) { mCorrespondenciasRAs.Add(CRa); }
private static string AppendCorrespondencia(CorrespondenciaRAs correspondencia, Dictionary<Entidade, DataRow> rows) { var titulo = ((RegistoAutoridadeExterno)correspondencia.EntidadeExterna).Titulo; return string.Format("* {0}{2} -> {1}{3}", titulo != null && titulo.Length > 0 ? titulo : correspondencia.EntidadeExterna.IDExterno, correspondencia.EntidadeInterna.Titulo, Novo(rows[correspondencia.EntidadeExterna]), Novo(rows[correspondencia.EntidadeInterna])); }
internal static void MapDocCARelationToDataRows(CorrespondenciaRAs cRA, GISADataset.FRDBaseRow frdRow, GISADataset.ControloAutRow caRow) { var ca = (RegistoAutoridadeInterno)cRA.EntidadeInterna; if (cRA.EstadoRelacaoPorOpcao[cRA.TipoOpcao] == TipoEstado.SemAlteracoes) return; var oldIndexFRDCARow = GisaDataSetHelper.GetInstance().IndexFRDCA.Cast<GISADataset.IndexFRDCARow>().SingleOrDefault(r => r.IDControloAut == caRow.ID && r.IDFRDBase == frdRow.ID); if (oldIndexFRDCARow != null) return; if (ca.TipoNoticiaAut == TipoNoticiaAut.TipologiaInformacional) GisaDataSetHelper.GetInstance().IndexFRDCA.Cast<GISADataset.IndexFRDCARow>() .Where(r => r.IDFRDBase == frdRow.ID && r.ControloAutRow.IDTipoNoticiaAut == (long)TipoNoticiaAut.TipologiaInformacional) .ToList() .ForEach(row => row.Delete()); var indexFRDCARow = GisaDataSetHelper.GetInstance().IndexFRDCA.NewIndexFRDCARow(); indexFRDCARow.ControloAutRow = caRow; indexFRDCARow.FRDBaseRow = frdRow; if (caRow.IDTipoNoticiaAut == (long)TipoNoticiaAut.TipologiaInformacional) indexFRDCARow.Selector = -1; indexFRDCARow.Versao = new byte[] { }; indexFRDCARow.isDeleted = 0; GisaDataSetHelper.GetInstance().IndexFRDCA.AddIndexFRDCARow(indexFRDCARow); }
private static GISADataset.ControloAutRow CreateControloAut(CorrespondenciaRAs correspondenciaRA, Dictionary<Entidade, DataRow> rows) { var ca = (RegistoAutoridadeInterno)correspondenciaRA.EntidadeInterna; GISADataset.ControloAutRow caRow = null; GISADataset.ControloAutDicionarioRow cadRow = null; GISADataset.DicionarioRow dRow = null; // podem existir registos de autoridade internos diferentes mas com informação idêntica entre si por via // da edição de sugestões onde podem ser criados novos sem que haja qualquer tipo de validação quanto // à repetição de dados if (ca.Estado == TipoEstado.Novo) { dRow = GisaDataSetHelper.GetInstance().Dicionario.Cast<GISADataset.DicionarioRow>().Where(d => d.Termo.Equals(ca.Titulo)).SingleOrDefault(); if (dRow != null) { cadRow = GisaDataSetHelper.GetInstance().ControloAutDicionario.Cast<GISADataset.ControloAutDicionarioRow>().Where(cad => cad.IDDicionario == dRow.ID && cad.IDTipoControloAutForma == (long)TipoControloAutForma.FormaAutorizada && cad.ControloAutRow.IDTipoNoticiaAut == (long)ca.TipoNoticiaAut).SingleOrDefault(); if (cadRow != null) caRow = cadRow.ControloAutRow; else { caRow = GisaDataSetHelper.GetInstance().ControloAut.NewControloAutRow(); caRow.IDTipoNoticiaAut = (long)ca.TipoNoticiaAut; caRow.Autorizado = false; caRow.Completo = false; if (ca.TipoNoticiaAut == TipoNoticiaAut.Onomastico) caRow.ChaveColectividade = ((Model.EntidadesInternas.Onomastico)ca).Codigo; caRow.Versao = new byte[] { }; caRow.isDeleted = 0; GisaDataSetHelper.GetInstance().ControloAut.AddControloAutRow(caRow); cadRow = GisaDataSetHelper.GetInstance().ControloAutDicionario.NewControloAutDicionarioRow(); cadRow.ControloAutRow = caRow; cadRow.DicionarioRow = dRow; cadRow.IDTipoControloAutForma = (long)TipoControloAutForma.FormaAutorizada; cadRow.Versao = new byte[] { }; cadRow.isDeleted = 0; GisaDataSetHelper.GetInstance().ControloAutDicionario.AddControloAutDicionarioRow(cadRow); } } else { caRow = GisaDataSetHelper.GetInstance().ControloAut.NewControloAutRow(); caRow.IDTipoNoticiaAut = (long)ca.TipoNoticiaAut; caRow.Autorizado = false; caRow.Completo = false; if (ca.TipoNoticiaAut == TipoNoticiaAut.Onomastico) caRow.ChaveColectividade = ((Model.EntidadesInternas.Onomastico)ca).Codigo; caRow.Versao = new byte[] { }; caRow.isDeleted = 0; GisaDataSetHelper.GetInstance().ControloAut.AddControloAutRow(caRow); dRow = GisaDataSetHelper.GetInstance().Dicionario.NewDicionarioRow(); dRow.CatCode = "CA"; dRow.Termo = ca.Titulo; dRow.Versao = new byte[] { }; dRow.isDeleted = 0; GisaDataSetHelper.GetInstance().Dicionario.AddDicionarioRow(dRow); cadRow = GisaDataSetHelper.GetInstance().ControloAutDicionario.NewControloAutDicionarioRow(); cadRow.ControloAutRow = caRow; cadRow.DicionarioRow = dRow; cadRow.IDTipoControloAutForma = (long)TipoControloAutForma.FormaAutorizada; cadRow.Versao = new byte[] { }; cadRow.isDeleted = 0; GisaDataSetHelper.GetInstance().ControloAutDicionario.AddControloAutDicionarioRow(cadRow); } if (ca.TipoNoticiaAut == TipoNoticiaAut.EntidadeProdutora && caRow.RowState == DataRowState.Added) { var nRow = GisaDataSetHelper.GetInstance().Nivel.NewNivelRow(); nRow.IDTipoNivel = TipoNivel.ESTRUTURAL; nRow.Codigo = ((Model.EntidadesInternas.Produtor)ca).Codigo; //if (nRow.Codigo.Length > 50) // nRow.Codigo = nRow.Codigo.Substring(0, 49);// nRow.CatCode = "CA"; nRow.Versao = new byte[] { }; nRow.isDeleted = 0; GisaDataSetHelper.GetInstance().Nivel.AddNivelRow(nRow); var frdRow = GisaDataSetHelper.GetInstance().FRDBase.NewFRDBaseRow(); frdRow.NivelRow = nRow; frdRow.IDTipoFRDBase = (long)TipoFRDBase.FRDOIRecolha; frdRow.Versao = new byte[] { }; frdRow.isDeleted = 0; GisaDataSetHelper.GetInstance().FRDBase.AddFRDBaseRow(frdRow); var ncaRow = GisaDataSetHelper.GetInstance().NivelControloAut.NewNivelControloAutRow(); ncaRow.ControloAutRow = caRow; ncaRow.NivelRow = nRow; ncaRow.Versao = new byte[] { }; ncaRow.isDeleted = 0; GisaDataSetHelper.GetInstance().NivelControloAut.AddNivelControloAutRow(ncaRow); } ca.Id = caRow.ID; } else caRow = GisaDataSetHelper.GetInstance().ControloAut.Rows.Cast<GISADataset.ControloAutRow>().Where(r => r.ID == ca.Id).Single(); rows[correspondenciaRA.EntidadeInterna] = caRow; return caRow; }
internal static void MapControloAutToDataRows(CorrespondenciaRAs correspondenciaRA, GISADataset.FRDBaseRow dgFRDRow, Dictionary<Entidade, DataRow> rows) { var ca = (RegistoAutoridadeInterno)correspondenciaRA.EntidadeInterna; var caRow = CreateControloAut(correspondenciaRA, rows); if (ca.TipoNoticiaAut != TipoNoticiaAut.EntidadeProdutora) MapDocCARelationToDataRows(correspondenciaRA, dgFRDRow, caRow); }
private static void RemoveTipologiaOriginal(CorrespondenciaRAs cRA) { if (cRA.EntidadeExterna.Tipo != TipoEntidadeExterna.TipologiaInformacional) return; cRA.RemoveEntidadeInternaOriginal(); }
private static void ReavaliaEstado(CorrespondenciaDocs cDoc, CorrespondenciaRAs cRa) { foreach (TipoOpcao op in Enum.GetValues(typeof(TipoOpcao))) { if (cRa.TipoOpcao == TipoOpcao.Ignorar) continue; var ei = cRa.GetEntidadeInterna(op); if (ei == null) continue; var tnp = ((RegistoAutoridadeInterno)cRa.EntidadeInterna).TipoNoticiaAut; // se a entidade interna for uma EP e esta estiver relaccionada com um documento simples, o estado "novo" do documento não implica uma nova relação com o produtor // uma vez que o seu processo já pode ter essa associação if (tnp != TipoNoticiaAut.EntidadeProdutora && tnp != TipoNoticiaAut.TipologiaInformacional && (cDoc.EntidadeInterna.Estado == TipoEstado.Novo || ei.Estado == TipoEstado.Novo)) { cRa.EstadoRelacaoPorOpcao[op] = TipoEstado.Novo; continue; } var dg = cDoc.EntidadeInterna as DocumentoGisa; var tipoEntidade = TipoEntidade.GetTipoEntidadeInterna(cRa.EntidadeExterna.Tipo); switch (tipoEntidade) { case TipoEntidadeInterna.EntidadeProdutora: if (dg.Processo == null && dg.Estado == TipoEstado.Novo) { cRa.EstadoRelacaoPorOpcao[op] = TipoEstado.Novo; continue; } //if (dg.Processo.Valor != null) // dg = dg.Processo.Valor; if (ei.Estado == TipoEstado.Novo) cRa.EstadoRelacaoPorOpcao[op] = TipoEstado.Novo; else { var nRowCA = GisaDataSetHelper.GetInstance().NivelControloAut.Cast<GISADataset.NivelControloAutRow>().Single(r => r.IDControloAut == ei.Id).NivelRow; cRa.EstadoRelacaoPorOpcao[op] = IsProdutor(dg.Id, nRowCA.ID) ? TipoEstado.SemAlteracoes : TipoEstado.Novo; } break; case TipoEntidadeInterna.Tipologia: if (cDoc.EntidadeInterna.Estado == TipoEstado.Novo) cRa.EstadoRelacaoPorOpcao[op] = TipoEstado.Novo; else { var caRow = GisaDataSetHelper.GetInstance().FRDBase.Cast<GISADataset.FRDBaseRow>().Single(frd => frd.IDNivel == dg.Id).GetIndexFRDCARows().Select(r => r.ControloAutRow).SingleOrDefault(r => r.IDTipoNoticiaAut == (long)TipoNoticiaAut.TipologiaInformacional); if (caRow == null) cRa.EstadoRelacaoPorOpcao[op] = TipoEstado.Novo; else cRa.EstadoRelacaoPorOpcao[op] = caRow.ID == ei.Id ? TipoEstado.SemAlteracoes : TipoEstado.Editar; } break; default: var indexFRDCARow = GisaDataSetHelper.GetInstance().FRDBase.Cast<GISADataset.FRDBaseRow>().Single(frd => frd.IDNivel == dg.Id).GetIndexFRDCARows().SingleOrDefault(r => r.IDControloAut == ei.Id); cRa.EstadoRelacaoPorOpcao[op] = indexFRDCARow != null ? TipoEstado.SemAlteracoes : TipoEstado.Novo; break; } } }