using System.Text.RegularExpressions;
namespace Common.Validation
{
    public static class FixedValidation
    {
        public static bool CheckLawPassword(this string password, ref List<string> errors)
        {
            bool ret = true;
            if (password.Length < 6)
            {
                errors.Add("کلمه عبور باید حداقل 6 گاراکتر باشد");
                ret = false;
            }

            // بررسی شامل بودن حداقل یک حرف
            if (!Regex.IsMatch(password, "[a-zA-Z]"))
            {
                errors.Add("کلمه عبور باید حداقل شامل یک حرف انگلیسی بزرگ یا کوچک باشد");

                ret = false;
            }
            // بررسی شامل بودن حداقل یک عدد
            if (!Regex.IsMatch(password, "[0-9]"))
            {
                errors.Add("کلمه عبور باید حداقل شامل یک عدد باشد");
                ret = false;
            }
            // بررسی اینکه فقط حروف و اعداد انگلیسی باشد
            if(Regex.IsMatch(password, "^[a-zA-Z0-9]+$"))
            {
                errors.Add("کلمه عبور فقط عدد و حروف انگلیسی مجاز است");
                ret = false;

            }

            return ret;
        }
        public static bool CheckUsername(this string Username)
       => (Username.Length == 11 && Username.StartsWith("09"))
                 || (Username.Length == 9 && Username.StartsWith("E/"));
        public static bool CheckMobile(this string Mobile)
        {
            bool pars = true;
            foreach (var item in Mobile.ToCharArray())
            {
               if(!Int32.TryParse(item.ToString(),out int _))
                {
                    pars = false;
                    break;
                }
            }
          return  pars && Mobile.Length == 11 && Mobile.StartsWith("09"); 
        }
        public static bool IsValidEmail(this string email)
        {
            // الگوی ساده اما معتبر برای بررسی ایمیل
            string pattern = @"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$";

            return Regex.IsMatch(email, pattern);
        }
        public static bool IsOnlyPersianLetters(this string input)
        {
            // این الگو فقط اجازه حروف فارسی می‌دهد
            string pattern = @"^[\u0600-\u06FF\s]+$";

            return Regex.IsMatch(input, pattern);
        }
       public static bool IsValidWebsite(this string url)
        {
            // پروتکل اختیاری است، فقط باید دامنه درست باشد
            string pattern = @"^(https?:\/\/)?(www\.)?[a-zA-Z0-9\-]+\.[a-zA-Z]{2,}(\S*)?$";
            return Regex.IsMatch(url, pattern);
        }
        public static bool IsValidImage(this byte[] imageData, int maxSizeInBytes = 5 * 1024 * 1024)
        {
            // بررسی خالی بودن یا حجم بیش از حد
            return imageData.Length <= maxSizeInBytes;


        }
    }
}
