from fastapi import APIRouter, Depends, status
from sqlalchemy.orm import Session

from app.database import get_db
from app.schemas import ContactMessageCreateRequest, ContactMessageOut, ContactMessageSubmitResponse
from app.services.contact_service import (
    create_contact_message,
    resolve_admin_notify_email,
    send_contact_confirmation_to_client,
    send_contact_message_to_admin,
)

router = APIRouter(tags=["contact"])


@router.post(
    "/contact/send-message",
    response_model=ContactMessageSubmitResponse,
    status_code=status.HTTP_201_CREATED,
    summary="Submit landing-page contact form (public)",
)
async def submit_contact_message(
    body: ContactMessageCreateRequest,
    db: Session = Depends(get_db),
):
    contact = create_contact_message(db, body)
    admin_email = resolve_admin_notify_email(db)
    await send_contact_message_to_admin(db, contact, admin_email=admin_email)
    client_notified = await send_contact_confirmation_to_client(contact)

    thank_you = "Thank you. Your message has been received."
    if client_notified:
        thank_you = (
            "Thank you. Your message has been received. "
            "A confirmation has been sent to your email."
        )

    return ContactMessageSubmitResponse(
        message=thank_you,
        contact=ContactMessageOut.model_validate(contact),
    )
