Exemple #1
0
 public void AddCorrespondenciaRA(CorrespondenciaRAs CRa)
 {
     mCorrespondenciasRAs.Add(CRa);
 }
Exemple #2
0
 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]));
 }
 public void AddCorrespondenciaRA(CorrespondenciaRAs CRa)
 {
     mCorrespondenciasRAs.Add(CRa);
 }
Exemple #4
0
        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);
        }
Exemple #5
0
        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;
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        private static void RemoveTipologiaOriginal(CorrespondenciaRAs cRA)
        {
            if (cRA.EntidadeExterna.Tipo != TipoEntidadeExterna.TipologiaInformacional) return;

            cRA.RemoveEntidadeInternaOriginal();
        }
Exemple #8
0
        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;
                }
            }
        }