WIP
[demos/pact] / pwreset / src / main / java / de / juplo / demos / pwreset / domain / ports / in / PasswordResetRequestProgressDTO.java
diff --git a/pwreset/src/main/java/de/juplo/demos/pwreset/domain/ports/in/PasswordResetRequestProgressDTO.java b/pwreset/src/main/java/de/juplo/demos/pwreset/domain/ports/in/PasswordResetRequestProgressDTO.java
new file mode 100644 (file)
index 0000000..beb91fd
--- /dev/null
@@ -0,0 +1,44 @@
+package de.juplo.demos.pwreset.domain.ports.in;
+
+import de.juplo.demos.pwreset.domain.internal.PasswordResetProgress;
+import de.juplo.demos.pwreset.domain.internal.PasswordResetRequest;
+import de.juplo.demos.pwreset.domain.internal.PasswordResetRequestProgress;
+import lombok.RequiredArgsConstructor;
+import lombok.Value;
+
+import java.time.ZonedDateTime;
+import java.util.Optional;
+import java.util.UUID;
+
+import static de.juplo.demos.pwreset.domain.internal.PasswordResetProgress.Status.*;
+
+
+@RequiredArgsConstructor
+@Value
+public class PasswordResetRequestProgressDTO
+{
+  private final UUID requestId;
+  private final boolean accepted;
+  private final String message;
+  private final Optional<ZonedDateTime> created;
+  private final Optional<ZonedDateTime> confirmed;
+  private final Optional<ZonedDateTime> accomplished;
+
+  public static PasswordResetRequestProgressDTO from(
+      PasswordResetRequest request,
+      PasswordResetProgress progress)
+  {
+    return
+        new PasswordResetRequestProgressDTO(
+            request.getId(),
+            progress.getStatus() != CONFIRMATION_DENIED,
+            progress.getMessage(),
+            Optional.of(request.getCreated()),
+            progress.getStatus() == CONFIRMATION_DENIED
+                ? Optional.empty()
+                : Optional.of(request.getConfirmed()),
+            progress.getStatus() == ACCOMPLISHED
+                ? Optional.empty()
+                : Optional.of(request.getAccomplihed()));
+  }
+}