예제 #1
0
        //questo metodo crea un documento protocollato su docsPa a partire da un protocollo di emergenza
        public static DocsPaVO.documento.resultProtoEmergenza importaProtoEmergenza(DocsPaVO.documento.ProtocolloEmergenza protoEmergenza, DocsPaVO.utente.InfoUtente infoUtente)
        {
            DocsPaVO.documento.resultProtoEmergenza res = new DocsPaVO.documento.resultProtoEmergenza();

            try
            {
                DocsPaVO.utente.Ruolo ruolo = Utenti.UserManager.getRuolo(infoUtente.idCorrGlobali);
                DocsPaVO.documento.SchedaDocumento schedaDocumento;
                logger.Debug("add protocollo Emergenza");
                //si costruisce l'oggetto schedaDocumento
                schedaDocumento = creaSchedaDocumento(protoEmergenza, infoUtente, ruolo);
                //si protocolla
                DocsPaVO.documento.ResultProtocollazione risultatoProtocollazione;
                schedaDocumento = ProtoManager.protocolla(schedaDocumento, ruolo, infoUtente, out risultatoProtocollazione);
                if (schedaDocumento != null)
                {
                    res.isProtocollato = true;
                }

                //si classifica il documento
                classificaDocumento(schedaDocumento, protoEmergenza.codiceClassifica, ref res, infoUtente, ruolo);

                //eventualmente si annulla il documento
                if (protoEmergenza.dataAnnullamento != null && !protoEmergenza.dataAnnullamento.Equals(""))
                {
                    annullaProtocollo(schedaDocumento, protoEmergenza, ref res, infoUtente);
                }
                else
                {
                    //si trasmette il documento
                    trasmettiDocumento(schedaDocumento, protoEmergenza.templateTrasmissione, ref res, infoUtente, ruolo, protoEmergenza.idRegistro);
                }
            }
            catch (Exception e)
            {
                res.messaggio = res.messaggio + " - " + e.Message;
                logger.Debug(e.ToString());
                return(res);
            }
            return(res);
        }
예제 #2
0
        /// <summary>
        /// Metodo per la creazione del predisposto e per la sua trasmissione agli utenti impostati nel sistema
        /// </summary>
        /// <param name="settings">Impostazioni relative al particolare registro su cui creare il predisposto</param>
        /// <param name="senderInfo">Informazioni sul mittente del messaggio</param>
        /// <param name="interoperabilityMessage">Informazioni sulla richiesta di interoperabilità</param>
        ///
        private static InfoDocumentDelivered GenerateInteroperabilityDocument(InteroperabilitySettings settings, Corrispondente senderInfo, InteroperabilityMessage interoperabilityMessage, List <ReceiverInfo> receivers, String messageId, Utente user, Ruolo userRole)
        {
            // Se per il registro è disabilitata l'interoperabilità, non si può procedere.
            if (!settings.IsEnabledInteroperability)
            {
                throw new RegistryNotInteroperableException(String.Format("Registro {0} non interoperante", RegistriManager.getRegistro(settings.RegistryId).codice));
            }

            // Creazione della scheda documento
            SchedaDocumento document = CreateDocument(settings, senderInfo, interoperabilityMessage, userRole, user, messageId);

            // Trasmissione dei documenti ai ruoli
            List <ReceiverInfo> uneachableReceivers = TransmitDocument(settings, document, userRole, user, interoperabilityMessage.IsPrivate, receivers);

            // Se il documento è stato marcato privato a causa delle impostazioni sulla gestione
            // viene eliminato il flag privato
            if (!interoperabilityMessage.IsPrivate && document.privato == "1")
            {
                DocManager.SetNotPrivate(document.systemId);
            }

            InfoDocumentDelivered infoDocDelivered = BuildInfoDocumentDelivered(document);

            // Se per il registro è impostata la modalità automatica, si procede con la protocollazione del documento
            if (settings.ManagementMode == ManagementType.A)
            {
                try
                {
                    InfoUtente userInfo = UserManager.GetInfoUtente(user, userRole);

                    // Impostazione della data e ora di protocollazione
                    document.protocollo.dataProtocollazione = DateTime.Now.ToString("dd/MM/yyyy");
                    document.protocollo.anno = DateTime.Now.Year.ToString();

                    ResultProtocollazione protoResult = ResultProtocollazione.OK;
                    ProtoManager.protocolla(document, userRole, userInfo, out protoResult);

                    // Invio della ricevuta di conferma di ricezione al mittente per tutti i destinatari
                    SimplifiedInteroperabilityProtoManager.SendDocumentReceivedProofToSender(
                        interoperabilityMessage,
                        new DocsPaVO.Interoperabilita.Semplificata.RecordInfo()
                    {
                        AdministrationCode = document.registro.codAmministrazione,
                        AOOCode            = document.registro.codRegistro,
                        RecordDate         = DateTime.Parse(document.protocollo.dataProtocollazione),
                        RecordNumber       = document.protocollo.numero
                    },
                        document.systemId,
                        userInfo);
                }
                catch (Exception e)
                {
                    SimplifiedInteroperabilityLogAndRegistryManager.InsertItemInLog(
                        document.systemId,
                        true,
                        "Errore durante la creazione del protocollo");
                    throw new CreatingDocumentException("Errore durante la protocollazione del documento predisposto");
                }
            }

            // Se qualche corrispondente non è stato trovato, viene sollevata un'eccezione
            // di tipo RetrivingSomeTransmissionReceiverException
            if (uneachableReceivers != null && uneachableReceivers.Count > 0)
            {
                throw new RetrivingSomeTransmissionReceiverException(
                          "Nessun destinatario trovato per la trasmissione del documento",
                          uneachableReceivers);
            }

            return(infoDocDelivered);
        }