/**
 * 상품권 관리 서버 액션 (Mock)
 *
 * API Endpoints (예정):
 * - GET /api/v1/gift-certificates - 목록 조회
 * - GET /api/v1/gift-certificates/{id} - 상세 조회
 * - POST /api/v1/gift-certificates - 등록
 * - PUT /api/v1/gift-certificates/{id} - 수정
 * - DELETE /api/v1/gift-certificates/{id} - 삭제
 * - GET /api/v1/gift-certificates/summary - 요약 통계
 */

'use server';

import type { ActionResult } from '@/lib/api/execute-server-action';
// import { executeServerAction } from '@/lib/api/execute-server-action';
// import { executePaginatedAction } from '@/lib/api/execute-paginated-action';
// import { buildApiUrl } from '@/lib/api/query-params';
import type {
  GiftCertificateRecord,
  GiftCertificateFormData,
} from './types';

// ===== 상품권 목록 조회 (Mock) =====
export async function getGiftCertificates(_params?: {
  page?: number;
  perPage?: number;
  startDate?: string;
  endDate?: string;
  status?: string;
}): Promise<ActionResult<GiftCertificateRecord[]>> {
  // TODO: 실제 API 연동 시 교체
  // return executePaginatedAction<GiftCertificateApiData, GiftCertificateRecord>({
  //   url: buildApiUrl('/api/v1/gift-certificates', { ... }),
  //   transform: transformApiToFrontend,
  //   errorMessage: '상품권 목록 조회에 실패했습니다.',
  // });
  return { success: true, data: [] };
}

// ===== 상품권 상세 조회 (Mock) =====
export async function getGiftCertificateById(
  _id: string
): Promise<ActionResult<GiftCertificateFormData>> {
  // TODO: 실제 API 연동 시 교체
  // return executeServerAction({
  //   url: buildApiUrl(`/api/v1/gift-certificates/${id}`),
  //   transform: transformDetailApiToFrontend,
  //   errorMessage: '상품권 조회에 실패했습니다.',
  // });
  return { success: false, error: '상품권을 찾을 수 없습니다.' };
}

// ===== 상품권 등록 (Mock) =====
export async function createGiftCertificate(
  _data: GiftCertificateFormData
): Promise<ActionResult<GiftCertificateRecord>> {
  // TODO: 실제 API 연동 시 교체
  // return executeServerAction({
  //   url: buildApiUrl('/api/v1/gift-certificates'),
  //   method: 'POST',
  //   body: transformFrontendToApi(data),
  //   transform: transformApiToFrontend,
  //   errorMessage: '상품권 등록에 실패했습니다.',
  // });
  return {
    success: true,
    data: {
      id: crypto.randomUUID(),
      serialNumber: _data.serialNumber || `GC-${Date.now()}`,
      name: _data.name,
      faceValue: _data.faceValue,
      purchaseDate: _data.purchaseDate,
      usedDate: _data.usedDate || null,
      status: _data.status,
      entertainmentExpense: _data.entertainmentExpense,
    },
  };
}

// ===== 상품권 수정 (Mock) =====
export async function updateGiftCertificate(
  _id: string,
  _data: GiftCertificateFormData
): Promise<ActionResult<GiftCertificateRecord>> {
  // TODO: 실제 API 연동 시 교체
  // return executeServerAction({
  //   url: buildApiUrl(`/api/v1/gift-certificates/${id}`),
  //   method: 'PUT',
  //   body: transformFrontendToApi(data),
  //   transform: transformApiToFrontend,
  //   errorMessage: '상품권 수정에 실패했습니다.',
  // });
  return {
    success: true,
    data: {
      id: _id,
      serialNumber: _data.serialNumber,
      name: _data.name,
      faceValue: _data.faceValue,
      purchaseDate: _data.purchaseDate,
      usedDate: _data.usedDate || null,
      status: _data.status,
      entertainmentExpense: _data.entertainmentExpense,
    },
  };
}

// ===== 상품권 삭제 (Mock) =====
export async function deleteGiftCertificate(
  _id: string
): Promise<ActionResult> {
  // TODO: 실제 API 연동 시 교체
  // return executeServerAction({
  //   url: buildApiUrl(`/api/v1/gift-certificates/${id}`),
  //   method: 'DELETE',
  //   errorMessage: '상품권 삭제에 실패했습니다.',
  // });
  return { success: true };
}

// ===== 상품권 요약 통계 (Mock) =====
export async function getGiftCertificateSummary(_params?: {
  startDate?: string;
  endDate?: string;
}): Promise<ActionResult<{
  totalCount: number;
  totalAmount: number;
  holdingCount: number;
  holdingAmount: number;
  usedCount: number;
  usedAmount: number;
  entertainmentCount: number;
  entertainmentAmount: number;
}>> {
  // TODO: 실제 API 연동 시 교체
  // return executeServerAction({
  //   url: buildApiUrl('/api/v1/gift-certificates/summary', { ... }),
  //   transform: transformSummary,
  //   errorMessage: '상품권 요약 조회에 실패했습니다.',
  // });
  return {
    success: true,
    data: {
      totalCount: 0,
      totalAmount: 0,
      holdingCount: 0,
      holdingAmount: 0,
      usedCount: 0,
      usedAmount: 0,
      entertainmentCount: 0,
      entertainmentAmount: 0,
    },
  };
}
