public async Task <GetResponse <MemoryStream> > MergeDocumentAsync(int clientId, DocumentTypes documentType, IList <MergeDocumentValue> values) { var response = new GetResponse <MemoryStream>(); try { var repositoryResponse = await _documentRepository.GetByTypeAsync(clientId, documentType); if (repositoryResponse.IsSuccessful) { var mergeDocument = repositoryResponse.Content; var fieldValues = values .ToDictionary(value => value.Key, value => new MergeDocumentField { Value = value.Value, FieldType = value.Type }); using (var ms = new MemoryStream(mergeDocument.Data)) { var providerResponse = await _documentProvider.MergeDocumentAsync(ms, fieldValues); if (providerResponse.IsSuccessful) { response.Content = providerResponse.Content; } } } } catch (Exception e) { _logManager.LogError(e, "DocumentApplicationService.GenerateDocumentAsync"); response.AddError(e); } return(response); }