import { getOptions } from 'utils';

export const ZONE_TYPE_ENUM = {
  primary: 'PRIMARY',
  secondary: 'SECONDARY',
};

export const ZONE_TYPES = {
  [ZONE_TYPE_ENUM.primary]: t('Primary'),
  [ZONE_TYPE_ENUM.secondary]: t('Secondary'),
};

export const zoneTypeOptions = getOptions(ZONE_TYPES);

export const zoneNameRegex = /^.+\.$/;

export const zoneNameMessage = t('The zone name should end with "."');

export const validateZoneName = (rule, value) => {
  if (!value) {
    return Promise.resolve();
  }
  if (!zoneNameRegex.test(value)) {
    return Promise.reject(zoneNameMessage);
  }
  const labels = value.trim().split('.');
  if (labels.length <= 1) {
    return Promise.reject(
      new Error(t('More than one label is required, such as: "example.org."'))
    );
  }
  return Promise.resolve();
};

export const ZONE_STATUS = {
  ACTIVE: t('Active'),
  PENDING: t('Pending'),
  ERROR: t('Error'),
};