/**
 * 샘플 데이터 생성 공통 유틸리티
 */

import { getLocalDateString } from '@/lib/utils/date';

// 랜덤 선택
export function randomPick<T>(arr: readonly T[]): T {
  return arr[Math.floor(Math.random() * arr.length)];
}

// 범위 내 랜덤 정수
export function randomInt(min: number, max: number): number {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

// 범위 내 랜덤 정수 (100 단위)
export function randomInt100(min: number, max: number): number {
  const minH = Math.ceil(min / 100);
  const maxH = Math.floor(max / 100);
  return randomInt(minH, maxH) * 100;
}

// 랜덤 전화번호
export function randomPhone(): string {
  const middle = randomInt(1000, 9999);
  const last = randomInt(1000, 9999);
  return `010-${middle}-${last}`;
}

// 오늘 기준 N일 후 날짜
export function dateAfterDays(days: number): string {
  const date = new Date();
  date.setDate(date.getDate() + days);
  return getLocalDateString(date);
}

// 오늘 날짜
export function today(): string {
  return getLocalDateString(new Date());
}

// 랜덤 층수
export function randomFloor(): string {
  const floors = ['B1', '1F', '2F', '3F', '4F', '5F', '6F', '7F', '8F', '9F', '10F'];
  return randomPick(floors);
}

// 순차 부호 생성 (F001, F002, ...)
let codeCounter = 1;
export function nextCode(): string {
  const code = `F${String(codeCounter).padStart(3, '0')}`;
  codeCounter++;
  return code;
}

// 부호 카운터 리셋
export function resetCodeCounter(): void {
  codeCounter = 1;
}

// 랜덤 비고
export function randomRemark(): string {
  const remarks = [
    '특이사항 없음',
    '긴급 배송 요청',
    '우천 시 배송 연기',
    '오전 중 배송 희망',
    '현장 담당자 부재 시 경비실 전달',
    '설치 시 안전관리자 필요',
    '화물용 엘리베이터 사용 가능',
    '주차 공간 협소, 사전 연락 필수',
    '',
  ];
  return randomPick(remarks);
}

// 랜덤 ID 생성 (임시용)
export function tempId(): string {
  return `temp-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
}