import { Tag } from 'antd'

import type { K8supgradeplanPlanStatus } from 'apiClient/services/devops/interface'

export const EosVersionHighlight = ({ version }: { version: string }) => (
  <span className="k8s-upgrade-plan-version">{version}</span>
)

export const formatEosDate = (value?: string | number): string => {
  if (value === undefined || value === null || value === '') {
    return '-'
  }
  let date: Date
  if (typeof value === 'number') {
    date = new Date(value < 1e12 ? value * 1000 : value)
  } else if (/^\d+$/.test(value.trim())) {
    const n = Number(value)
    date = new Date(n < 1e12 ? n * 1000 : n)
  } else {
    date = new Date(value)
  }
  if (Number.isNaN(date.getTime())) {
    return String(value)
  }
  const year = date.getFullYear()
  const month = String(date.getMonth() + 1).padStart(2, '0')
  const day = String(date.getDate()).padStart(2, '0')
  return `${year}/${month}/${day}`
}

const STATUS_COLORS: Record<string, string> = {
  draft: 'default',
  approving: 'orange',
  approved: 'cyan',
  scheduled: 'blue',
  upgrading: 'orange',
  task_created: 'green',
  rejected: 'red',
  cancelled: '#77787b'
}

const normalizePlanStatus = (status?: string) => (status ?? '').toLowerCase()

export const renderPlanStatusTag = (
  status?: K8supgradeplanPlanStatus | string
) => {
  if (!status) return <>-</>
  const normalized = normalizePlanStatus(status)
  return (
    <Tag color={STATUS_COLORS[normalized] ?? 'blue'} key={status}>
      {status}
    </Tag>
  )
}
