示例#1
0
        /// <summary>
        /// metodo per inserimento nel registro di conservazione.
        ///
        /// </summary>
        /// <param name="registroCons"> ogetto con i dati del registro </param>

        /// <returns></returns>
        public bool inserimentoInRegistroCons(DocsPaVO.Conservazione.RegistroCons registroCons, InfoUtente infoUt)
        {
            try
            {
                // if (!(infoUt.extApplications != null && infoUt.extApplications.Count > 0 && ((DocsPaVO.utente.ExtApplication)infoUt.extApplications[0]).codice.Equals("CS")))
                if (!(infoUt.codWorkingApplication != null && infoUt.codWorkingApplication.Equals("CS")))
                {
                    return(false);
                }

                DocsPaDB.Query_DocsPAWS.Conservazione cons = new DocsPaDB.Query_DocsPAWS.Conservazione();
                string rigaIns = cons.InsertInRegistroCons(registroCons);


                if (String.IsNullOrEmpty(rigaIns))
                {
                    return(false);
                }
            }

            catch (Exception exc)
            {
                string err = exc.Message;
                //logger.Debug(err);
                return(false);
            }
            return(true);
        }
示例#2
0
        /// <summary>
        /// Aggiornamento dello stato dell'istanza di conservazione e del supporto
        /// </summary>
        protected virtual void UpdateIstanzaConservazione()
        {
            string descrizione, codAzione;

            logger.Info("UpdateIstanzaConservazione");

            if (this._statoVerifica.Esito)
            {
                string stato = string.Empty;

                int countSupportiRimovibiliRegistrati = DocsPaConsManager.GetCountSupportiRimovibiliRegistrati(this._idConservazione);
                int countSupportiRimovibili           = DocsPaConsManager.GetCountSupportiRimovibili(this._idConservazione);

                logger.InfoFormat("UpdateIstanzaConservazione.countSupportiRimovibiliRegistrati: {0}", countSupportiRimovibiliRegistrati);
                logger.InfoFormat("UpdateIstanzaConservazione.countSupportiRimovibili: {0}", countSupportiRimovibili);

                // Modifica per scrittura Log e Registro di conservazione
                if (countSupportiRimovibiliRegistrati == countSupportiRimovibili)
                {
                    stato       = DocsPaConservazione.StatoIstanza.CHIUSA;
                    descrizione = "Passaggio in stato CHIUSA dell’istanza " + _idConservazione;
                    codAzione   = "PASS_ISTANZA_CHIUSA";
                }
                else
                {
                    stato       = DocsPaConservazione.StatoIstanza.CONSERVATA;
                    descrizione = "Passaggio in stato CONSERVATA dell’istanza " + _idConservazione;
                    codAzione   = "PASS_ISTANZA_CONSERVATA";
                }

                // Impostazione dello stato dell'istanza allo stato "CONSERVATO"
                DocsPaConsManager.UpdateStatoIstanzaConservazione(this._idConservazione, stato);

                //Scrive il log
                BusinessLogic.UserLog.UserLog.WriteLog(_infoUtente,
                                                       codAzione,
                                                       _idConservazione,
                                                       descrizione,
                                                       DocsPaVO.Logger.CodAzione.Esito.OK);

                // Scrive sul Registro di Conservazione
                DocsPaVO.Conservazione.RegistroCons regCons = new DocsPaVO.Conservazione.RegistroCons();
                regCons.idAmm       = _infoUtente.idAmministrazione;
                regCons.idIstanza   = _idConservazione;
                regCons.tipoOggetto = "I";
                regCons.tipoAzione  = "";
                regCons.userId      = _infoUtente.userId;
                regCons.codAzione   = codAzione;
                regCons.descAzione  = descrizione;
                regCons.esito       = "1";
                RegistroConservazione rc = new RegistroConservazione();
                rc.inserimentoInRegistroCons(regCons, _infoUtente);
            }
            else
            {
                logger.Debug("Si è verificato un errore durante lo spostamento dei file sullo storage remoto. L'istanza torna nello stato Firmata");
                DocsPaConsManager.UpdateStatoIstanzaConservazione(_idConservazione, DocsPaConservazione.StatoIstanza.FIRMATA);
            }

            DocsPaConsManager.UpdateStatoSupportoRemoto(this._idConservazione, 100, (this._statoVerifica.Esito ? StatoSupporto.VERIFICATO : StatoSupporto.DANNEGGIATO));

            logger.Info("UpdateIstanzaConservazione - END");
        }
