package user import ( "context" "time" "github.com/SamuelTariku/FortuneBet-Backend/internal/domain" "golang.org/x/crypto/bcrypt" ) func (s *Service) SendOtp(ctx context.Context, sentTo string, otpFor domain.OtpFor, medium domain.OtpMedium) error { otpCode := "123456" // Generate OTP code otp := domain.Otp{ SentTo: sentTo, Medium: medium, For: otpFor, Otp: otpCode, Used: false, CreatedAt: time.Now(), ExpiresAt: time.Now().Add(OtpExpiry), } err := s.otpStore.CreateOtp(ctx, otp) if err != nil { return err } switch medium { case domain.OtpMediumSms: return s.smsGateway.SendSMSOTP(ctx, sentTo, otpCode) case domain.OtpMediumEmail: return s.emailGateway.SendEmailOTP(ctx, sentTo, otpCode) } return nil } func hashPassword(plaintextPassword string) ([]byte, error) { hash, err := bcrypt.GenerateFromPassword([]byte(plaintextPassword), 12) if err != nil { return []byte{}, err } return hash, nil }