from flask_wtf import FlaskForm
from wtforms import BooleanField, PasswordField, StringField, SubmitField
from wtforms.validators import DataRequired, Email, EqualTo, Length, Optional


class KayitFormu(FlaskForm):
    ad_soyad = StringField(
        "Adı Soyadı",
        validators=[
            DataRequired(message="Ad alanı boş bırakılamaz"),
            Length(min=2, max=20),
        ],
    )
    eposta = StringField(
        "E-posta",
        validators=[DataRequired(message="E-posta alanı boş bırakılamaz"), Email()],
    )
    telefon = StringField(
        "Telefon",
        validators=[Optional()],
    )
    parola = PasswordField(
        "Parola", validators=[DataRequired(message="Parola alanı boş bırakılamaz")]
    )
    parola_tekrari = PasswordField(
        "Parola Onayı",
        validators=[
            DataRequired(message="Parola onayı alanı boş bırakılamaz"),
            EqualTo("parola", message="Parolalar eşleşmiyor"),
        ],
    )


class GirisFormu(FlaskForm):
    eposta = StringField(
        "Email Adresi",
        validators=[
            DataRequired(message="E-posta alanı boş bırakılamaz"),
        ],
    )
    parola = PasswordField(
        "Parola", validators=[DataRequired(message="Parola alanı boş bırakılamaz")]
    )
    beni_hatirla = BooleanField("Beni Hatırla")
    submit = SubmitField("Giriş Yap")


class ParolamiUnuttumFormu(FlaskForm):
    eposta = StringField(
        "Email Adresi",
        validators=[
            DataRequired(message="E-posta alanı boş bırakılamaz"),
        ],
    )


class ParolaSifirlamaFormu(FlaskForm):
    parola = PasswordField(
        "Parola", validators=[DataRequired(message="Parola alanı boş bırakılamaz")]
    )
    parola_tekrari = PasswordField(
        "Parola Onayı",
        validators=[
            DataRequired(message="Parola onayı alanı boş bırakılamaz"),
            EqualTo("password", message="Parolalar eşleşmiyor"),
        ],
    )


class KullaniciAdiDegistirmeFormu(FlaskForm):
    ad_soyad = StringField("Adı", validators=[DataRequired(), Length(min=2, max=20)])


class KullaniciParolasiDegistirmeFormu(FlaskForm):
    parola = PasswordField("Parola", validators=[DataRequired()])
    parola_tekrari = PasswordField("Parola Onayı", validators=[DataRequired()])
