示例#1
0
        /// <summary>
        /// Metodo per l'invio della ricevuta
        /// </summary>
        /// <param name="sender">Informazioni sul mittente della spedizione</param>
        /// <param name="receiver">Informazioni sul destinatario della spedizione</param>
        /// <param name="senderUrl">Url del mittente</param>
        /// <param name="reason">Ragione di annullamento o dettaglio dell'eccezione</param>
        /// <param name="adminId">Id dell'amministrazione</param>
        /// <param name="dropped">Flag utilizzato per indicare se si deve inviare una richiesta di eliminazione</param>
        /// <param name="receiverCode">Codice del destinatario</param>
        private static void SendProof(RecordInfo sender, RecordInfo receiver, string senderUrl, String reason, String adminId, bool dropped, String receiverCode)
        {
            InteroperabilityController interoperabilityController = new InteroperabilityController();

            interoperabilityController.AnalyzeDocumentDroppedOrErrorProof(
                new Interoperability.Domain.RecordInfo()
            {
                AdministrationCode = sender.AdministrationCode,
                AOOCode            = sender.AOOCode,
                RecordDate         = sender.RecordDate,
                RecordNumber       = sender.RecordNumber
            },
                new Interoperability.Domain.RecordInfo()
            {
                AdministrationCode = receiver.AdministrationCode,
                AOOCode            = receiver.AOOCode,
                RecordDate         = receiver.RecordDate,
                RecordNumber       = receiver.RecordNumber
            },
                reason,
                InteroperabilitaSemplificataManager.GetUrl(adminId),
                senderUrl,
                dropped ? Interoperability.Domain.OperationDiscriminator.Drop : Interoperability.Domain.OperationDiscriminator.Error,
                receiverCode);
        }
示例#2
0
        /// <summary>
        /// Metodo per l'invio della ricevuta di conferma ricezione
        /// </summary>
        /// <param name="senderRecordInfo">Informazioni sul protocollo mittente</param>
        /// <param name="receiverRecordInfo">Informaizoni sul protocollo destinatario</param>
        /// <param name="senderUrl">Url del mittente della richiesta di interoperabilità</param>
        /// <param name="idProfile">Id del documento creato a seguito della richiesta di interoperabilità</param>
        /// <param name="userId">User id dell'utente mittente della ricevuta</param>
        /// <param name="adminId">Id dell'amministrazione mittente</param>
        /// <param name="receiverCode">Codice del destinatario per cui generare la ricevuta</param>
        internal static void SendProof(RecordInfo senderRecordInfo, RecordInfo receiverRecordInfo, String senderUrl, String idProfile, String userId, String adminId, String receiverCode)
        {
            InteroperabilityController interoperabilityController = new InteroperabilityController();

            try
            {
                // Invio della ricevuta al mittente
                try
                {
                    interoperabilityController.AnalyzeDocumentReceivedProof(
                        new Interoperability.Domain.RecordInfo()
                    {
                        AdministrationCode = senderRecordInfo.AdministrationCode,
                        AOOCode            = senderRecordInfo.AOOCode,
                        RecordDate         = senderRecordInfo.RecordDate,
                        RecordNumber       = senderRecordInfo.RecordNumber
                    },
                        new Interoperability.Domain.RecordInfo()
                    {
                        AdministrationCode = receiverRecordInfo.AdministrationCode,
                        AOOCode            = receiverRecordInfo.AOOCode,
                        RecordDate         = receiverRecordInfo.RecordDate,
                        RecordNumber       = receiverRecordInfo.RecordNumber
                    },
                        senderUrl,
                        InteroperabilitaSemplificataManager.GetUrl(adminId),
                        receiverCode);
                }
                catch (Exception e)
                {
                    logger.Error("Errore durante l'invio della ricevuta di conferma ricezione al mittente: " + e.Message);
                    SimplifiedInteroperabilityLogAndRegistryManager.InsertItemInLog(idProfile, true,
                                                                                    String.Format("Errore durante l'invio della ricevuta di conferma ricezione al mittente da parte dell'utente {0}", userId));
                    logger.ErrorFormat("Errore durante l'invio della ricevuta di conferma ricezione al mittente da parte dell'utente {0}", userId);
                }

                // Aggiunta voce di log
                SimplifiedInteroperabilityLogAndRegistryManager.InsertItemInLog(idProfile, false,
                                                                                String.Format("Ricevuta di conferma di ricezione al mittente con indirizzo '{0}' da parte dell'utente {1} inviata correttamente.",
                                                                                              senderUrl, userId));
            }
            catch (Exception e)
            {
                SimplifiedInteroperabilityLogAndRegistryManager.InsertItemInLog(idProfile, true,
                                                                                String.Format("Errore durante l'invio della ricevuta di conferma di ricezione al mittente con indirizzo '{0}' da parte dell'utente {1}",
                                                                                              senderUrl, userId));

                logger.Error(
                    String.Format("Errore durante l'invio della ricevuta di conferma di ricezione al mittente con indirizzo '{0}' da parte dell'utente {1}",
                                  senderUrl, userId),
                    e);
            }
        }
