private async Task <DocumentService.Document> InsertDocument(ModelDocument.ArchiveDocument documentModel, KeyValuePair <Archive, List <DocumentService.Attribute> > archive) { _logger.WriteDebug(new LogMessage($"Inserting {documentModel?.Name} into archive {documentModel?.Archive} with {documentModel?.ContentStream?.Length} bytes"), LogCategories); DocumentService.Document document = new DocumentService.Document { Content = new Content() { Blob = documentModel.ContentStream }, Name = documentModel.Name, Archive = Archives.Single(f => f.Name.Equals(documentModel.Archive, StringComparison.InvariantCultureIgnoreCase)), AttributeValues = new List <DocumentService.AttributeValue>() }; document.AttributeValues.Add(new DocumentService.AttributeValue() { Value = documentModel.Name, Attribute = archive.Value.Single(f => f.Name.Equals(_biblos_attribute_filename, StringComparison.InvariantCultureIgnoreCase)) }); document.AttributeValues.Add(new DocumentService.AttributeValue() { Value = documentModel.Name, Attribute = archive.Value.Single(f => f.Name.Equals(_biblos_attribute_signature, StringComparison.InvariantCultureIgnoreCase)) }); document = await _documentsClient.AddDocumentToChainAsync(document, documentModel.IdChain, ContentFormat.Binary); _logger.WriteInfo(new LogMessage($"Document {document.IdDocument} has been successfully created in archive {archive.Key.Name}"), LogCategories); return(document); }
public async Task <ModelDocument.ArchiveDocument> InsertDocumentAsync(ModelDocument.ArchiveDocument documentModel) { return(await DocumentHelper.TryCatchWithLogger(async() => { DocumentService.Document document = new DocumentService.Document(); string archiveName = documentModel.Archive; KeyValuePair <Archive, List <DocumentService.Attribute> > archive = await GetArchive(archiveName); document.Archive = archive.Key; document.Name = documentModel.Name; document = await _documentsClient.InsertDocumentChainAsync(document); _logger.WriteInfo(new LogMessage($"Document chain {document.IdDocument} has been successfully created in archive {archive.Key.Name}"), LogCategories); documentModel.IdLegacyChain = document.IdBiblos.Value; documentModel.IdChain = document.IdDocument; document = await InsertDocument(documentModel, archive); documentModel.IdDocument = document.IdDocument; documentModel.Size = document.Size; documentModel.Version = document.Version; return documentModel; }, _logger, LogCategories)); }
public async Task <ICollection <ModelDocument.ArchiveDocument> > InsertDocumentsAsync(ICollection <ModelDocument.ArchiveDocument> documents, Guid?idChain = null) { return(await DocumentHelper.TryCatchWithLogger(async() => { if (!documents.Any()) { return documents; } DocumentService.Document documentChain; DocumentService.Document document = null; string archiveName = documents.First().Archive; KeyValuePair <Archive, List <DocumentService.Attribute> > archive = await GetArchive(archiveName); if (!idChain.HasValue) { documentChain = new DocumentService.Document { Archive = archive.Key }; documentChain = await _documentsClient.InsertDocumentChainAsync(documentChain); _logger.WriteInfo(new LogMessage($"Document chain {documentChain.IdDocument} has been successfully created in archive {archive.Key.Name}"), LogCategories); } else { documentChain = await _documentsClient.GetDocumentInfoByIdAsync(idChain.Value); } foreach (ModelDocument.ArchiveDocument documentModel in documents) { documentModel.IdLegacyChain = documentChain.IdBiblos.Value; documentModel.IdChain = documentChain.IdDocument; document = await InsertDocument(documentModel, archive); documentModel.IdDocument = document.IdDocument; documentModel.Size = document.Size; documentModel.Version = document.Version; } return documents; }, _logger, LogCategories)); }