from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SelectField, BooleanField, SelectMultipleField
from wtforms.validators import DataRequired, Optional, Length
from wtforms.widgets import ListWidget, CheckboxInput

from config import PAGE_PERMISSIONS

ROLE_CHOICES = [("salesperson", "فروشنده"), ("admin", "مدیر")]


class AccountForm(FlaskForm):
    username = StringField("نام کاربری", validators=[DataRequired(message="نام کاربری الزامی است")])
    full_name = StringField("نام کامل", validators=[DataRequired(message="نام کامل الزامی است")])
    password = PasswordField("رمز عبور", validators=[Optional(), Length(min=4, message="رمز عبور باید حداقل ۴ کاراکتر باشد")])
    role = SelectField("نقش", choices=ROLE_CHOICES)
    is_active = BooleanField("این حساب فعال است", default=True)
    permissions = SelectMultipleField(
        "دسترسی به صفحات",
        choices=[(key, label) for key, label in PAGE_PERMISSIONS],
        option_widget=CheckboxInput(),
        widget=ListWidget(prefix_label=False),
    )
