import * as yup from 'yup'

export const loginSchema = yup.object({
    username: yup.string()
        .required("وارد کردن نام کاربری الزامی میباشد")
        .min(10, "نام کاربری نمیتوند کمتر از 10 رقم باشد")
        .max(10, "نام کاربری نمیتواند بیشتر از 10 رقم باشد")
        .matches(/^[0-9]{10}$/, "شماره تماس نامعتبر"),
    password: yup.string()
        .required("وارد کردن رمزعبور الزامی میباشد")
        .min(8, "رمزعبور نمیتواند کمتر از 8 کاراکتر باشد")
})

export const resetPasswordSchema = yup.object({
    password: yup.string().min(8, "رمز عبور نمیتواند کمتر از 8 کاراکتر باشد").required("رمز عبور الزامی میباشد"),
    password_confirmation: yup.string()
        .oneOf([yup.ref('password')], "رمز عبور و تکرار آن باید یکسان باشند")
        .required("تکرار رمز عبور الزامی میباشد"),
})

export const forgotPasswordSchema = yup.object({
    mobile_number: yup.string()
        .required("وارد کردن شماره تماس الزامی میباشد")
        .min(11, "شماره تماس نمیتوند کمتر از 11 رقم باشد")
        .max(11, "شماره تماس نمیتواند بیشتر از 11 رقم باشد")
        .matches(/^[0-9]{11}$/, "شماره تماس نامعتبر"),
})

export const LoginWithCodeSchema = yup.object({
    mobile_number: yup.string()
        .required("وارد کردن شماره تماس الزامی میباشد")
        .min(11, "شماره تماس نمیتوند کمتر از 11 رقم باشد")
        .max(11, "شماره تماس نمیتواند بیشتر از 11 رقم باشد")
        .matches(/^[0-9]{11}$/, "شماره تماس نامعتبر"),
})

export const ResetPasswordCodeSchema = yup.object({
    mobile_number: yup.string()
        .min(11, "شماره تماس نمیتوند کمتر از 11 رقم باشد")
        .max(11, "شماره تماس نمیتواند بیشتر از 11 رقم باشد")
        .matches(/^[0-9]{11}$/, "شماره تماس نامعتبر"),
    otp: yup.string()
        .required("وارد کردن کد الزامی میباشد")
        .min(6, "کد نمیتوند کمتر از 6 رقم باشد")
        .max(6, "کد نمیتواند بیشتر از 6 رقم باشد")
        .matches(/^[0-9]{6}$/, "کد نامعتبر"),
})

export const LoginCodeSchema = yup.object({
    mobile_number: yup.string()
        .min(11, "شماره تماس نمیتوند کمتر از 11 رقم باشد")
        .max(11, "شماره تماس نمیتواند بیشتر از 11 رقم باشد")
        .matches(/^[0-9]{11}$/, "شماره تماس نامعتبر"),
    otp: yup.string()
        .required("وارد کردن کد الزامی میباشد")
        .min(6, "کد نمیتوند کمتر از 6 رقم باشد")
        .max(6, " کد نمیتواند بیشتر از 6 رقم باشد")
        .matches(/^[0-9]{6}$/, "کد نامعتبر"),
})

export const RegisterSchema = yup.object({
    first_name: yup.string().required("وارد کردن نام الزامی میباشد").min(3, "نام نمیتواند کمتر از 3 کاراکتر باشد").max(20, "نام نمیتواند بیشتر از 20 کاراکتر باشد"),
    last_name: yup.string().required("وارد کردن نام خانوادگی الزامی میباشد").min(3, "نام خانوادگی نمیتواند کمتر از 3 کاراکتر باشد").max(25, "نام خانوادگی نمیتواند بیشتر از 25 کاراکتر باشد"),
    national_code: yup.string().required("وارد کردن کد ملی الزامی میباشد").min(10, "کد ملی نمیتواند کمتر از 10 کاراکتر باشد").max(10, "کد ملی نمیتونه بیشتر از 10 کاراکتر باشه").matches(/^[0-9]{10}$/, "کد نامعتبر"),
    city_name: yup.object().required("وارد کردن شهر الزامی مباشد"),
    province_name: yup.object().required("وارد کردن استان الزامی مباشد"),
    shopName: yup.string().required("وارد کردن نام فروشگاه الزامی میباشد").min(2, "نام فروشگاه نمیتواند کمتر از 3 کاراکتر باشد").max(30, "نام فروشگاه نمیتواند بیشتر از 30 کاراکتر باشد"),
    mobile_number: yup.string()
        .required("وارد کردن شماره تماس الزامی میباشد")
        .min(11, "شماره تماس نمیتوند کمتر از 11 رقم باشد")
        .max(11, "شماره تماس نمیتواند بیشتر از 11 رقم باشد")
        .matches(/^[0-9]{11}$/, "شماره تماس نامعتبر"),
    password: yup.string().min(8, "رمز عبور نمیتواند کمتر از 8 کاراکتر باشد").required("رمز عبور الزامی میباشد"),
    password_confirmation: yup.string()
        .oneOf([yup.ref('password')], "رمز عبور و تکرار آن باید یکسان باشند")
        .required("تکرار رمز عبور الزامی میباشد"),
})

