WIP
[demos/pact] / pwreset / src / main / java / de / juplo / demos / pwreset / domain / ports / in / PasswordResetRequestProgressDTO.java
1 package de.juplo.demos.pwreset.domain.ports.in;
2
3 import de.juplo.demos.pwreset.domain.internal.PasswordResetProgress;
4 import de.juplo.demos.pwreset.domain.internal.PasswordResetRequest;
5 import de.juplo.demos.pwreset.domain.internal.PasswordResetRequestProgress;
6 import lombok.RequiredArgsConstructor;
7 import lombok.Value;
8
9 import java.time.ZonedDateTime;
10 import java.util.Optional;
11 import java.util.UUID;
12
13 import static de.juplo.demos.pwreset.domain.internal.PasswordResetProgress.Status.*;
14
15
16 @RequiredArgsConstructor
17 @Value
18 public class PasswordResetRequestProgressDTO
19 {
20   private final UUID requestId;
21   private final boolean accepted;
22   private final String message;
23   private final Optional<ZonedDateTime> created;
24   private final Optional<ZonedDateTime> confirmed;
25   private final Optional<ZonedDateTime> accomplished;
26
27   public static PasswordResetRequestProgressDTO from(
28       PasswordResetRequest request,
29       PasswordResetProgress progress)
30   {
31     return
32         new PasswordResetRequestProgressDTO(
33             request.getId(),
34             progress.getStatus() != CONFIRMATION_DENIED,
35             progress.getMessage(),
36             Optional.of(request.getCreated()),
37             progress.getStatus() == CONFIRMATION_DENIED
38                 ? Optional.empty()
39                 : Optional.of(request.getConfirmed()),
40             progress.getStatus() == ACCOMPLISHED
41                 ? Optional.empty()
42                 : Optional.of(request.getAccomplihed()));
43   }
44 }