from flask_wtf import FlaskForm
from wtforms import StringField, SelectField, BooleanField
from wtforms.validators import DataRequired, Length, Optional


class ActionForm(FlaskForm):
    """Empty form used solely for CSRF protection on inline action buttons."""


class BillForm(FlaskForm):
    name = StringField("Bill Name", validators=[DataRequired(), Length(max=200)])
    amount = StringField("Amount ($)", validators=[DataRequired()])
    due_day = StringField("Due Day (1–31)", validators=[DataRequired()])
    payee = StringField("Payee", validators=[Optional(), Length(max=200)])
    category_id = SelectField("Category", coerce=int, validators=[Optional()])
    is_active = BooleanField("Active", default=True)


class DebtForm(FlaskForm):
    name = StringField("Debt Name", validators=[DataRequired(), Length(max=200)])
    current_balance = StringField("Current Balance ($)", validators=[DataRequired()])
    interest_rate = StringField("Interest Rate (%)", validators=[DataRequired()])
    min_payment = StringField("Minimum Payment ($)", validators=[DataRequired()])
    due_date = StringField("Due Date (YYYY-MM-DD)", validators=[Optional()])
