Пример #1
0
        private List <Tipologia> RecuperaTipologiePrivate()
        {
            List <Tipologia> tipologie = new List <Tipologia>();

            SqlServerExecuteObject sseo = null;
            SqlDataReader          dr   = null;

            string sSql = "SELECT TipologiaID, Nome_IT, Nome_EN, MacroTipologiaID, FileIcona FROM dbo.TBL_Tipologie;";

            sseo             = new SqlServerExecuteObject();
            sseo.CommandText = sSql;
            sseo.CommandType = CommandType.Text;

            dr = SqlProvider.ExecuteReaderObject(sseo);

            while (dr.Read())
            {
                Tipologia tipologia = RiempiIstanza(dr);
                tipologie.Add(tipologia);
            }

            if (dr != null)
            {
                dr.Close();
                dr.Dispose();
            }

            return(tipologie);
        }
        public ActionResult DeleteConfirmed(int id)
        {
            Tipologia tipologia = db.Tipologias.Find(id);

            db.Tipologias.Remove(tipologia);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit([Bind(Include = "TipologiaId,Nome,Ordem")] Tipologia tipologia)
 {
     if (ModelState.IsValid)
     {
         db.Entry(tipologia).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(tipologia));
 }
Пример #4
0
        public XmlDocumento(InfoConservazione infoCons, DocsPaVO.documento.FileDocumento fileDoc, DocsPaVO.documento.SchedaDocumento schDoc, DocsPaVO.documento.FileRequest objFileRequest)
        {
            if (this.documento == null)
            {
                documento = new Documento.Documento();
            }

            DocsPaVO.utente.Ruolo              ruolo              = BusinessLogic.Utenti.UserManager.getRuolo(infoCons.IdRuoloInUo);
            DocsPaVO.utente.InfoUtente         infoUtente         = BusinessLogic.Utenti.UserManager.GetInfoUtente(UserManager.getUtente(infoCons.IdPeople), ruolo);
            DocsPaVO.utente.UnitaOrganizzativa unitaOrganizzativa = ruolo.uo;

            List <UnitaOrganizzativa> uoL   = new List <UnitaOrganizzativa>();
            UnitaOrganizzativa        uoXML = Utils.convertiUO(unitaOrganizzativa);

            uoL.Add(uoXML);

            documento.SoggettoProduttore = new SoggettoProduttore
            {
                Amministrazione = Utils.getInfoAmministrazione(infoCons),
                GerarchiaUO     = new GerarchiaUO {
                    UnitaOrganizzativa = uoL.ToArray()
                },
                Creatore = Utils.getCreatore(infoCons, ruolo)
            };

            documento.IDistanza   = infoCons.SystemID;
            documento.IDdocumento = schDoc.systemId;
            documento.Oggetto     = schDoc.oggetto.descrizione;
            documento.Tipo        = Utils.convertiTipoPoto(schDoc);
            //  documento.DataCreazione = Utils.formattaData(Utils.convertiData(schDoc.dataCreazione));
            documento.DataCreazione = schDoc.dataCreazione;

            if (schDoc.privato != null && schDoc.privato.Equals("1"))
            {
                documento.LivelloRiservatezza = "privato";
            }
            else
            {
                documento.LivelloRiservatezza = string.Empty;
            }

            documento.File                 = getFileDetail(fileDoc, objFileRequest, infoUtente);
            documento.Registrazione        = getRegistrazione(infoCons, schDoc, ruolo);
            documento.ContestoArchivistico = getContestoArchivistico(infoCons, schDoc, ruolo, infoUtente);

            if (schDoc.template != null)
            {
                Tipologia t = new Tipologia {
                    NomeTipologia = schDoc.template.DESCRIZIONE, CampoTipologia = Utils.getCampiTipologia(schDoc.template)
                };
                documento.Tipologia = t;
            }
            documento.Allegati = getAllegati(schDoc, infoUtente);
        }
        public ActionResult Create([Bind(Include = "TipologiaId,Nome,Ordem")] Tipologia tipologia)
        {
            if (ModelState.IsValid)
            {
                db.Tipologias.Add(tipologia);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(tipologia));
        }
Пример #6
0
        public XmlFascicolo(InfoConservazione infoCons, string ID_Project, FolderConservazione[] folderConservazione)
        {
            if (fascicolo == null)
            {
                fascicolo = new Fascicolo.Fascicolo();
            }

            DocsPaVO.utente.Ruolo              ruolo              = BusinessLogic.Utenti.UserManager.getRuolo(infoCons.IdRuoloInUo);
            DocsPaVO.utente.Utente             Utente             = UserManager.getUtente(infoCons.IdPeople);
            DocsPaVO.utente.UnitaOrganizzativa unitaOrganizzativa = ruolo.uo;
            DocsPaVO.utente.InfoUtente         infoUtente         = UserManager.GetInfoUtente(Utente, ruolo);
            DocsPaVO.fascicolazione.Fascicolo  dpaFascicolo       = BusinessLogic.Fascicoli.FascicoloManager.getFascicoloById(ID_Project, infoUtente);


            List <UnitaOrganizzativa> uoL   = new List <UnitaOrganizzativa>();
            UnitaOrganizzativa        uoXML = Utils.convertiUO(unitaOrganizzativa);

            uoL.Add(uoXML);

            fascicolo.SoggettoProduttore = new SoggettoProduttore
            {
                Amministrazione = Utils.getInfoAmministrazione(infoCons),
                GerarchiaUO     = new GerarchiaUO {
                    UnitaOrganizzativa = uoL.ToArray()
                },
                Creatore = Utils.getCreatore(infoCons, ruolo)
            };

            if (dpaFascicolo != null && dpaFascicolo.template != null)
            {
                Tipologia t = new Tipologia {
                    NomeTipologia = dpaFascicolo.template.DESCRIZIONE, CampoTipologia = Utils.getCampiTipologia(dpaFascicolo.template)
                };
                fascicolo.Tipologia = t;
            }

            if (!string.IsNullOrEmpty(fascicolo.Codice))
            {
                fascicolo.Codice        = dpaFascicolo.codice;
                fascicolo.DataChiusura  = Utils.formattaData(Utils.convertiData(dpaFascicolo.chiusura));
                fascicolo.DataCreazione = Utils.formattaData(Utils.convertiData(dpaFascicolo.apertura));
                fascicolo.Descrizione   = dpaFascicolo.descrizione;

                OrgNodoTitolario nodo = BusinessLogic.Amministrazione.TitolarioManager.getNodoTitolario(dpaFascicolo.idTitolario);
                fascicolo.TitolarioDiRiferimento = nodo.Descrizione;
                fascicolo.Classificazione        = nodo.Codice;

                fascicolo.LivelloRiservatezza = Utils.convertiLivelloRiservatezza(dpaFascicolo.privato);
                fascicolo.Numero    = dpaFascicolo.numFascicolo;
                fascicolo.Contenuto = creaStrutturaContenuto(folderConservazione, ID_Project, infoUtente, ref fascicolo);
            }
        }
        // GET: Tipologias/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Tipologia tipologia = db.Tipologias.Find(id);

            if (tipologia == null)
            {
                return(HttpNotFound());
            }
            return(View(tipologia));
        }
