Exemplo n.º 1
0
        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);
        }