export interface Merchant {
  id: string;
  /** 등록 시 자동 생성 — 수정 불가(기획 MCH_003_p ①). */
  code: string;
  brandName: string;
  name: string;
  categoryCode: string;
  businessNumber: string;
  ownerName: string;
  phoneNumber: string;
  address: string;
  addressDetail: string;
  latitude: string;
  longitude: string;
  isVisible: boolean;
  memo: string;
  createdAt: string;
  updatedAt: string;
}

export const EMPTY_FIELD_PLACEHOLDER = '-';

export function formatOptionalValue(
  value: string | number | null | undefined
): string {
  return value === null || value === undefined || value === ''
    ? EMPTY_FIELD_PLACEHOLDER
    : String(value);
}

/**
 * 업종 — 기획 MCH_002_p ②.
 *
 * TODO(기획): "제공받을 수 없는 데이터라면 추후 삭제 필요"로 적혀 있다. 코드표가 정해지면
 * 공통코드 조회로 바꾼다.
 */
export const MERCHANT_CATEGORY_OPTIONS: ReadonlyArray<{
  value: string;
  label: string;
}> = [
  { value: 'CONVENIENCE', label: '편의점' },
  { value: 'CAFE', label: '카페' },
  { value: 'RESTAURANT', label: '음식점' },
  { value: 'BOOKSTORE', label: '서점' },
  { value: 'STATIONERY', label: '문구점' },
  { value: 'ETC', label: '기타' },
];

export function formatCategoryLabel(code: string): string {
  if (!code) {
    return EMPTY_FIELD_PLACEHOLDER;
  }
  return (
    MERCHANT_CATEGORY_OPTIONS.find((option) => option.value === code)?.label ??
    code
  );
}

export function formatVisibilityLabel(isVisible: boolean): string {
  return isVisible ? '노출' : '미노출';
}

/** 목록의 주소 칸 — 상세주소까지 붙이면 한 줄을 넘겨 표가 밀린다. */
export function formatAddressSummary(merchant: Merchant): string {
  return formatOptionalValue(merchant.address);
}
