import type { ITranslatedText } from '@/views/Survey/views/Preview/components/questions/types/translatedText';

/**
 * 验证最小字符串长度
 * @param answer {ICompletionAnswer} 答案
 * @param isError {boolean} 是否有错误
 * @param config {ICompletionConfig} 配置信息
 * @param translatedText {ITranslatedText} 语言转换文本
 * @return {string} 错误信息
 */
export function validateMinLength(
  answer: string,
  isError: boolean,
  config: ICompletionConfig,
  translatedText: ITranslatedText
) {
  // 处理异常数据，因为不给数据的时候，默认是空字符串
  if (typeof config.min === 'string' && config.min.length === 0) return;

  // 如果已经包含报错，不处理
  if (isError) return;
  // 如果包含相应的 text_type， 也不处理，1是整数，2是小数
  if ([1, 2].includes(config.text_type)) return;

  if (answer.length >= Number(config.min)) return;
  return {
    isError: true,
    errorMessage: translatedText.PleaseEnterMoreCharacters(config.min)
  };
}

/**
 * 验证最大字符串长度
 * @param answer {ICompletionAnswer} 答案
 * @param isError {boolean} 是否有错误
 * @param config {ICompletionConfig} 配置信息
 * @param translatedText {ITranslatedText} 语言转换文本
 * @return {string} 错误信息
 *
 */
export function validateMaxLength(
  answer: string,
  isError: boolean,
  config: ICompletionConfig,
  translatedText: ITranslatedText
) {
  // 处理异常数据，因为不给数据的时候，默认是空字符串
  if (typeof config.max === 'string' && config.max.length === 0) return;

  // 如果已经包含报错，不处理
  if (isError) return;
  // 如果包含相应的 text_type， 也不处理, 1是整数，2是小数
  if ([1, 2].includes(config.text_type)) return;

  if (answer.length < Number(config.max)) return;
  return {
    isError: true,
    errorMessage: translatedText.PleaseEnterLessCharacters(config.max)
  };
}
