'use server';

import { cookies } from 'next/headers';
import { serverApiClient } from '@/utils/serverApiClient';

export interface Order {
  order_id: string;
  item_order: string;
  coupon_discount_amount: string;
  grand_total: string;
  payment_status: string;
  status: string;
  order_at: number;
  estimated_lead_time: any;
  product_image: string;
  item_order_type: string;
  no_of_item: number;
  vision_board_summary?: any;
  shipping_url?: string;
}

export interface GetOrderListResponse {
  success: boolean;
  message?: string;
  data?: {
    order: Order[];
  };
}

/**
 * Server action to get user's order list
 * This runs on the server and keeps the auth token secure
 */
export async function getUserOrderList(): Promise<GetOrderListResponse> {
  try {
    const cookieStore = await cookies();
    const token = cookieStore.get('token')?.value;

    console.log('[Order Action] Token present:', !!token);
    console.log('[Order Action] Token length:', token?.length || 0);

    if (!token) {
      console.error('[Order Action] No authentication token found');
      return {
        success: false,
        message: 'Authentication required',
      };
    }

    console.log('[Order Action] Calling serverApiClient for order/list');
    const response = await serverApiClient<{ order: Order[] }>('order/list', {
      method: 'GET',
      cache: 'no-store',
    });

    console.log('[Order Action] Response:', { 
      success: response.success, 
      hasData: !!response.data,
      message: response.message 
    });

    if (!response.success) {
      console.error('[Order Action] API call failed:', response.message);
      return {
        success: false,
        message: response.message || 'Failed to fetch orders',
      };
    }

    return {
      success: true,
      data: response.data,
    };
  } catch (error: any) {
    console.error('[Order Action] Error:', error);
    return {
      success: false,
      message: error.message || 'Failed to fetch order list',
    };
  }
}
