import * as yup from 'yup';

// ----------------------------------------------------------------------
// Schema สำหรับตรวจสอบข้อมูล Login (ใช้ Yup)
// ----------------------------------------------------------------------
export const loginSchema = yup.object().shape({
    username: yup.string().required('กรุณากรอกชื่อผู้ใช้งาน'),
    password: yup.string().required('กรุณากรอกรหัสผ่าน'),
});

// Schema สำหรับตรวจสอบข้อมูล Registration
export const registrationSchema = yup.object().shape({
    username: yup.string().required('กรุณากรอกชื่อผู้ใช้งาน').min(4, 'ชื่อผู้ใช้ต้องมีความยาวอย่างน้อย 4 ตัวอักษร'),
    email: yup.string().email('รูปแบบอีเมลไม่ถูกต้อง').required('กรุณากรอกอีเมล'),
    phone_number: yup.string().nullable().matches(/^[0-9]*$/, 'เบอร์โทรศัพท์ต้องเป็นตัวเลขเท่านั้น'),
    password: yup.string().required('กรุณากรอกรหัสผ่าน').min(8, 'รหัสผ่านต้องมีความยาวอย่างน้อย 8 ตัวอักษร'),
    confirm_password: yup.string()
        .oneOf([yup.ref('password'), null], 'รหัสผ่านไม่ตรงกัน')
        .required('กรุณายืนยันรหัสผ่าน'),
});

export const resetConfirmSchema = yup.object().shape({
    new_password: yup.string().required('กรุณากรอกรหัสผ่านใหม่').min(8, 'รหัสผ่านต้องมีอย่างน้อย 8 ตัวอักษร'),
    re_new_password: yup.string()
        .oneOf([yup.ref('new_password'), null], 'รหัสผ่านไม่ตรงกัน')
        .required('กรุณายืนยันรหัสผ่านใหม่'),
});

export const profileSchema = yup.object().shape({
    first_name: yup.string().nullable(),
    last_name: yup.string().nullable(),
    phone_number: yup.string().nullable().matches(/^[0-9]*$/, 'เบอร์โทรศัพท์ต้องเป็นตัวเลขเท่านั้น'),
    email: yup.string().email('รูปแบบอีเมลไม่ถูกต้อง').required('ต้องระบุอีเมล'),
});

export const passwordSchema = yup.object().shape({
    current_password: yup.string().required('กรุณากรอกรหัสผ่านปัจจุบัน'),
    new_password: yup.string().required('กรุณากรอกรหัสผ่านใหม่').min(8, 'รหัสผ่านต้องมีอย่างน้อย 8 ตัวอักษร'),
    re_new_password: yup.string()
        .oneOf([yup.ref('new_password'), null], 'รหัสผ่านใหม่ไม่ตรงกัน')
        .required('กรุณายืนยันรหัสผ่านใหม่'),
});