/**
 * WebTypeConfig와 AutoGeneration 간 변환 유틸리티
 */

import { ComponentData } from "@/types/screen";

/**
 * webTypeConfig의 자동입력 설정을 autoGeneration으로 변환
 */
export function convertWebTypeConfigToAutoGeneration(component: ComponentData): ComponentData {
  // web_type_config가 없으면 변환 불필요
  if (!component.web_type_config) {
    return component;
  }

  const config = component.web_type_config as any;

  // 자동입력이 활성화되어 있는지 확인
  if (!config.autoInput || !config.autoValueType) {
    return component;
  }

  // 이미 auto_generation이 올바르게 설정되어 있으면 변환 불필요
  const anyComp = component as any;
  if (
    anyComp.auto_generation &&
    anyComp.auto_generation.type === config.autoValueType &&
    anyComp.auto_generation.options?.numbering_rule_id === config.numberingRuleId
  ) {
    return component;
  }

  // auto_generation 객체 생성
  const auto_generation: any = {
    type: config.autoValueType,
    enabled: true,
  };

  // 채번 규칙인 경우 options.numbering_rule_id 설정
  if (config.autoValueType === "numbering_rule" && config.numberingRuleId) {
    auto_generation.options = {
      numbering_rule_id: config.numberingRuleId,
    };
  }


  return {
    ...component,
    auto_generation,
  } as unknown as ComponentData;
}

/**
 * 레이아웃의 모든 컴포넌트에 대해 webTypeConfig → autoGeneration 변환 적용
 */
export function convertLayoutComponents(components: ComponentData[]): ComponentData[] {
  return components.map(convertWebTypeConfigToAutoGeneration);
}

