"""Recipients: manual add, CSV/TXT import with validation & preview, lists management."""
import csv
import io
import secrets
from typing import List, Optional

from fastapi import APIRouter, Depends, File, Form, HTTPException, Request, UploadFile
from pydantic import BaseModel, EmailStr
from sqlalchemy import delete as sa_delete, select, func
from sqlalchemy.ext.asyncio import AsyncSession

from app.api.deps import get_current_user, get_db
from app.core.config import settings
from app.core.security import log_audit
from app.models import Recipient, RecipientList, SuppressionEntry, User
from app.services import recipient_service

router = APIRouter(prefix="/recipients", tags=["recipients"])


class ManualRecipient(BaseModel):
    email: EmailStr
    first_name: str = ""
    last_name: str = ""
    company_name: str = ""
    company_phone: str = ""
    customer_email: Optional[EmailStr] = None
    custom_fields: dict = {}


class ListCreate(BaseModel):
    name: str
    description: str = ""


def _rec_out(r: Recipient) -> dict:
    return {"id": r.id, "email": r.email, "first_name": r.first_name, "last_name": r.last_name,
            "company_name": r.company_name, "company_phone": r.company_phone,
            "customer_email": r.customer_email, "custom_fields": r.custom_fields or {},
            "status": r.status, "is_valid": r.is_valid, "validation_error": r.validation_error}
AttributeError: 'NoneType' object has no attribute 'model_dump'