Пример #8
0
        private decimal GeneraValoreAdeguatezzaMezzo(List <Tipologia> ListaTipologieDestinazione, string genere)
        {
            decimal ValoreAdeguatezzaMezzo = 0;
            string  filepath = "Fake/Navbar.json";
            string  json;

            using (StreamReader r = new StreamReader(filepath))
            {
                json = r.ReadToEnd();
            }
            Navbar Navbar = JsonConvert.DeserializeObject <Navbar>(json);

            foreach (Tipologia tipologia in ListaTipologieDestinazione)
            {
                Tipologia tipo = Navbar.Tipologie.Where(x => x.Codice.Equals(tipologia.Codice)).LastOrDefault();

                if (tipo != null)
                {
                    switch (genere)
                    {
                    case "APS":
                        ValoreAdeguatezzaMezzo = ValoreAdeguatezzaMezzo + Convert.ToDecimal(tipo.AdeguatezzaMezzo.APS);
                        break;

                    case "AS":
                        ValoreAdeguatezzaMezzo = ValoreAdeguatezzaMezzo + Convert.ToDecimal(tipo.AdeguatezzaMezzo.AS);
                        break;

                    case "AB":
                        ValoreAdeguatezzaMezzo = ValoreAdeguatezzaMezzo + Convert.ToDecimal(tipo.AdeguatezzaMezzo.AB);
                        break;

                    case "AV":
                        ValoreAdeguatezzaMezzo = ValoreAdeguatezzaMezzo + Convert.ToDecimal(tipo.AdeguatezzaMezzo.AV);
                        break;

                    case "AG":
                        ValoreAdeguatezzaMezzo = ValoreAdeguatezzaMezzo + Convert.ToDecimal(tipo.AdeguatezzaMezzo.AG);
                        break;

                    default:
                        ValoreAdeguatezzaMezzo = ValoreAdeguatezzaMezzo + Convert.ToDecimal(tipo.AdeguatezzaMezzo.DEFAULT);
                        break;
                    }
                }
            }

            return(ValoreAdeguatezzaMezzo);
        }
