import { isShebaValid } from '@persian-tools/persian-tools';

// validation functions
export function required(value) {
  return !value ? 'وارد کردن این فیلد الزامی است.' : undefined;
}

export function requiredTermsAndConditions(value) {
  return !value ? 'پذیرفتن شرایط و قوانین الزامی است.' : undefined;
}

export function number(value) {
  return value != null
    ? 'وارد کردن این فیلد الزامی است.'
    : isNaN(Number(value))
    ? 'لطفا یک عدد وارد نمایید.'
    : undefined;
}

export function email(value) {
  return !value
    ? 'وارد کردن این فیلد الزامی است.'
    : !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(value)
    ? 'لطفا یک ایمیل معتبر وارد نمایید.'
    : undefined;
}

export function mobile(value) {
  return !value
    ? 'وارد کردن این فیلد الزامی است.'
    : !/^[0][9][0-9]{9}$/i.test(value)
    ? 'لطفا یک شماره تلفن همراه معتبر با حروف انگلیسی وارد نمایید.'
    : undefined;
}

export function iban(value) {
  return value && !isShebaValid(`IR${value}`) ? 'لطفا یک شماره شبا معتبر وارد نمایید.' : undefined;
}

export function requiredIban(value) {
  return !value
    ? 'وارد کردن این فیلد الزامی است.'
    : !isShebaValid(`IR${value}`)
    ? 'لطفا یک شماره شبا معتبر وارد نمایید.'
    : undefined;
}

export function password(value) {
  return !value
    ? 'وارد کردن این فیلد الزامی است.'
    : !/^(?=.*[a-zA-Z])(?=.*\d).{8,}$/i.test(value)
    ? 'لطفا یک رمزعبور دارای حداقل 8 کاراکتر و ترکیبی از حروف انگلیسی و اعداد وارد نمایید.'
    : undefined;
}

export function smsKey(value) {
  return !value
    ? 'وارد کردن این فیلد الزامی است.'
    : !/^[0-9]{6}$/i.test(value)
    ? 'لطفا کد 6 رقمی پیامک شده به شماره خود را وارد نمایید.'
    : undefined;
}

export function gender(value) {
  return !['M', 'F'].includes(value) ? 'وارد کردن این فیلد الزامی است.' : undefined;
}

export function persian(value) {
  return !value
    ? 'وارد کردن این فیلد الزامی است.'
    : /[^آابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهی ئء]/.test(value)
    ? 'لطفا از حروف فارسی استفاده نمایید.'
    : undefined;
}
