import { formatFormLabel } from '#/components/FormGenerator/src/helper/formLabel';

interface FormMappingRecord {
  fileList?: unknown;
  nodeName?: string;
  [key: string]: unknown;
}

interface FormMappingNode {
  nodeName?: string;
  type?: string;
}

function parseRecordFileList(fileList: unknown): unknown[] {
  if (Array.isArray(fileList)) return fileList;
  if (typeof fileList !== 'string' || !fileList) return [];
  try {
    const parsed: unknown = JSON.parse(fileList);
    return Array.isArray(parsed) ? parsed : [];
  } catch {
    return [];
  }
}

export function buildFormMappingRecord(record: FormMappingRecord, node: FormMappingNode) {
  return {
    ...record,
    title: formatFormLabel(node.nodeName || record.nodeName),
    actionLabel: node.type === 'processing' ? '办理' : '审核',
    fileList: parseRecordFileList(record.fileList),
  };
}

export function formatRecordDepartmentName(name: unknown, showRoot: number, level = 0): string {
  if (typeof name !== 'string' || !name) return '';
  if (level === 0 && showRoot !== 0) return name;
  return name
    .split('、')
    .map((path) => {
      const names = path.split('/');
      const start = Math.max(level > 0 ? names.length - level : 0, showRoot === 0 && names.length > 1 ? 1 : 0);
      return names.slice(start).join('/');
    })
    .join('、');
}