Пример #9
0
        /// <summary>
        ///   Metodo di esecuzione del command
        /// </summary>
        /// <param name="command">Il DTO</param>
        public void Handle(InserisciTelefonataCommand command)
        {
            var fonte = string.Format("op: {0}", this.getOperatoreAutenticato.Get());

            List <Tipologia> ListaTipologie = new List <Tipologia>();

            foreach (string codice in command.idTipiIntervento)
            {
                Tipologia tipologiaRichiesta = new Tipologia(getTipoInterventoByCodice.Get(codice).Codice, getTipoInterventoByCodice.Get(codice).Descrizione, "");
                ListaTipologie.Add(tipologiaRichiesta);
            }

            var richiesta = new RichiestaAssistenza()
            {
                //Geolocalizzazione = command.Geolocalizzazione,
                Tipologie     = ListaTipologie,
                Indirizzo     = command.Indirizzo,
                ZoneEmergenza = command.ZoneEmergenza,
            };

            foreach (var t in command.Tags)
            {
                richiesta.Tags.Add(t);
            }

            new Telefonata(richiesta, command.NumeroChiamata, command.IstanteChiamata, fonte)
            {
                CognomeChiamante = command.Cognome,
                NomeChiamante    = command.Nome,
                RagioneSociale   = command.RagioneSociale,
                //Geolocalizzazione = command.Geolocalizzazione,
                Motivazione    = command.Motivazione,
                NotePrivate    = command.NotePrivate,
                NotePubbliche  = command.NotePubbliche,
                NumeroTelefono = command.Telefono,
                Esito          = command.Azione.ToString(),
            };

            if (command.Azione == Azione.FalsoAllarme || command.Azione == Azione.InterventoNonPiuNecessario)
            {
                new ChiusuraRichiesta(
                    command.Azione.ToString(),
                    richiesta,
                    DateTime.Now,
                    fonte);
            }

            this.saveRichiestaAssistenza.Save(richiesta);
        }
Пример #10
0
        public static Document TipologiasToLuceneDocument(Tipologia tipologia)
        {
            Field id = new Field("id", tipologia.Id, Field.Store.YES, Field.Index.NOT_ANALYZED);
            Field formaAutorizada = new Field("formaAutorizada", tipologia.FormaAutorizada, Field.Store.YES, Field.Index.ANALYZED);
            Field designacao      = new Field("designacao", tipologia.Designacao, Field.Store.NO, Field.Index.ANALYZED);
            Field validado        = new Field("validado", tipologia.Validado, Field.Store.NO, Field.Index.ANALYZED);

            Document doc = new Document();

            doc.Add(id);
            doc.Add(formaAutorizada);
            doc.Add(designacao);
            doc.Add(validado);

            return(doc);
        }
Пример #11
0
        private Tipologia RiempiIstanza(SqlDataReader dr)
        {
            if (dr == null)
            {
                throw new ArgumentNullException("dr");
            }

            Tipologia tipologia = new Tipologia();

            tipologia.ID             = dr.GetInt32(0);
            tipologia._nome_IT       = dr.GetString(1);
            tipologia._nome_EN       = dr.GetString(2);
            tipologia.Macrotipologia = MacrotipologiaRepository.Instance.RecuperaMacrotipologia(dr.GetInt32(3));
            tipologia.FileIcona      = dr.GetString(4);

            return(tipologia);
        }
