from flask_wtf import FlaskForm
from wtforms import BooleanField, PasswordField, StringField
from wtforms.validators import DataRequired, Email, EqualTo, Length, Optional


class RegisterForm(FlaskForm):
    full_name = StringField(
        "Adı Soyadı",
        validators=[
            DataRequired(message="Ad alanı boş bırakılamaz"),
            Length(min=2, max=20),
        ],
    )
    email = StringField(
        "E-posta",
        validators=[DataRequired(message="E-posta alanı boş bırakılamaz"), Email()],
    )
    phone = StringField(
        "Telefon",
        validators=[Optional()],
    )
    password = PasswordField(
        "Parola", validators=[DataRequired(message="Parola alanı boş bırakılamaz")]
    )
    password_confirm = PasswordField(
        "Parola Onayı",
        validators=[
            DataRequired(message="Parola onayı alanı boş bırakılamaz"),
            EqualTo("password", message="Parolalar eşleşmiyor"),
        ],
    )


class LoginForm(FlaskForm):
    email = StringField(
        "Email Adresi",
        validators=[
            DataRequired(message="E-posta alanı boş bırakılamaz"),
        ],
    )
    password = PasswordField(
        "Parola", validators=[DataRequired(message="Parola alanı boş bırakılamaz")]
    )
    remember = BooleanField("Beni Hatırla")


class ForgotPasswordForm(FlaskForm):
    email = StringField(
        "Email Adresi",
        validators=[
            DataRequired(message="E-posta alanı boş bırakılamaz"),
        ],
    )


class ResetPasswordForm(FlaskForm):
    password = PasswordField(
        "Parola", validators=[DataRequired(message="Parola alanı boş bırakılamaz")]
    )
    password_confirm = PasswordField(
        "Parola Onayı",
        validators=[
            DataRequired(message="Parola onayı alanı boş bırakılamaz"),
            EqualTo("password", message="Parolalar eşleşmiyor"),
        ],
    )


class ChangeUserNameDataForm(FlaskForm):
    full_name = StringField(
        "Adı Soyadı", validators=[DataRequired(), Length(min=2, max=20)]
    )


class ChangeUserPassword(FlaskForm):
    password = PasswordField("Parola", validators=[DataRequired()])
    confirm_password = PasswordField("Parola Onayı", validators=[DataRequired()])