export const UpdateUserSchema = yup.object({
    first_name: yup.string().required("وارد کردن نام الزامی میباشد").min(3, "نام نمیتواند کمتر از 3 کاراکتر باشد").max(20, "نام نمیتواند بیشتر از 20 کاراکتر باشد"),
    last_name: yup.string().required("وارد کردن نام خانوادگی الزامی میباشد").min(3, "نام خانوادگی نمیتواند کمتر از 3 کاراکتر باشد").max(25, "نام خانوادگی نمیتواند بیشتر از 25 کاراکتر باشد"),
    city_name: yup.object().required("وارد کردن شهر الزامی مباشد"),
    province_name: yup.object().required("وارد کردن استان الزامی مباشد"),
    shopName: yup.string().required("وارد کردن نام فروشگاه الزامی میباشد").min(2, "نام فروشگاه نمیتواند کمتر از 3 کاراکتر باشد").max(30, "نام فروشگاه نمیتواند بیشتر از 30 کاراکتر باشد"),
    birthDate: yup.string().required("وارد کردن تاریخ تولد الزامی میباشد"),
    address: yup.string().required("وارد کردن آدرس الزامی میباشد").min(5, "آدرس نمیتواند کمتر از 5 کاراکتر باشد").max(50, "آدرس نمیتواند بیشتر از از 50 کاراکتر باشد"),
    cell_number: yup.string()
        .min(11, "شماره تلفن ثابت نمیتوند کمتر از 11 رقم باشد")
        .max(11, "شماره ثابت نمیتواند بیشتر از 11 رقم باشد")
        .matches(/^[0-9]{11}$/, "شماره تماس نامعتبر").required("وارد کردن شماره تلفن ثابت الزامی میباشد"),
    national_code: yup.string().min(10, "کد ملی نمیتواند کمتر از 10 کاراکتر باشد").max(10, "کد ملی نمیتونه بیشتر از 10 کاراکتر باشه").matches(/^[0-9]{10}$/, "کد نامعتبر"),
    mobile_number: yup.string()
        .min(11, "شماره تماس نمیتوند کمتر از 11 رقم باشد")
        .max(11, "شماره تماس نمیتواند بیشتر از 11 رقم باشد")
        .matches(/^[0-9]{11}$/, "شماره تماس نامعتبر"),
})

export const AddNewCardSchema = yup.object({
    name: yup.string().required("وارد کردن نام الزامی میباشد").min(3, "نام نمیتواند کمتر از 3 کاراکتر باشد").max(20, "نام نمیتواند بیشتر از 20 کاراکتر باشد"),
    family: yup.string().required("وارد کردن نام خانوادگی الزامی میباشد").min(3, "نام خانوادگی نمیتواند کمتر از 3 کاراکتر باشد").max(25, "نام خانوادگی نمیتواند بیشتر از 25 کاراکتر باشد"),
    PAN: yup.string()
        .required("وارد کردن شماره کارت الزامی میباشد")
        .min(16, "شماره کارت نمیتوند کمتر از 16 رقم باشد")
        .max(16, " شماره کارت نمیتواند بیشتر از 16 رقم باشد")
        .matches(/^[0-9]{16}$/, "شماره کارت نامعتبر"),
    IBAN: yup.string()
        .required("وارد کردن شماره شبا الزامی میباشد")
        .min(26, "شماره شبا نمیتوند کمتر از 26 رقم باشد")
        .max(26, " شماره شبا نمیتواند بیشتر از 26 رقم باشد")
        .matches(/^IR[0-9]{24}$/, "شماره شبا نامعتبر"),
})

export const ResetPasswordUserSchema = yup.object({
    password: yup.string().min(8, "رمز عبور نمی‌تواند کمتر از 8 کاراکتر باشد").required("رمز عبور الزامی می‌باشد"),
    newPassword: yup.string().min(8, "رمز عبور جدید نمی‌تواند کمتر از 8 کاراکتر باشد")
        .notOneOf([yup.ref('password')], "رمز عبور جدید نباید با رمز عبور فعلی یکسان باشد")
        .required("رمز عبور جدید الزامی می‌باشد"),
    password_confirmation: yup.string()
        .oneOf([yup.ref('newPassword')], "رمز عبور جدید و تکرار آن باید یکسان باشند")
        .required("تکرار رمز عبور الزامی می‌باشد"),
});

export const SendWithdrawSchema = yup.object({
    holderName: yup.string().required("وارد کردن اطلاعات صاحب کارت الزامی میباشد"),
    card: yup.object(),
})

export const checkIMEISchema = yup.object({
    IMEI: yup.string().required("وارد کردن اطلاعات IMEI الزامی میباشد").min(15,"شناسه IMEI نمیتواند کمتر از 15 کاراکتر باشد").max(15,"شناسه IMEI نمیتواند بیشتر از 15 کاراکتر باشد"),
})