Ejemplo n.º 1
0
        private static void CheckPreservationResponse(VerificaStatoConservazioneDocumentoResponse response, Document documentInfo)
        {
            response.Eseguito = true;

            var listaMetadatoItem = new List <MetadatoItem>();

            foreach (var attributeValue in documentInfo.AttributeValues)
            {
                var proprietaDocumento = new MetadatoItem
                {
                    Name      = attributeValue.Attribute.Name,
                    Posizione = attributeValue.Attribute.ConservationPosition,
                    Value     = attributeValue.Value,
                    Tipo      = attributeValue.Attribute.AttributeType
                };

                listaMetadatoItem.Add(proprietaDocumento);
            }
            response.StatoDocumento.ProprietaDocumento = new List <MetadatoItem>();
            response.StatoDocumento.ProprietaDocumento.AddRange(listaMetadatoItem);
            response.Conservato = documentInfo.IdPreservation.HasValue;
            if (documentInfo.Preservation != null)
            {
                if (documentInfo.Preservation.CloseDate.HasValue)
                {
                    response.StatoDocumento.CodiceStato = StatoConservazione.STATODOC_ARCHIVIATO;
                }
                else
                {
                    response.StatoDocumento.CodiceStato = StatoConservazione.STATODOC_INCORSO;
                }
            }
            else
            {
                response.StatoDocumento.CodiceStato = response.Conservato ? StatoConservazione.STATODOC_ARCHIVIATO : StatoConservazione.STATODOC_NONARCHIVIATO;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Esegue una verifica per controllare se il documento richiesto è stato conservato o meno, dato l'identificativo del documento (campo "IdDocumento" dell'oggetto Request).
        /// </summary>
        /// <remarks>La ricerca viene effettuata per ID, non per CHIAVE.</remarks>
        /// <param name="request">
        /// Proprietà obbligatorie per una corretta richiesta:
        ///  - IdDocumento impostato al GUID identificativo del documento archiviato in Biblos
        ///  - Token di accesso valido e non scaduto. Si intendono i seguenti campi valorizzati dell'oggetto Request: IdClient, IdCliente, TipoDocumento, Token.
        /// </param>
        /// <returns>
        /// Ritorna il flag "Conservato" dell'oggetto Response impostato a <code>TRUE</code> se il documento è conservato, <code>FALSE</code> altrimenti.
        /// Inoltre vengono ritornati i metadati attualmente gestiti del documento, nel campo "StatoDocumento.ProprietaDocumento" dell'oggetto Response, in formato lista di oggetti
        /// di tipo "MetadatoItem".
        /// </returns>
        /// <example>
        /// try {
        ///  var request = new VerificaStatoConservazioneDocumentoRequest
        ///     {
        ///         IdDocumento = new Guid("DBBB7CEB-5CCC-425D-AE48-7F4140F00B5B"),
        ///         IdClient = "TeraSoftware",
        ///         IdCliente = "TeraSoftware",
        ///         TipoDocumento = "DDT_ATH_TEST2",
        ///         Token = DocumentoFacade.Login(new LoginRequest { UserName = "******", Password = "******", IdCliente = "TeraSoftware" }).TokenInfo.Token,
        ///     };
        ///
        ///  var response = DocumentoFacade.VerificaStatoConservazioneDocumento(request);
        ///
        ///  if(response.CodiceEsito != CodiceErrore.NessunErrore) {
        ///     throw new Exception(response.CodiceEsito.ToString());
        ///  }
        ///
        ///  var conservato = response.Conservato;
        ///  var metadati = (response.StatoDocumento != null) ? response.StatoDocumento.ProprietaDocumento : null;
        ///
        /// } catch(Exception ex) {
        ///     //TODO: gestione eccezioni (es.: loggare il messaggio d'errore).
        ///     throw; //Rilancia l'eccezione.
        /// }
        /// </example>
        public static VerificaStatoConservazioneDocumentoResponse VerificaStatoConservazioneDocumento(VerificaStatoConservazioneDocumentoRequest request)
        {
            var response = new VerificaStatoConservazioneDocumentoResponse {
                StatoDocumento = new StatoDocumento()
            };

            try
            {
                response.TokenInfo = Helpers.ValidaToken(request);
                if (response.TokenInfo == null)
                {
                    response.CodiceEsito = CodiceErrore.TokenNonValidoOScaduto;
                }
                else
                {
                    var checkRequestResult = request.CheckRequest(response);
                    if (checkRequestResult != CodiceErrore.NessunErrore)
                    {
                        response.CodiceEsito = checkRequestResult;
                        response.Eseguito    = false;
                    }
                    else
                    {
                        //Recupero Archive
                        var idArchive = Helpers.GetArchive(request);
                        if (!idArchive.HasValue)
                        {
                            response.CodiceEsito = CodiceErrore.ArchivioNonDefinito;
                            response.Eseguito    = false;
                        }
                        else
                        {
                            using (var client = new DocumentsClient())
                            {
                                try
                                {
                                    var documentInfo = client.GetDocumentInfoById(request.IdDocumento);
                                    CheckPreservationResponse(response, documentInfo);
                                }
                                catch (FaultException <BiblosDsException> faultEx)
                                {
                                    logger.Error(faultEx);
                                    response.Eseguito = false;
                                    ParseBiblosDSFaultException(response, faultEx);
                                }
                                catch (Exception ex)
                                {
                                    logger.Error(ex);
                                    response.Eseguito        = false;
                                    response.CodiceEsito     = CodiceErrore.ErroreGenerico;
                                    response.MessaggioErrore = ex.ToString();
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                response.Eseguito        = false;
                response.CodiceEsito     = CodiceErrore.ErroreGenerico;
                response.MessaggioErrore = ex.ToString();
            }
            response.CheckResponse();
            return(response);
        }