示例#3
0
        /// <summary>
        /// Metodo per il download di un file associato ad un documento
        /// </summary>
        /// <param name="documentInfo">Informazioni sul documento</param>
        /// <param name="senderAdministrationId">Id dell'amministrazione</param>
        /// <param name="fileRequest">Informazioni sul file richiesto</param>
        /// <param name="userInfo">Informazioni sull'utente con cui recuperare il file</param>
        /// <param name="senderFileManagerUrl">Url del servizio per la gestione dei file</param>
        public static void DownloadFile(DocumentInfo documentInfo, String senderAdministrationId, FileRequest fileRequest, InfoUtente userInfo, String senderFileManagerUrl, out string errPutFile)
        {
            logger.Debug("BEGIN");
            // Reperimento del file
            InteroperabilityController interoperabilityController = new InteroperabilityController();

            Interoperability.Service.Library.FileServiceReference.RemoteFileInfo fileResponse = interoperabilityController.DownloadFile(
                new Interoperability.Service.Library.FileServiceReference.SendFileRequest(
                    senderAdministrationId,
                    documentInfo.DocumentNumber,
                    documentInfo.DocumentServerLocation,
                    documentInfo.FileName,
                    documentInfo.FilePath,
                    documentInfo.Version,
                    documentInfo.VersionId,
                    documentInfo.VersionLabel),
                senderFileManagerUrl);

            // Caricamento del file in DocsPa
            byte[] documentContent = ReadFileContent(fileResponse.FileData, (int)fileResponse.FileTransferInfo.FileLength);

            FileDocumento fileDocument = new FileDocumento()
            {
                content = documentContent,
                length  = (int)fileResponse.FileTransferInfo.FileLength,
                name    = fileResponse.FileTransferInfo.FileName
            };

            String err = String.Empty;

            //Gestione TSDis (DOC+TSR)
            //Siccome non si possono mandare piu file allo stesso tempo, ne è possibile alterare la struttura
            //si è pensato in fase di invio, in caso di documenti con TSR associato, l'invio dello stesso un formato
            //TSD, come marca verrà presa l'ultima disponibile, e unita al documento, creadno un file con estensione TSDis
            //In fase di ricezione il TsdIs, sarà poi spacchettato, il TSR messo in DPA_TIMESTAMP dopo verifica hash e
            //infine il payload messo in documentale con la putfile.


            DocsPaVO.areaConservazione.OutputResponseMarca resultMarca = null;
            if (Path.GetExtension(fileDocument.name) == ".TSDis")
            {
                try
                {
                    Documenti.DigitalSignature.PKCS_Utils.tsd tsdMgr = new Documenti.DigitalSignature.PKCS_Utils.tsd();
                    tsdMgr.explode(fileDocument.content);
                    fileDocument.content = tsdMgr.Data.Content;
                    fileDocument.length  = (int)fileDocument.content.Length;
                    fileDocument.name    = fileDocument.name.Replace(".TSDis", string.Empty);
                    Documenti.DigitalSignature.VerifyTimeStamp vts = new Documenti.DigitalSignature.VerifyTimeStamp();
                    byte[] tsrFile = tsdMgr.TSR.FirstOrDefault().Content;
                    if (vts.machTSR(tsrFile, fileDocument.content))
                    {
                        resultMarca = vts.Verify(fileDocument.content, tsrFile);
                    }
                }
                catch (Exception e)
                {
                    logger.ErrorFormat("Errore gestendo il TSDis {0} {1}", e.Message, e.StackTrace);
                    //manca il loggher pdpdpdpdp
                }
            }

            FileManager.putFile(ref fileRequest, fileDocument, userInfo, out errPutFile, false);
            if (resultMarca != null && resultMarca.esito == "OK")
            {
                DocsPaDB.Query_DocsPAWS.TimestampDoc timestampDoc = new DocsPaDB.Query_DocsPAWS.TimestampDoc();
                timestampDoc.saveTSR(userInfo, resultMarca, fileRequest);
            }

            logger.Debug("END");
        }