import { workflow } from '@novu/framework';
import { renderOtpEmail } from '../emails/slack-otp';
import { zodControlSchema, zodPayloadSchema, zodPushControlSchema, zodSmsControlSchema } from './schemas';
export const SlackVerificationOTP = workflow(
  "Slack Verify OTP",
  async ({ step, payload }) => {
    await step.email(
      "send-email",
      async (controls) => {
        return {
          subject: controls.emailSubject,
          body: renderOtpEmail(controls, payload),
        };
      },
      {
        controlSchema: zodControlSchema
      });
    // -----------------------------------push flow-------------------------------------------------------------------------
    await step.push('send-push', async (controls) => {
      return {
        subject: controls.pushNotificationSubject,
        body: `Your verification code from Slack is ${payload.validationCode}`,
      };
    },
    {
      controlSchema: zodPushControlSchema
    });
    // -----------------------------------sms flow-------------------------------------------------------------------------  
    await step.sms('send-sms', async (controls) => {
      return {
        subject: controls.smsSubject,
        body: `Your verification code from Slack is ${payload.validationCode}`,
      };
    },
    {
      controlSchema: zodSmsControlSchema
    });
  },
  {
    payloadSchema: zodPayloadSchema
  },
);