Example #1
0
        public static DocsPaVO.documento.SchedaDocumento getDettaglioMobile(DocsPaVO.utente.InfoUtente infoUtente, string idProfile, string docNumber)
        {
            DocsPaDB.Query_DocsPAWS.Mobile.DocumentiMobile doc       = new DocsPaDB.Query_DocsPAWS.Mobile.DocumentiMobile();
            DocsPaVO.documento.SchedaDocumento             schedaDoc = new DocsPaVO.documento.SchedaDocumento();
            schedaDoc = doc.GetDettaglioMobile(infoUtente, idProfile, docNumber, true);

            if (schedaDoc == null)
            {
                throw new Exception();
            }
            else
            {
                // Reperimento informazioni se il documento è in stato checkout,
                // solo per i documenti non di tipo stampa registro
                schedaDoc.checkOutStatus = BusinessLogic.CheckInOut.CheckInOutServices.GetCheckOutStatus(schedaDoc.systemId, schedaDoc.docNumber, infoUtente);
            }

            try
            {
                DocsPaDocumentale.Documentale.DocumentManager docManager = new DocsPaDocumentale.Documentale.DocumentManager(infoUtente);
                DocsPaVO.documento.Documento docPrinc = (schedaDoc.documenti[0] as DocsPaVO.documento.Documento);
                string ext = docManager.GetFileExtension(schedaDoc.docNumber, docPrinc.version);
                DocsPaVO.documento.Applicazione app = new DocsPaVO.documento.Applicazione();
                app.estensione         = ext;
                docPrinc.applicazione  = app;
                schedaDoc.documenti[0] = docPrinc;
            }
            catch (Exception)
            {
            }

            return(schedaDoc);
        }
