import jwt from 'jsonwebtoken';
import { env } from '../config/env';

interface SurveyPayload {
  bid: string;
  purpose: 'survey';
}

export function signSurveyToken(bookingId: string): string {
  return jwt.sign({ bid: bookingId, purpose: 'survey' } satisfies SurveyPayload, env.JWT_SECRET, {
    expiresIn: '30d',
  });
}

export function verifySurveyToken(token: string): string {
  const payload = jwt.verify(token, env.JWT_SECRET) as SurveyPayload;
  if (payload.purpose !== 'survey' || !payload.bid) {
    throw new Error('Invalid survey token');
  }
  return payload.bid;
}

export function buildSurveyUrl(bookingId: string): string {
  const token = signSurveyToken(bookingId);
  return `${env.bookingAppUrl}/feedback?token=${encodeURIComponent(token)}`;
}

export function buildHostOutcomeUrl(bookingId: string): string {
  return `${env.APP_URL}/bookings?outcome=${bookingId}`;
}
