diff --git a/src/main/java/mx/gob/jumapacelaya/api/RedmineClient.java b/src/main/java/mx/gob/jumapacelaya/api/RedmineClient.java index 9497f9a..c54b39c 100644 --- a/src/main/java/mx/gob/jumapacelaya/api/RedmineClient.java +++ b/src/main/java/mx/gob/jumapacelaya/api/RedmineClient.java @@ -2,6 +2,7 @@ package mx.gob.jumapacelaya.api; import com.nimbusds.jose.shaded.gson.*; import com.vaadin.flow.server.VaadinService; +import mx.gob.jumapacelaya.models.JsonOrder; import mx.gob.jumapacelaya.models.RedmineUser; import mx.gob.jumapacelaya.models.Ticket; import org.springframework.beans.factory.annotation.Value; @@ -276,23 +277,21 @@ public class RedmineClient { } public String createIssue(Map issueDetails, String fileUploadToken, String fileName, String contentType, String apiKey) { - Map payload = new HashMap<>(); - Map issue = new HashMap<>(issueDetails); - + List uploads = new ArrayList<>(); + if (fileUploadToken != null) { + uploads.add(new JsonOrder.FileUpload(fileUploadToken, fileName, contentType)); + } - if (fileUploadToken != null) { - List> uploads = new ArrayList<>(); - Map fileTokenMap = new HashMap<>(); - fileTokenMap.put("filename", fileName); - fileTokenMap.put("token", fileUploadToken); - fileTokenMap.put("content_type", contentType); - uploads.add(fileTokenMap); - payload.put("uploads", uploads); - } + JsonOrder.IssueDetails issueDetail = new JsonOrder.IssueDetails( + issueDetails.get("project_id"), + issueDetails.get("subject"), + issueDetails.get("description"), + uploads + ); - payload.put("issue", issueDetails); + JsonOrder order = new JsonOrder(issueDetail); - String jsonPayload = GSON.toJson(payload); + String jsonPayload = GSON.toJson(order); try { RedmineUser user = (RedmineUser) VaadinService.getCurrentRequest().getWrappedSession().getAttribute("myaccount"); diff --git a/src/main/java/mx/gob/jumapacelaya/models/JsonOrder.java b/src/main/java/mx/gob/jumapacelaya/models/JsonOrder.java new file mode 100644 index 0000000..8f6e104 --- /dev/null +++ b/src/main/java/mx/gob/jumapacelaya/models/JsonOrder.java @@ -0,0 +1,47 @@ +package mx.gob.jumapacelaya.models; + +import com.nimbusds.jose.shaded.gson.annotations.SerializedName; +import java.util.List; + +public class JsonOrder { + + @SerializedName("issue") + private IssueDetails issue; + + public JsonOrder(IssueDetails issue) { + this.issue = issue; + } + + public static class IssueDetails { + @SerializedName("project_id") + private String projectId; + @SerializedName("subject") + private String subject; + @SerializedName("description") + private String description; + @SerializedName("uploads") + private List uploads; + + public IssueDetails(String projectId, String subject, String description, List uploads) { + this.projectId = projectId; + this.subject = subject; + this.description = description; + this.uploads = uploads; + } + } + + public static class FileUpload { + @SerializedName("token") + private String token; + @SerializedName("filename") + private String filename; + @SerializedName("content_type") + private String contentType; + + public FileUpload(String token, String filename, String contentType) { + this.token = token; + this.filename = filename; + this.contentType = contentType; + } + } +}