Example #2
0
        /// <summary>
        /// Aggiunta di un file firmato ad un documento esistente
        /// </summary>
        /// <param name="base64content"></param>
        /// <param name="cofirma"></param>
        /// <param name="fileRequest"></param>
        /// <param name="infoUtente"></param>
        /// <returns></returns>
        private static bool AppendDocumentoFirmato(
            byte[] signedContent,
            bool cofirma,
            ref DocsPaVO.documento.FileRequest fileRequest,
            DocsPaVO.utente.InfoUtente infoUtente, bool isPades, bool isConvertedToPdf = false)
        {
            bool retValue = true;

            DocsPaVO.documento.FileRequest fileRequest_old = (DocsPaVO.documento.FileRequest)fileRequest.Clone();

            try
            {
                if (fileRequest.repositoryContext == null)
                {
                    // Verifica stato di consolidamento del documento, solamente se non si sta firmando nel repository context
                    DocumentConsolidation.CanExecuteAction(infoUtente,
                                                           fileRequest.docNumber,
                                                           DocumentConsolidation.ConsolidationActionsDeniedEnum.SignDocument,
                                                           true);
                }
                //luca
                if (fileRequest != null && !String.IsNullOrEmpty(fileRequest.fileName) && (fileRequest.fileName.ToLower().EndsWith("pdf_convertito") || isConvertedToPdf))
                {
                    fileRequest.fileName = System.IO.Path.GetFileNameWithoutExtension(fileRequest.fileName) + ".pdf";
                    isConvertedToPdf     = true;
                }
                //end luca
                // Verifica se il formato del file è accettato per la firma
                if (!IsFormatSupportedForSign(infoUtente, fileRequest))
                {
                    throw new ApplicationException("Formato file non supportato per la firma");
                }

                DocsPaVO.documento.Applicazione  app     = new DocsPaVO.documento.Applicazione();
                DocsPaVO.documento.FileDocumento fileDoc = new DocsPaVO.documento.FileDocumento();

                fileDoc.content = signedContent;
                fileDoc.length  = fileDoc.content.Length;
                string nomeOriginale = BusinessLogic.Documenti.FileManager.getOriginalFileName(infoUtente, fileRequest);

                if (isPades)
                {
                    // INC000001085991 PITRE - conversione in pdf su firma pades non aggiorna l'estensione
                    // fileDoc.nomeOriginale = nomeOriginale ;
                    if (!string.IsNullOrEmpty(nomeOriginale))
                    {
                        //se il filename finisce PDF probabilmente è stato convertito.
                        //controllo inoltre se il nomeoriginale non finisce con PDF, in tal caso lo popolo.
                        if ((System.IO.Path.GetExtension(fileRequest.fileName).ToUpper() == ".PDF") &&
                            (System.IO.Path.GetExtension(nomeOriginale).ToUpper() != ".PDF") && isConvertedToPdf)
                        {
                            nomeOriginale += ".PDF";
                        }

                        fileDoc.nomeOriginale = nomeOriginale;
                    }

                    fileDoc.estensioneFile = GetAppSuffix(fileRequest.fileName);
                    fileDoc.name           = fileRequest.fileName;
                    app.estensione         = GetAppSuffix(fileRequest.fileName);
                }
                else
                {
                    if (cofirma && System.IO.Path.GetExtension(nomeOriginale).ToUpper().Equals(".P7M"))
                    {
                        app.estensione = GetAppSuffix(fileRequest.fileName);
                        fileDoc.name   = fileRequest.fileName;



                        if (!string.IsNullOrEmpty(nomeOriginale))
                        {
                            //se il filename finisce PDF probabilmente è stato convertito.
                            //controllo inoltre se il nomeoriginale non finisce con PDF, in tal caso lo popolo.
                            if ((System.IO.Path.GetExtension(fileRequest.fileName).ToUpper() == ".PDF") &&
                                (System.IO.Path.GetExtension(nomeOriginale).ToUpper() != ".PDF"))
                            {
                                nomeOriginale += ".PDF";
                            }

                            fileDoc.nomeOriginale = nomeOriginale;
                        }
                        fileDoc.estensioneFile = GetAppSuffix(fileRequest.fileName);
                    }
                    else
                    {
                        app.estensione = GetAppSuffix(fileRequest.fileName + ".P7M");
                        fileDoc.name   = fileRequest.fileName + ".P7M";

                        //luca
                        if (isConvertedToPdf)
                        {
                            //ATTENZIONE, Se un giorno attiveremo la firma pades lato client questo codice non andrà più bene
                            if (!string.IsNullOrEmpty(nomeOriginale))
                            {
                                nomeOriginale = nomeOriginale + ".PDF";
                            }
                        }
                        // end luca
                        if (!string.IsNullOrEmpty(nomeOriginale))
                        {
                            //se il filename finisce PDF probabilmente è stato convertito.
                            //controllo inoltre se il nomeoriginale non finisce con PDF, in tal caso lo popolo.
                            if ((System.IO.Path.GetExtension(fileRequest.fileName).ToUpper() == ".PDF") &&
                                (System.IO.Path.GetExtension(nomeOriginale).ToUpper() != ".PDF"))
                            {
                                nomeOriginale += ".PDF";
                            }

                            fileDoc.nomeOriginale = nomeOriginale + ".P7M";
                        }
                        fileDoc.estensioneFile = GetAppSuffix(fileRequest.fileName + ".p7m");
                    }
                }
                fileDoc.fullName = fileDoc.name;

                bool addNewAttatchment = false;
                bool isAllegato        = (fileRequest.GetType().Equals(typeof(DocsPaVO.documento.Allegato)));

                if (isAllegato && fileRequest.repositoryContext == null)
                {
                    // La firma digitale per l'allegato viene fatta solamente se il documento già esiste su database

                    // Se è attiva la gestione di profilazione degli allegati,
                    // deve essere aggiunta una nuova versione del documento.
                    // Altrimenti, deve essere creato un nuovo allegato.
                    addNewAttatchment = (!BusinessLogic.Documenti.AllegatiManager.isEnabledProfilazioneAllegati());
                }

                if (addNewAttatchment)
                {
                    fileRequest.docNumber   = BusinessLogic.Documenti.AllegatiManager.getIdDocumentoPrincipale((DocsPaVO.documento.Allegato)fileRequest);
                    fileRequest.descrizione = "Versione firmata";
                    fileRequest.cartaceo    = false;
                    fileRequest             = BusinessLogic.Documenti.AllegatiManager.aggiungiAllegato(infoUtente, (DocsPaVO.documento.Allegato)fileRequest);

                    if (fileRequest == null)
                    {
                        throw new ApplicationException("Errore nella creazione dell'allegato firmato per il documento");
                    }
                }
                else
                {
                    fileRequest.applicazione = app;
                    fileRequest.versionId    = "";
                    fileRequest.descrizione  = "Versione firmata";
                    fileRequest.cartaceo     = false;
                    fileRequest = BusinessLogic.Documenti.VersioniManager.addVersion(fileRequest, infoUtente, false);

                    if (fileRequest == null)
                    {
                        throw new ApplicationException("Errore nella creazione della versione firmata per il documento");
                    }

                    bool setDataFirma = BusinessLogic.Documenti.DocManager.SetDataFirmaDocumento(fileRequest.docNumber, fileRequest.versionId);

                    if (!isAllegato)
                    {
                        ((DocsPaVO.documento.Documento)fileRequest).daInviare = "1";
                    }
                }

                //PDZ devo sapere prima di fare la put se è firmato elettronicamente per la gestione tipo firma mista
                List <DocsPaVO.LibroFirma.FirmaElettronica> firmaE = LibroFirma.LibroFirmaManager.GetFirmaElettronicaDaFileRequest(fileRequest_old);
                bool isFirmatoElettonicamente = firmaE != null && firmaE.Count > 0;
                fileRequest.tipoFirma = isFirmatoElettonicamente ? DocsPaVO.documento.TipoFirma.ELETTORNICA : fileRequest.tipoFirma;

                BusinessLogic.Documenti.FileManager.putFile(fileRequest, fileDoc, infoUtente, false);

                //ABBATANGELI GIANLUIGI - FIRMA ELETTRONICA

                if (isFirmatoElettonicamente)
                {
                    string impronta = string.Empty;
                    DocsPaDB.Query_DocsPAWS.Documenti docInfoDB = new DocsPaDB.Query_DocsPAWS.Documenti();
                    docInfoDB.GetImpronta(out impronta, fileRequest.versionId, fileRequest.docNumber);

                    foreach (DocsPaVO.LibroFirma.FirmaElettronica firma in firmaE)
                    {
                        firma.UpdateXml(impronta, fileRequest.versionId, fileRequest.version);
                        LibroFirma.LibroFirmaManager.InserisciFirmaElettronica(firma);
                    }
                }
                //FINE
            }
            catch (Exception e)
            {
                logger.Debug(e.ToString());
                logger.Debug("Errore nella gestione della verifica firma (verificaFirmaMethod)", e);

                retValue = false;
            }

            return(retValue);
        }