package com.airlock.iam.flow.shared.domain.service.mtan;

import com.airlock.iam.common.api.domain.model.otp.Otp;
import com.airlock.iam.common.domain.model.sms.Sms;
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;

public final class MtanVerificationOtpServiceImpl implements MtanVerificationOtpService {
   private final MtanMessageProvider messageProvider;
   private final MtanSmsFactory smsFactory;
   private final SmsService smsService;

   @Inject
   public MtanVerificationOtpServiceImpl(MtanMessageProvider messageProvider, MtanSmsFactory smsFactory, SmsService smsService) {
      this.messageProvider = messageProvider;
      this.smsFactory = smsFactory;
      this.smsService = smsService;
   }

   @Override
   public void sendVerificationSms(Otp otp, MtanItem mtanItem) {
      String message = this.messageProvider.generateMtanMessage();
      Sms sms = this.smsFactory.createSmsFor(otp, mtanItem, message);
      this.smsService.send(sms);
   }
}
