From 87c3184f5fb1afce0564d46cf6cb78288d77318d Mon Sep 17 00:00:00 2001
From: Klaus Fischer <klaus.fischer@eloware.com>
Date: Thu, 5 Jan 2023 15:10:34 +0100
Subject: [PATCH] Need to add a new contructor to Attachment class

---
 E2ETest/StraightForwardTest.cs  |  6 +++++-
 FitConnect/SubmissionBuilder.cs | 23 ++++++++++++++++++++++-
 2 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/E2ETest/StraightForwardTest.cs b/E2ETest/StraightForwardTest.cs
index 87cfd66c..82b0511d 100644
--- a/E2ETest/StraightForwardTest.cs
+++ b/E2ETest/StraightForwardTest.cs
@@ -20,6 +20,10 @@ public class StraightForwardTest : EndToEndTestBase {
             .WithJsonData(@"{""data"":""value""}")
             .WithAttachments(new Attachment("Test.pdf", "Attachment #1"),
                 new Attachment("Test.pdf", "Attachment #2"))
+            .WithAttachments(new Attachment("Test.pdf", "Attachment #3"))
+            // .WithAttachments("TestForm.pdf", "StreamReader",
+            //     System.Net.Mime.MediaTypeNames.Application.Pdf,
+            //     new FileStream("Test.pdf", FileMode.Open, FileAccess.Read))
             .Build();
 
         var submission = Sender.SendAsync(outgoing).Result;
@@ -86,7 +90,7 @@ public class StraightForwardTest : EndToEndTestBase {
         attachments.First().Filename.Should().Be("Test.pdf");
         attachments.TrueForAll(a => a.Description?.StartsWith("Attachment #") ?? false).Should()
             .BeTrue();
-
+        attachments.Count.Should().Be(3);
         subscriberWithSubmission.AcceptSubmissionAsync().Wait();
     }
 
diff --git a/FitConnect/SubmissionBuilder.cs b/FitConnect/SubmissionBuilder.cs
index 77bfd494..58ba35bf 100644
--- a/FitConnect/SubmissionBuilder.cs
+++ b/FitConnect/SubmissionBuilder.cs
@@ -19,8 +19,29 @@ public class SubmissionBuilder : ISubmissionWithDestination,
         return WithAttachments(attachments.ToArray());
     }
 
+    public ISubmissionWithData WithAttachments(string fileName, string description, string mimeType,
+        FileStream fileStream) {
+        byte[] buffer = null;
+        using (fileStream) {
+            buffer = new byte[fileStream.Length];
+            fileStream.Read(buffer, 0, (int)fileStream.Length);
+        }
+
+        var attachment = new Attachment(fileName, description, mimeType) {
+            Content = buffer
+        };
+
+        return WithAttachments(attachment);
+    }
+
     public ISubmissionWithData WithAttachments(params Attachment[] attachments) {
-        _submissionToSend.Attachments = attachments;
+        _submissionToSend.Attachments ??= new Attachment[] { };
+
+        foreach (var attachment in attachments) {
+            _submissionToSend.Attachments =
+                _submissionToSend.Attachments.Append(attachment).ToArray();
+        }
+
         return this;
     }
 
-- 
GitLab