import type { Dayjs } from 'dayjs';

import type {
  MemberStoredCardPlanDto,
  MemberStoredCardPlanStatsDto,
  MemberStoredCardPlanStatus,
  MemberStoredCardRechargeRecordDto,
} from '#/api/member/stored-card';

/** 页面主 Tab。 */
export type StoredCardTabKey = 'plans' | 'records';

/** 方案编辑表单。 */
export interface StoredCardPlanEditorForm {
  giftAmount: null | number;
  planId: string;
  rechargeAmount: null | number;
  sortOrder: null | number;
  status: MemberStoredCardPlanStatus;
}

/** 充值记录筛选表单。 */
export interface StoredCardRecordFilterForm {
  dateRange: [Dayjs, Dayjs] | null;
  keyword: string;
}

/** 充值记录分页。 */
export interface StoredCardRecordPager {
  items: MemberStoredCardRechargeRecordDto[];
  page: number;
  pageSize: number;
  totalCount: number;
}

/** 方案卡片视图模型。 */
export type StoredCardPlanCardViewModel = MemberStoredCardPlanDto;

/** 方案统计视图模型。 */
export type StoredCardPlanStatsViewModel = MemberStoredCardPlanStatsDto;

/** 创建默认方案编辑表单。 */
export function createDefaultStoredCardPlanEditorForm(): StoredCardPlanEditorForm {
  return {
    planId: '',
    rechargeAmount: null,
    giftAmount: null,
    sortOrder: 100,
    status: 'enabled',
  };
}

/** 创建默认充值记录筛选表单。 */
export function createDefaultStoredCardRecordFilterForm(): StoredCardRecordFilterForm {
  return {
    dateRange: null,
    keyword: '',
  };
}

/** 创建默认充值记录分页状态。 */
export function createDefaultStoredCardRecordPager(): StoredCardRecordPager {
  return {
    items: [],
    page: 1,
    pageSize: 8,
    totalCount: 0,
  };
}

/** 创建默认方案统计。 */
export function createDefaultStoredCardPlanStats(): StoredCardPlanStatsViewModel {
  return {
    totalRechargeAmount: 0,
    totalGiftAmount: 0,
    currentMonthRechargeAmount: 0,
    rechargeMemberCount: 0,
  };
}
