package com.airlock.iam.admin.domain.model.token.airlock2fa;

import com.airlock.iam.factor.domain.model.airlock2fa.activation.Airlock2FAActivationLetter;
import com.airlock.iam.factor.domain.model.airlock2fa.activation.Airlock2FAActivationLetterId;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.time.Instant;
import java.util.Optional;
import lombok.NonNull;

public final class Airlock2FAActivationLetterWithoutConfidentialDataViewer implements Airlock2FAActivationLetterViewer {
   @NonNull
   private final Airlock2FAActivationLetter activationLetter;

   @Override
   public Airlock2FAActivationLetterId letterId() {
      return this.activationLetter.getId();
   }

   @Override
   public Instant expires() {
      return this.activationLetter.getEnrollment().getExpires();
   }

   @Override
   public Instant created() {
      return this.activationLetter.getEnrollment().getCreated();
   }

   @Override
   public String shortenedActivationCode() {
      return this.activationLetter.getEnrollment().getActivationCode().getShortenedActivationCode();
   }

   @Override
   public Optional<Airlock2FAConfidentialActivation> retrieveConfidentialActivation() {
      return Optional.empty();
   }

   @SuppressFBWarnings(justification = "generated code")
   public Airlock2FAActivationLetterWithoutConfidentialDataViewer(@NonNull Airlock2FAActivationLetter activationLetter) {
      if (activationLetter == null) {
         throw new NullPointerException("activationLetter is marked non-null but is null");
      }

      this.activationLetter = activationLetter;
   }
}
