示例#1
0
        private static DocumentoGisa CreateInternalEntity(DocumentoAnexo documentoAnexo)
        {
            DocumentoGisa di = new DocumentoGisa();

            di.Tipo   = TipoEntidadeInterna.DocumentoSimples;
            di.Estado = TipoEstado.Novo;
            di.Id     = -1;
            di.Codigo = documentoAnexo.NUD;
            Database.Database.FillDocumentoGisa(documentoAnexo, di, TipoOpcao.Sugerida);
            return(di);
        }
示例#2
0
 internal CorrespondenciaDocs(DocumentoAnexo de, DocumentoGisa di, TipoSugestao tipoSugestao)
     : base(de, di, tipoSugestao)
 {
 }
示例#3
0
        public List <DocumentoExterno> ToDocumentosExternos(List <DocumentoInfoArquivoGeral> diprecords, List <MoradaRecord> mrecords)
        {
            Dictionary <RegistoAutoridadeExterno, RegistoAutoridadeExterno> raes = new Dictionary <RegistoAutoridadeExterno, RegistoAutoridadeExterno>();
            Dictionary <DocumentoExterno, DocumentoExterno> des                  = new Dictionary <DocumentoExterno, DocumentoExterno>();
            Dictionary <DocumentoComposto, string>          ProcDataFinal        = new Dictionary <DocumentoComposto, string>();
            Dictionary <DocumentoComposto, Produtor>        ProcProdutorFimLinha = new Dictionary <DocumentoComposto, Produtor>();

            var ticks = DateTime.Now.Ticks;

            int docSimplesOrderNr  = 1;
            int docCompostoOrderNr = 1;

            foreach (var diprecord in diprecords)
            {
                DateTime         timestamp = DateTime.ParseExact(diprecord.DATA_ARQUIVOGERAL.TrimEnd('0'), "dd-MM-yyyy HH:mm:ss,FFFFFFF", System.Globalization.CultureInfo.InvariantCulture);
                DocumentoSimples docExt    = new DocumentoSimples(Sistema.DocInPorto, timestamp, docSimplesOrderNr++);
                docExt.NUD      = diprecord.NUD;
                docExt.NUDCapa  = diprecord.NUD_CAPA;
                docExt.Processo = (DocumentoComposto)AddEntidade(des, new DocumentoComposto(Sistema.DocInPorto, timestamp, docCompostoOrderNr++)
                {
                    NUP = diprecord.NUP
                });
                docExt.NumeroEspecifico = diprecord.NUMEROESP;
                //validar data criação
                try
                {
                    DataIncompleta.ParseDate(diprecord.DATAREGISTO);
                }
                catch (FormatException e)
                {
                    MessageBox.Show(string.Format("O campo DATAREGISTO do registo DocInPorto com o NUD {0} contém uma data inválida." + System.Environment.NewLine + "O processo vai ser abortado.", diprecord.NUD), "Integração", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    Trace.WriteLine(string.Format("O campo DATAREGISTO do registo DocInPorto com o NUD {0} contém uma data inválida ({1}): {2}", diprecord.NUD, diprecord.DATAREGISTO, e.ToString()));
                    return(new List <DocumentoExterno>());
                }
                catch (Exception e)
                {
                    MessageBox.Show(string.Format("O campo DATAREGISTO do registo DocInPorto com o NUD {0} contém uma data inválida." + System.Environment.NewLine + "O processo vai ser abortado.", diprecord.NUD), "Integração", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    Trace.WriteLine(string.Format("O campo DATAREGISTO do registo DocInPorto com o NUD {0} contém uma data inválida ({1}): {2}", diprecord.NUD, diprecord.DATAREGISTO, e.ToString()));
                    return(new List <DocumentoExterno>());
                }
                docExt.DataCriacao      = diprecord.DATAREGISTO;
                docExt.DataArquivoGeral = diprecord.DATA_ARQUIVOGERAL;
                docExt.Conteudos        = new List <DocumentoExterno.Conteudo>();
                docExt.Notas            = diprecord.NOTAS;
                docExt.RefPredial       = diprecord.REFPREDIAL;
                docExt.Local            = diprecord.FRACCAO;
                docExt.NumPolicia       = diprecord.NR_POLICIA;

                //System.Diagnostics.Debug.Assert(docExt.Timestamp.Year > 2008);

                var tipologia = new Tipologia(Sistema.DocInPorto, timestamp);
                if (diprecord.TIPOREGISTO.Equals("Entrada"))
                {
                    tipologia.Titulo = diprecord.TIPODOCUMENTOENTRADA;
                }
                else
                {
                    tipologia.Titulo = diprecord.TIPOREGISTO;
                    tipologia.ID     = diprecord.ID_TIPOREGISTO;
                }
                docExt.Tipologia = (Tipologia)AddEntidade(raes, tipologia);

                var produtor = new Produtor(Sistema.DocInPorto, timestamp);
                produtor.Codigo = diprecord.UNIDADEORGANICA_NOMEMECANOGRAFICO;

                docExt.Assunto = diprecord.ASSUNTO;

                var onomastico = new Onomastico(Sistema.DocInPorto, timestamp);
                onomastico.Titulo = diprecord.ENTIDADE_NOME;
                onomastico.NIF    = diprecord.ENTIDADE_NIF;
                docExt.Onomastico = (Onomastico)AddEntidade(raes, onomastico);

                if (diprecord.CODMORADA != null)
                {
                    var toponimia = new Geografico(Sistema.DocInPorto, timestamp);
                    toponimia.Codigo = diprecord.CODMORADA;
                    try
                    {
                        toponimia.Titulo = mrecords.SingleOrDefault(mrec => mrec.CodigoMorada == diprecord.CODMORADA).Nome;
                    }
                    catch
                    {
                        toponimia.Titulo = diprecord.CODMORADA; // como último recurso
                    }
                    toponimia.NroPolicia = docExt.NumPolicia;
                    docExt.Toponimia     = (Geografico)AddEntidade(raes, toponimia);
                }

                if (!(diprecord.TECNICO_NOME == null && diprecord.TECNICO_NIF == null))
                {
                    var tecObra = new Onomastico(Sistema.DocInPorto, timestamp);
                    tecObra.Titulo       = diprecord.TECNICO_NOME;
                    tecObra.NIF          = diprecord.TECNICO_NIF;
                    docExt.TecnicoDeObra = (Onomastico)AddEntidade(raes, tecObra);
                }

                var proc = docExt.Processo;
                if (diprecord.CONFIDENCIALIDADE != enConfidencialidade.enTipoConfidencialidadePublico)
                {
                    proc.Confidencialidade = GetConfidencialidadeString(diprecord.CONFIDENCIALIDADE);
                }
                proc.Timestamp = docExt.Timestamp;

                if (proc.NUP.Equals(@"P/" + docExt.NUD))
                {
                    proc.DataInicio = docExt.DataCriacao;
                }

                if (diprecord.ASSUNTO != null)
                {
                    if (proc.NUP.Equals(@"P/" + docExt.NUD))
                    {
                        try
                        {
                            proc.Tipologia = (Tipologia)AddEntidade(raes, new Tipologia(Sistema.DocInPorto, timestamp)
                            {
                                Titulo = diprecord.ASSUNTO, Timestamp = docExt.Timestamp
                            });
                        }
                        catch (ArgumentNullException e1)
                        {
                            Trace.WriteLine(string.Format("Erro na criação da tipologia para o processo {0} com o título {1}: {2}.", proc.IDExterno, diprecord.ASSUNTO, e1.ToString()));
                        }
                        catch (NullReferenceException e2)
                        {
                            MessageBox.Show(string.Format("O processo {0} não tem tipologia associada." + System.Environment.NewLine + "O processo vai ser abortado.", proc.IDExterno), "Integração", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            Trace.WriteLine(string.Format("Tipologia do processo {0} sem título: {1}.", proc.IDExterno, e2.ToString()));
                        }
                    }

                    if (diprecord.ASSUNTO.Contains("averbamento"))
                    {
                        proc.AverbamentosDeRequerenteOuProprietario.Add(docExt.Onomastico.Titulo);
                    }
                    else
                    {
                        proc.RequerentesOuProprietariosIniciais.Add(docExt.Onomastico.Titulo);
                    }
                }

                if (docExt.Toponimia != null)
                {
                    proc.LocalizacoesObraDesignacaoActual.Add(new DocumentoComposto.LocalizacaoObraActual()
                    {
                        LocalizacaoObraDesignacaoActual = docExt.Toponimia, NroPolicia = docExt.NumPolicia
                    });
                }

                if (!ProcDataFinal.ContainsKey(proc))
                {
                    proc.DataFim        = docExt.DataCriacao;
                    ProcDataFinal[proc] = docExt.DataCriacao;
                }

                var prod = (Produtor)AddEntidade(raes, produtor);
                if (!ProcProdutorFimLinha.ContainsKey(proc))
                {
                    proc.Produtor = prod;
                    ProcProdutorFimLinha[proc] = prod;
                }

                if (DataIncompleta.CompareDates(ProcDataFinal[proc], docExt.DataCriacao) < 0)
                {
                    proc.DataFim               = docExt.DataCriacao;
                    proc.Produtor              = prod;
                    ProcDataFinal[proc]        = docExt.DataCriacao;
                    ProcProdutorFimLinha[proc] = prod;
                }

                if (docExt.TecnicoDeObra != null)
                {
                    proc.TecnicosDeObra.Add(docExt.TecnicoDeObra);
                }

                if (diprecord.ARRAYCONTEUDOS != null)
                {
                    foreach (var conteudo in diprecord.ARRAYCONTEUDOS)
                    {
                        if (conteudo.TIPO.Equals("Anexo") && conteudo.NUMEROANEXO != null)
                        {
                            DocumentoAnexo docExtAnexo = new DocumentoAnexo(Sistema.DocInPorto, timestamp, docSimplesOrderNr++);
                            docExtAnexo.NUD              = conteudo.NUMEROANEXO;
                            docExtAnexo.Descricao        = conteudo.DESCRICAO;
                            docExtAnexo.TipoDescricao    = conteudo.TIPODESCRICAO;
                            docExtAnexo.Assunto          = docExt.Assunto;
                            docExtAnexo.DocumentoSimples = docExt.NUD;
                            docExtAnexo.Processo         = docExt.Processo;
                            docExtAnexo.Conteudos        = new List <DocumentoExterno.Conteudo>()
                            {
                                new DocumentoExterno.Conteudo()
                                {
                                    Ficheiro = conteudo.NOMEFICHEIRO, Tipo = conteudo.TIPODESCRICAO, Titulo = conteudo.NUMEROANEXO, TipoDescricao = conteudo.TIPODESCRICAO
                                }
                            };

                            AddEntidade(des, docExtAnexo);
                        }
                        else
                        {
                            docExt.Conteudos.Add(new DocumentoExterno.Conteudo()
                            {
                                Ficheiro = conteudo.NOMEFICHEIRO, Tipo = conteudo.TIPO, Titulo = conteudo.NUMEROANEXO
                            });
                        }
                    }
                }

                AddEntidade(des, docExt);
            }

            System.Diagnostics.Debug.WriteLine(">> " + new TimeSpan(DateTime.Now.Ticks - ticks).ToString());

            return(des.Keys.ToList());
        }