Пример #12
0
        private void Prepara(Tipologia tipologia)
        {
            bytes_clave     = 0;
            bytes_numero    = 0;
            bytes_protocolo = 0;
            if (tipologia == Tipologia.Secreto)
            {
                bytes_clave = Seguridad.longitud_secreto;
            }
            if (tipologia == Tipologia.Inicio || tipologia == Tipologia.Billete)
            {
                bytes_numero = bytes_billete;
            }
            if (tipologia == Tipologia.Inicio)
            {
                bytes_protocolo = Seguridad.protocolo.Longitud;
            }
            bytes_datos   = bytes_clave + bytes_numero + bytes_protocolo;
            bytes_mensaje = bytes_cabecera + bytes_datos + bytes_autentica;
            //
            buzon_mensaje   = new Buzon();
            buzon_clave     = new Buzon();
            buzon_numero    = new Buzon();
            buzon_protocolo = new Buzon();
            //
            int inicio_clave     = bytes_cabecera;
            int inicio_numero    = inicio_clave + bytes_clave;
            int inicio_protocolo = inicio_numero + bytes_numero;

            //
            buzon_mensaje.Reserva(bytes_mensaje);
            PreparaCabecera(buzon_mensaje);
            if (bytes_clave != 0)
            {
                buzon_mensaje.ConstruyePorcion(inicio_clave, bytes_clave, buzon_clave);
            }
            if (bytes_numero != 0)
            {
                buzon_mensaje.ConstruyePorcion(inicio_numero, bytes_numero, buzon_numero);
            }
            if (bytes_protocolo != 0)
            {
                buzon_mensaje.ConstruyePorcion(inicio_protocolo, bytes_protocolo, buzon_protocolo);
            }
            PreparaGrupos(buzon_mensaje, bytes_datos);
        }
Пример #13
0
        public bool Salvar(TipologiaDTO dto)
        {
            if (dto == null)
            {
                throw new ArgumentNullException("dto");
            }

            bool novoItem = false;

            var tipologia = tipologiaRepository.ObterPeloId(dto.Id);

            if (tipologia == null)
            {
                tipologia = new Tipologia();
                novoItem  = true;
            }

            tipologia.Descricao  = dto.Descricao;
            tipologia.Automatico = dto.Automatico;

            if (Validator.IsValid(tipologia, out validationErrors))
            {
                if (novoItem)
                {
                    tipologiaRepository.Inserir(tipologia);
                }
                else
                {
                    tipologiaRepository.Alterar(tipologia);
                }

                tipologiaRepository.UnitOfWork.Commit();
                messageQueue.Add(Resource.Sigim.SuccessMessages.SalvoComSucesso, TypeMessage.Success);
                return(true);
            }
            else
            {
                messageQueue.AddRange(validationErrors, TypeMessage.Error);
            }

            return(false);
        }
Пример #14
0
        private List <Tipologia> MapListaTipologieOraInMongoDB(List <ORATipologie> listaTipoligeOracle, List <ORAGruppo_Tipologie> ListaGruppiTipologie)
        {
            List <Tipologia> ListaTipologie = new List <Tipologia>();

            foreach (ORATipologie tipo in listaTipoligeOracle)
            {
                Tipologia tipologia = new Tipologia(tipo.COD_TIPOLOGIA.ToString(), tipo.DESCRIZIONE, "")
                {
                    Categoria        = ListaGruppiTipologie.Find(x => x.COD_GRUPPO.Equals(tipo.COD_GRUPPO)).DESC_GRUPPO,
                    AdeguatezzaMezzo = GeneraAdeguatezzaMezzo(tipo.COD_TIPOLOGIA.ToString()),
                    Boschivo         = false,
                    OppSganc         = 0,
                    Star             = false,
                    TipoLuogoEvento  = GeneraTipoLuogoEvento(tipo.COD_TIPOLOGIA.ToString())
                };

                ListaTipologie.Add(tipologia);
            }

            return(ListaTipologie);
        }
Пример #15
0
        /// <summary>
        ///   Restituisce una lista di tipologie. Con probabilità 75% la lista contiene una sola
        ///   tipologia. Con probabilità 20% la lista contiene due tipologie. Con probabilità 5% la
        ///   lista contiene tre tipologie.
        /// </summary>
        /// <returns>La lista delle tipologie</returns>
        private List <string> GeneraTipologie()
        {
            var tipologie =
                new Tipologia[]
            {
                new Tipologia("1", "Soccorso a persona", "fa fa-ambulance"),
                new Tipologia("2", "Incendio generico", "fa fa-fire"),
                new Tipologia("3", "Incendio boschivo", "fa fa-fire"),
                new Tipologia("4", "Danni d'acqua", "fa fa-exclamation-trinagle"),
                new Tipologia("5", "Alluvione", "fa fa-exclamation-trinagle"),
                new Tipologia("6", "Esplosione", "fa fa-exclamation-trinagle"),
                new Tipologia("7", "Incidente stradale", "fa fa-car"),
                new Tipologia("8", "Apertura porta", "fa fa-exclamation-trinagle"),
            };

            var f = new Faker();
            var numeroTipologie = f.Random.WeightedRandom <int>(new int[] { 1, 2, 3 }, new float[] { .7F, .2F, .1F });
            var range           = Enumerable.Range(1, numeroTipologie).Select(x => f.PickRandom(tipologie).Codice);
            var set             = new HashSet <string>(range); // elimina i duplicati

            return(set.ToList());
        }
