package com.airlock.iam.common.infrastructure.event;

import com.airlock.iam.base.api.domain.model.event.DomainEvent;
import com.airlock.iam.base.api.domain.model.exception.ServiceConfigurationException;
import com.airlock.iam.base.api.domain.model.plugin.LogicForConfig;
import com.airlock.iam.common.api.domain.model.event.EventWithOldPhoneNumber;
import com.airlock.iam.common.api.domain.model.phonenumber.PhoneNumber;
import com.airlock.iam.common.application.configuration.sms.OldPhoneNumberProviderConfig;
import com.airlock.iam.common.domain.service.event.PhoneNumbersProvider;
import jakarta.inject.Inject;
import java.util.Collection;
import java.util.List;

@LogicForConfig(OldPhoneNumberProviderConfig.class)
public final class OldPhoneNumberProviderImpl implements PhoneNumbersProvider {
   @Override
   public Collection<PhoneNumber> phoneNumbers(DomainEvent event) {
      if (event instanceof EventWithOldPhoneNumber eventWithOldPhoneNumber) {
         return List.of(eventWithOldPhoneNumber.oldPhoneNumber());
      } else {
         throw new ServiceConfigurationException("The Old Phone Number Provider supports only events with an old phone number.");
      }
   }
}
