import { useIntl } from '@umijs/max';
import type { BadgeProps } from 'antd';
import { Badge } from 'antd';
import React from 'react';

interface BadgeTripStatusProps {
  status?: number;
}

const BadgeTripStatus: React.FC<BadgeTripStatusProps> = ({ status }) => {
  const intl = useIntl();
  // Khai báo kiểu cho map
  const statusBadgeMap: Record<number, BadgeProps> = {
    0: { status: 'default' }, // Đã khởi tạo
    1: { status: 'processing' }, // Chờ duyệt
    2: { status: 'success' }, // Đã duyệt
    3: { status: 'success' }, // Đang hoạt động
    4: { status: 'success' }, // Hoàn thành
    5: { status: 'error' }, // Đã huỷ
  };

  const getBadgeProps = (status: number | undefined) => {
    switch (status) {
      case 0:
        return intl.formatMessage({ id: 'trip.badge.notApproved' });
      case 1:
        return intl.formatMessage({ id: 'trip.badge.waitingApproval' });
      case 2:
        return intl.formatMessage({ id: 'trip.badge.approved' });
      case 3:
        return intl.formatMessage({ id: 'trip.badge.active' });
      case 4:
        return intl.formatMessage({ id: 'trip.badge.completed' });
      case 5:
        return intl.formatMessage({ id: 'trip.badge.cancelled' });
      default:
        return intl.formatMessage({ id: 'trip.badge.unknown' });
    }
  };

  const badgeProps: BadgeProps = statusBadgeMap[status ?? -1] || {
    status: 'default',
  };

  return <Badge {...badgeProps} text={getBadgeProps(status)} />;
};

export default BadgeTripStatus;
