"use server";

import { couponService } from "../services/couponService";

export interface VerifyCouponActionResponse {
  success: boolean;
  data: {
    valid: boolean;
    discount: number;
    discount_type: "percentage" | "fixed";
    coupon_code: string;
  } | null;
  message: string;
}

export async function verifyCouponAction(
  couponCode: string,
  groupId: number
): Promise<VerifyCouponActionResponse> {
  try {
    if (!couponCode || !groupId) {
      return {
        success: false,
        data: null,
        message: "Please enter a valid coupon code",
      };
    }

    const response = await couponService.verifyCoupon(couponCode, groupId);


    if (response.status === "success" && response.data?.valid) {
      return {
        success: true,
        data: {
          valid: true,
          discount: response.data.discount,
          discount_type: response.data.discount_type,
          coupon_code: response.data.coupon_code,
        },
        message: response.message || "Coupon applied successfully!",
      };
    } else {
      return {
        success: false,
        data: null,
        message: response.message || "Invalid coupon code",
      };
    }
  } catch (error) {
    console.error("[verifyCouponAction] Error:", error);
    return {
      success: false,
      data: null,
      message: error instanceof Error ? error.message : "Failed to verify coupon",
    };
  }
}
