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

import com.airlock.iam.base.api.domain.model.email.EmailAddress;
import com.airlock.iam.base.misc.log.LogUtil;
import com.airlock.iam.core.application.configuration.contextdata.StringContextDataItemNameConfig;
import com.airlock.iam.elog.api.ELogger;
import com.airlock.iam.elog.api.ELoggerFactory;
import java.util.Map;
import java.util.Optional;

public final class EmailAddressResolver {
   private static final ELogger LOG = ELoggerFactory.getLogger(EmailAddressResolver.class);

   private EmailAddressResolver() {
   }

   public static Optional<EmailAddress> resolveEmailAddress(StringContextDataItemNameConfig emailItem, Map<String, Object> userContextData, String username) {
      String address = (String)userContextData.get(emailItem.getContextDataName());
      if (address == null) {
         LOG.info("No email address found for user " + LogUtil.quote(username));
         return Optional.empty();
      } else {
         return EmailAddress.emailAddress(address);
      }
   }
}
