package com.airlock.iam.common.domain.model.mtan;

import com.airlock.iam.common.domain.service.phone.PhoneNumberService;
import com.airlock.iam.core.domain.model.token.TokenUsage;
import com.airlock.iam.core.misc.impl.token.MtanItem;
import com.google.common.base.Preconditions;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import jakarta.annotation.Nullable;
import java.util.Optional;

public final class MtanItemView {
   private final MtanItem mtanItem;
   @Nullable
   private final String maskedPhoneNumber;

   public static MtanItemView of(MtanItem mtanItem, PhoneNumberService phoneNumberService) {
      return new MtanItemView(mtanItem, phoneNumberService.maskPhoneNumber(mtanItem.getMobilePhoneNumber()));
   }

   private MtanItemView(MtanItem delegate, @Nullable String maskedPhoneNumber) {
      this.mtanItem = (MtanItem)Preconditions.checkNotNull(delegate);
      this.maskedPhoneNumber = maskedPhoneNumber;
   }

   public String getPhoneNumber() {
      return this.maskedPhoneNumber;
   }

   public String getId() {
      return this.mtanItem.getId();
   }

   public Boolean getSendSmsAsFlash() {
      return this.mtanItem.getSendSmsAsFlash();
   }

   public String getLabel() {
      return this.mtanItem.getLabel();
   }

   public boolean isActive() {
      return this.mtanItem.isActive();
   }

   public Optional<TokenUsage> getTokenUsage() {
      return this.mtanItem.getTokenUsage();
   }

   @SuppressFBWarnings(justification = "generated code")
   public MtanItem getMtanItem() {
      return this.mtanItem;
   }
}
