from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileAllowed, FileRequired
from wtforms import SelectField, StringField
from wtforms.validators import Optional


class UploadForm(FlaskForm):
    pdf_file = FileField(
        "Statement File (PDF or CSV/TSV)",
        validators=[FileRequired(), FileAllowed(["pdf", "csv", "tsv", "txt"], "PDF or CSV files only.")],
    )
    issuer_override = SelectField(
        "Issuer (leave blank for auto-detect)",
        choices=[
            ("", "Auto-detect"),
            ("chase",      "Chase"),
            ("bofa",       "Bank of America"),
            ("apple_card", "Apple Card"),
            ("kohls",      "Kohl's"),
            ("discover",   "Discover"),
            ("dcu",        "DCU Credit Union"),
            ("target",     "Target RedCard"),
        ],
        validators=[Optional()],
    )


class IssuerConfirmForm(FlaskForm):
    issuer = SelectField(
        "Confirm Issuer",
        choices=[
            ("chase",      "Chase"),
            ("bofa",       "Bank of America"),
            ("apple_card", "Apple Card"),
            ("kohls",      "Kohl's"),
            ("discover",   "Discover"),
            ("dcu",        "DCU Credit Union"),
            ("target",     "Target RedCard"),
        ],
    )


class ReviewActionForm(FlaskForm):
    """CSRF protection for inline edits and commit action on the review page."""
