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; } }
/// <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); }