Exemplo n.º 1
0
        /// <summary>
        /// Funzione per la creazione dell'oggetto protocollo in entrata
        /// </summary>
        /// <param name="rowData">L'oggetto con le informazioni sul documento da creare</param>
        /// <param name="registrySyd">Il system id del registo in cui protocollare</param>
        /// <param name="rfSyd">Il system id dell'rf in cui protocollare</param>
        /// <param name="administrationSyd">Il system id dell'amministrazione incui creare il documento</param>
        /// <param name="isSmistamentoEnabled">True se, da configurazione, è abilitato lo smistamento</param>
        /// <param name="userInfo">Le informazioni sull'utente che ha lanciato la procedura</param>
        /// <param name="role">Il ruolo dell'utente che ha lanciato la procedura</param>
        /// <returns>L'oggetto Protocollo con le informazioni sul protocollo in ingresso da creare</returns>
        protected override Protocollo CreateProtocolObject(DocumentRowData rowData, string registrySyd, string rfSyd, string administrationSyd, bool isSmistamentoEnabled, InfoUtente userInfo, Ruolo role)
        {
            // Creazione dell'oggetto ProtocolloEntrata
            ProtocolloEntrata inProto = new ProtocolloEntrata();

            // Calcolo del mittente del protocollo
            // Se è valorizzata la proprietà CorrDesc della rowData, significa che
            // il corrispondente è di tipo occasionale
            if (rowData.CorrDesc != null && rowData.CorrDesc.Count > 0)
            {
                // Creazione del corrispondente
                inProto.mittente = new Corrispondente();

                // Impostazione della descrizione del corrispondente
                inProto.mittente.descrizione = rowData.CorrDesc[0];

                // Impostazione dell'id amministrazione
                inProto.mittente.idAmministrazione = administrationSyd;

                // Impostazione del tipo corrispondente ad O
                inProto.mittente.tipoCorrispondente = "O";
            }

            if (rowData.CorrCode != null && rowData.CorrCode.Count > 0)
            {
                // Altrimenti si procede con il caricamento delle informazioni sul
                // corrispondente
                inProto.mittente = ImportUtils.GetCorrispondenteByCode(
                    ParametriRicercaRubrica.CallType.CALLTYPE_PROTO_IN,
                    rowData.CorrCode[0].Trim(),
                    role,
                    userInfo,
                    registrySyd,
                    rfSyd,
                    isSmistamentoEnabled,
                    TipoUtente.GLOBALE);
            }

            // Se non è stato ptrovato il corrispondente, eccezione
            if (inProto.mittente == null)
            {
                throw new Exception("Impossibile recuperare le informazioni sul mittente del protocollo.");
            }

            // Restituzione dell'oggetto con le informazioni sul protocollo
            return(inProto);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Caricamento dati protocollo ingresso
        /// </summary>
        private void FetchProtocolloIngresso()
        {
            ProtocolloEntrata protocollo = this.GetSchedaDocumento().protocollo as ProtocolloEntrata;

            if (protocollo != null)
            {
                if (protocollo.mittente != null)
                {
                    this.txtCodMitt.Text  = protocollo.mittente.codiceRubrica;
                    this.txtDescMitt.Text = protocollo.mittente.descrizione;
                }
                this.txtDtaProtMitt.Text = protocollo.dataProtocolloMittente;
                this.txtProtMitt.Text    = protocollo.descrizioneProtocolloMittente;

                if (this.MittentiIntermediEnabled() && protocollo.mittenteIntermedio != null)
                {
                    this.txtCodMittInterm.Text  = protocollo.mittenteIntermedio.codiceRubrica;
                    this.txtDescMittInterm.Text = protocollo.mittenteIntermedio.descrizione;
                }
            }
        }
Exemplo n.º 3
0
        public static DocInfo buildInstance(SchedaDocumento input, String OriginalFileName, IEnumerable <Fascicolo> fascicoli, bool isAcquisito, bool hasPreview)
        {
            DocInfo res = new DocInfo();

            res.IdDoc            = input.systemId;
            res.OriginalFileName = OriginalFileName;
            if (input.noteDocumento != null && input.noteDocumento.Count > 0)
            {
                Array.Sort(input.noteDocumento.ToArray(), new InfoNoteComparer());
                res.Note = input.noteDocumento[input.noteDocumento.Count - 1].Testo;
            }
            if (input.oggetto != null)
            {
                res.Oggetto = input.oggetto.descrizione;
            }
            res.DataDoc      = toDate(input.dataCreazione);
            res.HasPreview   = hasPreview;
            res.IsAcquisito  = isAcquisito;
            res.TipoProto    = input.tipoProto;
            res.AccessRights = input.accessRights;
            int AccInt = 0;

            Int32.TryParse(res.AccessRights, out AccInt);
            if (AccInt > 45)
            {
                res.CanTransmit = true;
            }

            if (input.documentoPrincipale != null)
            {
                res.IdDocPrincipale = input.documentoPrincipale.docNumber;
            }

            if (input.protocollo != null)
            {
                res.IsProtocollato = false;
                res.Segnatura      = input.protocollo.segnatura;
                if (input.protocollo.daProtocollare == "0")
                {
                    res.IsProtocollato = true;
                    res.DataProto      = toDate(input.protocollo.dataProtocollazione);
                }
                if (res.TipoProto.Equals("P"))
                {
                    ProtocolloUscita pu = (ProtocolloUscita)input.protocollo;
                    res.Mittente = formatCorrispondente(pu.mittente);
                    foreach (object temp in pu.destinatari)
                    {
                        res.Destinatari.Add(formatCorrispondente((Corrispondente)temp));
                    }
                }
                if (res.TipoProto.Equals("A"))
                {
                    ProtocolloEntrata pe = (ProtocolloEntrata)input.protocollo;
                    res.Mittente = formatCorrispondente(pe.mittente);
                }
            }
            if (fascicoli != null)
            {
                foreach (Fascicolo fasc in fascicoli)
                {
                    res.Fascicoli.Add(new List <string> {
                        fasc.codice, fasc.descrizione
                    });
                }
            }
            return(res);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Creazione del documento nel sistema
        /// </summary>
        /// <param name="settings">Impostazioni relative al registro su cui creare il documento</param>
        /// <param name="senderInfo">Informazioni sul mittente della richiesta</param>
        /// <param name="interoperabilityMessage">Messaggio con le informazioni sulla richiesta di interoperabilità</param>
        /// <param name="userRole">Ruolo dell'utente da utilizzare per la creazione del documento</param>
        /// <param name="user">Utente da utilizzare per la creazione del documento</param>
        /// <returns>Scheda del documento creato</returns>
        private static SchedaDocumento CreateDocument(InteroperabilitySettings settings, Corrispondente senderInfo, InteroperabilityMessage interoperabilityMessage, Ruolo userRole, Utente user, String messageId)
        {
            // Recupero delle informazioni sull'utente da utilizzare come creatore del documento
            InfoUtente userInfo = UserManager.GetInfoUtente(user, userRole);

            // Creazione della scheda documento da restituire
            SchedaDocumento document = DocManager.NewSchedaDocumento(userInfo);

            // Recupero del registro su cui creare il predisposto
            Registro registry = RegistriManager.getRegistro(settings.RegistryId);

            // Recupero del mezzo di spedizione
            MezzoSpedizione channel = InfoDocManager.GetMezzoSpedizioneDaCodice("SIMPLIFIEDINTEROPERABILITY");

            // Impostazione delle proprietà del documento
            try
            {
                if (!String.IsNullOrEmpty(interoperabilityMessage.MainDocument.FileName))
                {
                    document.appId = InteroperabilitaSegnatura.getApp(interoperabilityMessage.MainDocument.FileName).application;
                }
            }
            catch (Exception e) {}

            document.idPeople = user.idPeople;
            document.userId   = user.userId;
            document.oggetto  = new Oggetto()
            {
                descrizione = interoperabilityMessage.Record.Subject
            };
            document.predisponiProtocollazione = true;
            document.registro            = registry;
            document.tipoProto           = "A";
            document.typeId              = "SIMPLIFIEDINTEROPERABILITY";
            document.mezzoSpedizione     = channel.IDSystem;
            document.descMezzoSpedizione = channel.Descrizione;
            document.interop             = "S";
            document.protocollatore      = new Protocollatore(userInfo, userRole);
            document.privato             = interoperabilityMessage.IsPrivate ? "1" : "0";

            // Se la gestione dell'interoperabilità è manuale con mantenimento
            // del documento pendente, il documento viene creato privato e subito dopo
            // la creazione viene rimarcato come non privato
            if (settings.ManagementMode == ManagementType.M && settings.KeepPrivate)
            {
                document.privato = "1";
            }

            // Preparazione dell'oggetto protocollo entrata
            ProtocolloEntrata proto = new ProtocolloEntrata();

            proto.mittente = senderInfo;
            proto.dataProtocolloMittente        = interoperabilityMessage.Record.RecordDate.ToString("dd/MM/yyyy HH:mm:ss");
            proto.descrizioneProtocolloMittente = String.Format("{0}{1}{2}",
                                                                interoperabilityMessage.Record.AOOCode,
                                                                DocsPaDB.Utils.Personalization.getInstance(registry.idAmministrazione).getSepSegnatura(),
                                                                interoperabilityMessage.Record.RecordNumber);
            document.protocollo = proto;

            // Se per l'amministrazione è configurata l'aggiunta di una nota visibile a tutti,
            // ne viene aggiunta una
            String value = DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_NOTE_IN_SEGNATURA");

            if (!String.IsNullOrEmpty(value) && value == "1" && !String.IsNullOrEmpty(interoperabilityMessage.Note))
            {
                document.noteDocumento = new List <DocsPaVO.Note.InfoNota>()
                {
                    new DocsPaVO.Note.InfoNota(interoperabilityMessage.Note, userInfo.idPeople, userInfo.idGruppo, DocsPaVO.Note.TipiVisibilitaNotaEnum.Tutti, String.Empty)
                    {
                        DaInserire = true
                    }
                }
            }
            ;

            // Salvataggio del documento
            try
            {
                document = DocSave.addDocGrigia(document, userInfo, userRole);

                // Associazione del canale di spedizione al documento
                ProtoManager.collegaMezzoSpedizioneDocumento(userInfo, channel.IDSystem, document.systemId);
            }
            catch (Exception e)
            {
                SimplifiedInteroperabilityLogAndRegistryManager.InsertItemInLog(String.Empty, true, e.Message + " Id messaggio: " + messageId);
                throw new CreatingDocumentException("Errore durante la creazione del documento");
            }
            // Se tutto è andato bene, la scheda documento ha ora il campo system id popolato, quindi viene aggiunta
            // una voce al log e viene aggiornato l'id profile per la voce nel registro dei messaggi ricevuti
            SimplifiedInteroperabilityLogAndRegistryManager.InsertItemInLog(document.systemId, false,
                                                                            String.Format("Documento relativo alla richiesta con id {0}, creato correttamente.", messageId));
            SimplifiedInteroperabilityLogAndRegistryManager.SetIdProfileForMessage(messageId, document.systemId);

            // Impostazione delle informazioni aggiuntive e salvataggio del documento
            ((Documento)document.documenti[0]).dataArrivo = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
            bool toUpdate;

            document = DocSave.save(userInfo, document, false, out toUpdate, userRole);
            string errPutFile = "";

            try
            {
                // Associazione dell'immagine al documento
                String      err     = String.Empty;
                FileRequest request = document.documenti[0] as FileRequest;
                logger.DebugFormat("IS - Associa documento. Versionid {0}, Versionlabel {1}, version {2}",
                                   request.versionId, request.versionLabel, request.version);

                if (!String.IsNullOrEmpty(interoperabilityMessage.MainDocument.FileName))
                {
                    SimplifiedInteroperabilityFileManager.DownloadFile(
                        interoperabilityMessage.MainDocument,
                        interoperabilityMessage.Sender.AdministrationId,
                        request,
                        userInfo,
                        interoperabilityMessage.Sender.FileManagerUrl,
                        out errPutFile);
                }
                if (!string.IsNullOrEmpty(errPutFile))
                {
                    throw new Exception("Errore durante l'associazione dell'immagine al documento principale");
                }
            }
            catch (Exception e)
            {
                SimplifiedInteroperabilityLogAndRegistryManager.InsertItemInLog(
                    document.systemId,
                    true,
                    String.Format("Errore durante l'associazione dell'immagine per il documento principale. Messaggio eccezione: {0}",
                                  e.Message));
                if (!string.IsNullOrEmpty(errPutFile) && errPutFile.Contains("formato file"))
                {
                    throw new DownloadDocumentException("Errore durante l'associazione dell'immagine al documento principale." + errPutFile + " destinataria.");
                }
                else
                {
                    throw new DownloadDocumentException("Errore durante l'associazione dell'immagine al documento principale");
                }
            }
            AddAttachments(document.docNumber, interoperabilityMessage.Attachments, userInfo, interoperabilityMessage.Sender.AdministrationId, interoperabilityMessage.Sender.FileManagerUrl);
            // Restituzione del documento salvato
            return(document);
        }