package com.airlock.iam.publicselfservice.domain.service;

import com.airlock.iam.common.api.domain.model.otp.Otp;
import com.airlock.iam.common.domain.service.sms.MtanSmsFactory;
import com.airlock.iam.common.domain.service.sms.SmsService;
import com.airlock.iam.core.misc.impl.token.MtanItem;
import com.airlock.iam.flow.shared.api.domain.model.message.MtanMessageProvider;
import jakarta.inject.Inject;
import jakarta.inject.Provider;

public final class SmsIdentityVerificationServiceImpl implements SmsIdentityVerificationService {
   private final SmsService smsService;
   private final MtanSmsFactory mtanSmsFactory;
   private final Provider<MtanMessageProvider> messageProvider;

   @Inject
   public SmsIdentityVerificationServiceImpl(SmsService smsService, MtanSmsFactory mtanSmsFactory, Provider<MtanMessageProvider> messageProvider) {
      this.smsService = smsService;
      this.mtanSmsFactory = mtanSmsFactory;
      this.messageProvider = messageProvider;
   }

   @Override
   public void sendSms(MtanItem mtanItem, Otp otp) {
      String message = ((MtanMessageProvider)this.messageProvider.get()).generateMtanMessage();
      this.smsService.send(this.mtanSmsFactory.createSmsFor(otp, mtanItem, message));
   }
}