Пример #16
0
        private int GeneraValoreSganciamento(List <Tipologia> ListaTipologieOrigine)
        {
            string filepath = "Fake/Navbar.json";
            string json;

            using (StreamReader r = new StreamReader(filepath))
            {
                json = r.ReadToEnd();
            }
            Navbar Navbar = JsonConvert.DeserializeObject <Navbar>(json);

            int IndiceSganciamento = 0;

            foreach (Tipologia tipologia in ListaTipologieOrigine)
            {
                Tipologia tipo = Navbar.Tipologie.Where(x => x.Codice.Equals(tipologia.Codice)).LastOrDefault();

                IndiceSganciamento = IndiceSganciamento + tipo.OpportunitaSganciamento;
            }

            return(IndiceSganciamento);
        }
Пример #17
0
        private List <Classi.Composizione.ComposizioneSquadre> FiltraSquadre(ComposizionePartenzaAvanzataQuery query, IEnumerable <Classi.Composizione.ComposizioneSquadre> lstCompSquadre, Tipologia tipologia90, Turno turnoCorrente, Turno turnoPrecedente, Turno turnoSuccessivo)
        {
            return(lstCompSquadre.Where(s =>
            {
                if (!string.IsNullOrEmpty(query.Filtro.RicercaSquadre))
                {
                    return s.Squadra.Codice.Contains(query.Filtro.RicercaSquadre);
                }
                return true;
            }).Where(s =>
            {
                if (query.Filtro.CodiceDistaccamento != null && query.Filtro.CodiceDistaccamento.All(c => c != ""))
                {
                    return query.Filtro.CodiceDistaccamento.Contains(s.Squadra.Distaccamento.Codice);
                }
                return true;
            }).Where(s =>
            {
                if (query.Filtro.Squadre != null && query.Filtro.Squadre.Count > 0 && query.Filtro.Squadre.FirstOrDefault().Distaccamento.Codice != null)
                {
                    return s.Squadra.Distaccamento.Codice == query.Filtro.Squadre.FirstOrDefault().Distaccamento.Codice;
                }
                return true;
            }).Where(s =>
            {
                if (query.Filtro.Mezzo != null && query.Filtro.Mezzo.Distaccamento.Codice != null)
                {
                    return s.Squadra.Distaccamento.Codice == query.Filtro.Mezzo.Distaccamento.Codice;
                }
                return true;
            }).Where(s => s.Squadra.DiEmergenza == query.Filtro.SquadreDiEmergenza)
                   .Where(s =>
            {
                if (!query.Richiesta.Tipologie.Contains(tipologia90.Codice))
                {
                    return s.Squadra.ColonnaMobile == query.Filtro.SquadreColonnaMobile;
                }
                return true;
            })

                   //FILTRO TURNO FUNZIONANTE SOLO IN TEST
#if !DEBUG
                   .Where(s =>
            {
                if (turnoPrecedente != null)
                {
                    return turnoPrecedente.Contains(s.Squadra.Turno);
                }
                else if (turnoPrecedente != null)
                {
                    return turnoSuccessivo.Contains(s.Squadra.Turno);
                }
                return turnoCorrente.Codice.Contains(s.Squadra.Turno);
            })
#endif
                   //QUI MASCHERO I RISULTATI MOSTRANDO, SEMPRE, ALMENO UNA SQUADRA PER TURNO
#if DEBUG
                   .Select(s =>
            {
                switch (query.Filtro.Turno)
                {
                case FiltroTurnoRelativo.Precedente: s.Squadra.Turno = turnoPrecedente.Codice; break;

                case FiltroTurnoRelativo.Successivo: s.Squadra.Turno = turnoSuccessivo.Codice; break;

                case null: s.Squadra.Turno = turnoCorrente.Codice; break;
                }

                return s;
            })
                   .Where(s => s != null)
#endif
                   .OrderByDescending(c => c.Squadra.IndiceOrdinamento)
                   .ToList());
        }
Пример #18
0
 public override int GetHashCode()
 {
     return(3 * Data.GetHashCode() + 5 * Tipologia.GetHashCode() + 7 * Descrizione.GetHashCode() + 11 * Importo.GetHashCode() + 13 * ImportoValuta.GetHashCode());
 }
Пример #19
0
 internal MensajeSeguridad(Seguridad seguridad_, Tipologia tipologia) :
     base(seguridad_)
 {
     Prepara(tipologia);
 }
Пример #20
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());
        }