From 1279382f6c6363329e03e7ef021e9dc60917e7b4 Mon Sep 17 00:00:00 2001
From: Klaus Fischer <klaus.fischer@eloware.com>
Date: Thu, 9 Jun 2022 07:20:18 +0200
Subject: [PATCH] Added SubmissionService and DTOs

---
 FitConnect/Models/Api/Models/CallbackDto.cs   |  8 ++++++
 .../Models/Api/Models/CreateCallbackDto.cs    | 11 ++++++++
 .../Models/Api/Models/CreateSubmission.cs     | 22 +++++++++++++++
 .../Models/Api/Models/ServiceTypeDto.cs       | 14 ++++++++++
 .../Models/Api/Models/SubmissionCreatedDto.cs | 14 ++++++++++
 .../Models/Api/Models/SubmissionReducedDto.cs | 28 +++++++++++++++++++
 .../Models/Api/Models/SubmitSubmissionDto.cs  | 11 ++++++++
 .../Models/Api/Services/SubmissionService.cs  | 24 ++++++++++++++++
 FitConnect/Models/Area.cs                     |  2 +-
 FitConnect/Models/AreaResponse.cs             |  2 +-
 FitConnect/Routing.cs                         |  1 +
 FitConnect/Sender.cs                          |  6 ++++
 12 files changed, 141 insertions(+), 2 deletions(-)
 create mode 100644 FitConnect/Models/Api/Models/CallbackDto.cs
 create mode 100644 FitConnect/Models/Api/Models/CreateCallbackDto.cs
 create mode 100644 FitConnect/Models/Api/Models/CreateSubmission.cs
 create mode 100644 FitConnect/Models/Api/Models/ServiceTypeDto.cs
 create mode 100644 FitConnect/Models/Api/Models/SubmissionCreatedDto.cs
 create mode 100644 FitConnect/Models/Api/Models/SubmissionReducedDto.cs
 create mode 100644 FitConnect/Models/Api/Models/SubmitSubmissionDto.cs
 create mode 100644 FitConnect/Models/Api/Services/SubmissionService.cs

