import { ValidatorFn } from '@angular/forms';

export function usernameValidator(): ValidatorFn {
  return (control) => {
    if (control.value === null || control.value === undefined || control.value === '') {
      return null;
    }

    if (control.value.length < 6) {
      return {
        minlength: {
          requiredLength: 6,
          actualLength: control.value.length,
        },
      };
    }

    const pattern = /^[a-zA-Z0-9_-]*$/;

    if (!pattern.test(control.value)) {
      return {
        invalidUsername: {
          value: control.value,
          message:
            'نام کاربری فقط می‌تواند شامل حروف انگلیسی، اعداد، خط تیره (-) و زیر‌خط (_) باشد',
        },
      };
    }
    return null;
  };
}