示例#3
0
        /// <summary>
        ///
        /// </summary>
        protected virtual void IniziaVerificaSupporto()
        {
            logger.Debug("BEGIN - IniziaVerificaSupporto");
            bool   hasError     = false;
            string errorMessage = string.Empty;

            string dctmCServerAddressRoot = string.Empty;

            //Per rendere asincrona l'operazione di spostamento dei file Impostare a true
            //Questa operazione è da fare pure su esitoLeggibilita in Docspaconservazionews.asmx
            bool operazioneAsincrona = true;

            if (operazioneAsincrona)
            {
                FileManager fm = new FileManager();
                fm.createZipFile(this._idConservazione);
                if (!fm.SubmitToRemoteFolder(this._idConservazione))
                {
                    logger.ErrorFormat("Errore inviando i file sullo starge remoto");
                    hasError = true;
                    return;
                }
                else
                {
                    BusinessLogic.UserLog.UserLog.WriteLog(this._infoUtente,
                                                           "CREAZIONE_STORAGE",
                                                           this._idConservazione,
                                                           String.Format("Memorizzazione nel repository del sistema di conservazione dell’istanza  {0}", this._idConservazione),
                                                           DocsPaVO.Logger.CodAzione.Esito.OK);

                    // Modifica scrittura Log e Registro di Conservazione per la scrittura della Creazione Storage
                    DocsPaVO.Conservazione.RegistroCons regCons = new DocsPaVO.Conservazione.RegistroCons();
                    regCons.idAmm       = this._infoUtente.idAmministrazione;
                    regCons.idIstanza   = this._idConservazione;
                    regCons.tipoOggetto = "I";
                    regCons.tipoAzione  = "";
                    regCons.userId      = this._infoUtente.userId;
                    regCons.codAzione   = "CREAZIONE_STORAGE";
                    regCons.descAzione  = "Memorizzazione nel repository del sistema di conservazione dell'istanza " + this._idConservazione;
                    regCons.esito       = "1";
                    RegistroConservazione rc = new RegistroConservazione();
                    rc.inserimentoInRegistroCons(regCons, this._infoUtente);
                }
            }

            try
            {
                // Impostazione del supporto in stato "InVerifica"
                DocsPaConsManager.UpdateStatoSupportoRemoto(this._idConservazione, 0, "I");

                // 1. Reperimento path file chiusura
                XmlDocument xmlFile = new XmlDocument();

                Stream fileChiusura;
                fileChiusura = new MemoryStream(new FileManager().getFileFromStore(this._idConservazione, "\\Chiusura\\file_chiusura.xml", false));
                fileChiusura.Seek(0, SeekOrigin.Begin);

                xmlFile.Load(fileChiusura);

                XmlNodeList nodes = xmlFile.GetElementsByTagName("sincro:File");
                this._statoVerifica.TotaleDocumenti = nodes.Count;

                foreach (XmlNode n in nodes)
                {
                    if (this._interrompi)
                    {
                        throw new ApplicationException(string.Format("Verifica integrità interrotta. Verificati {0} documenti su {1}.", this._statoVerifica.DocumentiVerificati, this._statoVerifica.TotaleDocumenti));
                    }

                    // 2. Estrazione dei documenti conservati da file di chiusura

                    // Reperimento dei metadati dei file conservati dal file di chiusura
                    string idDocumento  = ((XmlNode)n.ChildNodes[0]).InnerText;
                    string pathFile     = ((XmlNode)n.ChildNodes[1]).InnerText;
                    string hashSupporto = ((XmlNode)n.ChildNodes[2]).InnerText;

                    // Caricamento hash da repository
                    string hashDbRepository, hashFileRepository;
                    this.LoadHashDocumento(idDocumento, out hashDbRepository, out hashFileRepository);

                    byte[] content = new FileManager().getFileFromStore(this._idConservazione, pathFile, false);
                    if (content != null)
                    {
                        string hashFileSupporto = this.GetHash256(content);

                        if (hashFileSupporto != hashSupporto)
                        {
                            hashFileSupporto = this.GetHash128(content);

                            if (hashFileSupporto != hashSupporto)
                            {
                                this._statoVerifica.DocumentiNonValidi++;
                            }
                        }
                    }
                    else
                    {
                        this._statoVerifica.DocumentiNonValidi++;
                    }

                    this._statoVerifica.DocumentiVerificati++;

                    // Calcolo della percentuale per lo stato di avanzamento
                    this._statoVerifica.Percentuale = (this._statoVerifica.DocumentiVerificati * 100 / nodes.Count);
                    this._statoVerifica.Descrizione = string.Format("Verifica integrità documento {0} di {1} in corso...", this._statoVerifica.DocumentiVerificati, nodes.Count);

                    // Impostazione del supporto in stato "InVerifica"
                    DocsPaConsManager.UpdateStatoSupportoRemoto(this._idConservazione, this._statoVerifica.Percentuale, "I");
                }
            }
            catch (Exception ex)
            {
                hasError     = true;
                errorMessage = ex.Message;

                logger.ErrorFormat("Errore in VerificaSupportoRemoto.IniziaVerificaSupporto: {0}", ex.ToString());
            }
            finally
            {
                if (hasError)
                {
                    this._statoVerifica.Esito       = false;
                    this._statoVerifica.Percentuale = 0;
                    this._statoVerifica.Descrizione = errorMessage;
                }
                else
                {
                    this._statoVerifica.Esito = (this._statoVerifica.DocumentiVerificati == this._statoVerifica.TotaleDocumenti);

                    if (this._statoVerifica.Esito)
                    {
                        this._statoVerifica.Percentuale = 100;
                        this._statoVerifica.Descrizione = string.Format("Verifica integrità terminata. Verificati {0} su {1} documenti. Supporto valido.", this._statoVerifica.DocumentiVerificati, this._statoVerifica.TotaleDocumenti);
                    }
                    else
                    {
                        this._statoVerifica.Percentuale = 0;
                        this._statoVerifica.Descrizione = string.Format("Verifica integrità terminata. Individuati {0} documenti non validi su {1}. Supporto corrotto.", this._statoVerifica.DocumentiNonValidi, this._statoVerifica.TotaleDocumenti);
                    }
                }
                BusinessLogic.UserLog.UserLog.WriteLog(this._infoUtente,
                                                       "INTEGRITA_STORAGE",
                                                       this._idConservazione,
                                                       String.Format("Esecuzione della verifica di integrità dei documenti dell’istanza {0}", this._idConservazione),
                                                       (this._statoVerifica.Esito ? DocsPaVO.Logger.CodAzione.Esito.OK : DocsPaVO.Logger.CodAzione.Esito.KO));
                DocsPaConsManager consManager = new DocsPaConsManager();
                // Modifica per inserimento in dPA_CONS_VERIFICA
                consManager.RegistraEsitoVerificaSupportoRegistrato(
                    this._infoUtente,
                    this._idConservazione,
                    FetchIdSupporto(),
                    this._statoVerifica.Esito,
                    "100",
                    FetchDataProssimaVerifica(),
                    "Verifica Integrità per chiusura",
                    "C");


                // Modifica scrittura Log e Registro di Conservazione per la scrittura della Creazione Storage
                DocsPaVO.Conservazione.RegistroCons regCons = new DocsPaVO.Conservazione.RegistroCons();
                regCons.idAmm       = this._infoUtente.idAmministrazione;
                regCons.idIstanza   = this._idConservazione;
                regCons.tipoOggetto = "I";
                regCons.tipoAzione  = "";
                regCons.userId      = this._infoUtente.userId;
                regCons.codAzione   = "INTEGRITA_STORAGE";
                regCons.descAzione  = "Esecuzione della verifica di integrità dei documenti istanza " + this._idConservazione;
                regCons.esito       = (this._statoVerifica.Esito ? "1" : "0");
                RegistroConservazione rc = new RegistroConservazione();
                rc.inserimentoInRegistroCons(regCons, this._infoUtente);
                // Aggiornamento dello stato del supporto
                this.UpdateIstanzaConservazione();
            }

            logger.Debug("END - IniziaVerificaSupporto");
        }