diff --git a/FitConnect/Models/Api/Models/CallbackDto.cs b/FitConnect/Models/Api/Models/CallbackDto.cs
new file mode 100644
index 00000000..379d4d7c
--- /dev/null
+++ b/FitConnect/Models/Api/Models/CallbackDto.cs
@@ -0,0 +1,8 @@
+using System.Text.Json.Serialization;
+
+namespace FitConnect.Models.Api.Models;
+
+internal class CallbackDto {
+    [JsonPropertyName("url")]
+    public string Url { get; set; }
+}
\ No newline at end of file
diff --git a/FitConnect/Models/Api/Models/CreateCallbackDto.cs b/FitConnect/Models/Api/Models/CreateCallbackDto.cs
new file mode 100644
index 00000000..13fc9392
--- /dev/null
+++ b/FitConnect/Models/Api/Models/CreateCallbackDto.cs
@@ -0,0 +1,11 @@
+using System.Text.Json.Serialization;
+
+namespace FitConnect.Models.Api.Models;
+
+internal class CreateCallbackDto {
+    [JsonPropertyName("url")]
+    public string Url { get; set; }
+
+    [JsonPropertyName("secret")]
+    public string Secret { get; set; }
+}
\ No newline at end of file
diff --git a/FitConnect/Models/Api/Models/CreateSubmission.cs b/FitConnect/Models/Api/Models/CreateSubmission.cs
new file mode 100644
index 00000000..4faa1d3d
--- /dev/null
+++ b/FitConnect/Models/Api/Models/CreateSubmission.cs
@@ -0,0 +1,22 @@
+using System.Text.Json.Serialization;
+
+namespace FitConnect.Models.Api.Models;
+
+internal class CreateSubmission {
+    [JsonPropertyName("destinationId")]
+    private string destinationId;
+
+
+    [JsonPropertyName("announcedAttachments")]
+    private List<string> announcedAttachments;
+
+    [JsonPropertyName("caseId")]
+    private string caseId;
+
+
+    [JsonPropertyName("serviceType")]
+    private ServiceTypeDto _serviceTypeDto;
+
+    [JsonPropertyName("callback")]
+    private CreateCallbackDto _callbackDto;
+}
\ No newline at end of file
diff --git a/FitConnect/Models/Api/Models/ServiceTypeDto.cs b/FitConnect/Models/Api/Models/ServiceTypeDto.cs
new file mode 100644
index 00000000..7da1aed2
--- /dev/null
+++ b/FitConnect/Models/Api/Models/ServiceTypeDto.cs
@@ -0,0 +1,14 @@
+using System.Text.Json.Serialization;
+
+namespace FitConnect.Models.Api.Models;
+
+internal class ServiceTypeDto {
+    [JsonPropertyName("name")]
+    public string Name { get; set; }
+
+    [JsonPropertyName("description")]
+    public string Description { get; set; }
+
+    [JsonPropertyName("identifier")]
+    public string Identifier { get; set; }
+}
\ No newline at end of file
diff --git a/FitConnect/Models/Api/Models/SubmissionCreatedDto.cs b/FitConnect/Models/Api/Models/SubmissionCreatedDto.cs
new file mode 100644
index 00000000..95f03c94
--- /dev/null
+++ b/FitConnect/Models/Api/Models/SubmissionCreatedDto.cs
@@ -0,0 +1,14 @@
+using System.Text.Json.Serialization;
+
+namespace FitConnect.Models.Api.Models;
+
+internal class SubmissionCreatedDto {
+    [JsonPropertyName("destinationId")]
+    public string DestinationId { get; set; }
+
+    [JsonPropertyName("submissionId")]
+    public string SubmissionId { get; set; }
+
+    [JsonPropertyName("caseId")]
+    public string CaseId { get; set; }
+}
\ No newline at end of file
diff --git a/FitConnect/Models/Api/Models/SubmissionReducedDto.cs b/FitConnect/Models/Api/Models/SubmissionReducedDto.cs
new file mode 100644
index 00000000..4c7de5e2
--- /dev/null
+++ b/FitConnect/Models/Api/Models/SubmissionReducedDto.cs
@@ -0,0 +1,28 @@
+using System.Text.Json.Serialization;
+
+namespace FitConnect.Models.Api.Models;
+
+public class SubmissionReducedDto {
+    [JsonPropertyName("destinationId")]
+    private string DestinationId;
+
+
+    [JsonPropertyName("submissionId")]
+    private string SubmissionId;
+
+
+    [JsonPropertyName("caseId")]
+    private string CaseId;
+
+
+    [JsonPropertyName("attachments")]
+    private List<string> Attachments;
+
+
+    [JsonPropertyName("serviceType")]
+    private ServiceTypeDto _serviceTypeDto;
+
+
+    [JsonPropertyName("callback")]
+    private CallbackDto Callback;
+}
\ No newline at end of file
diff --git a/FitConnect/Models/Api/Models/SubmitSubmissionDto.cs b/FitConnect/Models/Api/Models/SubmitSubmissionDto.cs
new file mode 100644
index 00000000..c8b7ca65
--- /dev/null
+++ b/FitConnect/Models/Api/Models/SubmitSubmissionDto.cs
@@ -0,0 +1,11 @@
+using System.Text.Json.Serialization;
+
+namespace FitConnect.Models.Api.Models;
+
+internal class SubmitSubmissionDto {
+    [JsonPropertyName("encryptedMetadata")]
+    private string EncryptedMetadata;
+
+    [JsonPropertyName("encryptedData")]
+    private string EncryptedData;
+}
\ No newline at end of file
diff --git a/FitConnect/Models/Api/Services/SubmissionService.cs b/FitConnect/Models/Api/Services/SubmissionService.cs
new file mode 100644
index 00000000..1bd90c40
--- /dev/null
+++ b/FitConnect/Models/Api/Services/SubmissionService.cs
@@ -0,0 +1,24 @@
+using FitConnect.Models.Api.Models;
+
+namespace FitConnect.Models.Api.Services;
+
+public class SubmissionService {
+    internal SubmissionCreatedDto CreateSubmission(CreateSubmission submission) {
+        // @PostMapping("/submissions")
+        throw new NotImplementedException();
+    }
+
+    internal bool AddSubmissionAttachment(string submissionId, string attachmentId,
+        string encryptedAttachmentContent) {
+        // @PutMapping(value = "/submissions/{submissionId}/attachments/{attachmentId}", consumes = "application/jose")
+ 
+        throw new NotImplementedException();
+    }
+
+    internal SubmissionReducedDto SubmitSubmission(string submissionId,
+        SubmitSubmissionDto submitSubmission) {
+       //@PutMapping(value = "/submissions/{submissionId}", consumes = "application/json") 
+       throw new NotImplementedException();
+    }
+
+}
diff --git a/FitConnect/Models/Area.cs b/FitConnect/Models/Area.cs
index 5995b04d..23b1e62e 100644
--- a/FitConnect/Models/Area.cs
+++ b/FitConnect/Models/Area.cs
@@ -1,6 +1,6 @@
 using System.Text.Json.Serialization;
 
-namespace FitConnect;
+namespace FitConnect.Models;
 
 public class Area {
     [JsonPropertyName("id")]
diff --git a/FitConnect/Models/AreaResponse.cs b/FitConnect/Models/AreaResponse.cs
index 1bc37016..34db13d1 100644
--- a/FitConnect/Models/AreaResponse.cs
+++ b/FitConnect/Models/AreaResponse.cs
@@ -1,6 +1,6 @@
 using System.Text.Json.Serialization;
 
-namespace FitConnect;
+namespace FitConnect.Models;
 
 public class AreaResponse {
     [JsonPropertyName("count")]
diff --git a/FitConnect/Routing.cs b/FitConnect/Routing.cs
index 4a5a2fab..377dec13 100644
--- a/FitConnect/Routing.cs
+++ b/FitConnect/Routing.cs
@@ -1,5 +1,6 @@
 using System.Security.Cryptography.X509Certificates;
 using FitConnect.BaseClasses;
+using FitConnect.Models;
 using Microsoft.Extensions.Logging;
 
 namespace FitConnect;
diff --git a/FitConnect/Sender.cs b/FitConnect/Sender.cs
index 4eec48d1..2763b2ac 100644
--- a/FitConnect/Sender.cs
+++ b/FitConnect/Sender.cs
@@ -72,4 +72,10 @@ public class Sender : FunctionalBaseClass {
     public async Task<string> CreateMetadataAsync(string data, byte[] attachment) {
         throw new NotImplementedException();
     }
+    
+    #region Submission API
+    
+
+        
+        #endregion
 }
\ No newline at end of file
-- 
GitLab