from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileAllowed
from wtforms import StringField, SelectField, TextAreaField
from wtforms.validators import DataRequired, Optional, Length

from app.services.customer_service import STATUS_CHOICES, GENDER_CHOICES, HOW_FOUND_CHOICES


class CustomerForm(FlaskForm):
    first_name = StringField("نام", validators=[DataRequired(message="نام الزامی است")])
    last_name = StringField("نام خانوادگی", validators=[DataRequired(message="نام خانوادگی الزامی است")])
    city = StringField("شهر", validators=[Optional()])
    gender = SelectField("جنسیت", choices=GENDER_CHOICES)
    landline_phone = StringField("تلفن ثابت", validators=[Optional()])
    mobile_phone = StringField("شماره موبایل", validators=[Optional()])
    birth_date = StringField("تاریخ تولد", validators=[Optional()])  # شمسی، مثال 1370/06/15
    customer_code = StringField("کد مشتری", validators=[Optional()])
    referrer_text = StringField("معرف", validators=[Optional()])
    how_found = StringField("نحوه آشنایی", validators=[Optional()])
    instagram_id = StringField("اینستاگرام", validators=[Optional()])
    status = SelectField("وضعیت", choices=STATUS_CHOICES)
    address = TextAreaField("آدرس", validators=[Optional()])
    description = TextAreaField("توضیحات", validators=[Optional()])
    photo = FileField("عکس مشتری", validators=[Optional(), FileAllowed(["jpg", "jpeg", "png", "webp"], "فقط تصویر مجاز است")])
