from datetime import datetime, timezone from fastapi import APIRouter, Request from app.core.email import email_service from app.core.utils import get_client_ip from app.schemas.contact_request import ContactRequestCreate, ContactRequestReceipt router = APIRouter() CONTACT_REQUEST_RECIPIENT = "tower@swansea-airport.wales" @router.post("/public", response_model=ContactRequestReceipt) async def create_public_contact_request( contact_request: ContactRequestCreate, request: Request, ): submitted_at = datetime.now(timezone.utc) client_ip = get_client_ip(request) print( "Public contact request received " f"at={submitted_at.isoformat()} " f"type={contact_request.enquiry_type.value} " f"name={contact_request.name!r} " f"email={contact_request.email} " f"source={contact_request.source_page or '-'} " f"ip={client_ip}" ) await email_service.send_email( to_email=CONTACT_REQUEST_RECIPIENT, subject=f"Website contact: {contact_request.subject}", template_name="contact_request.html", reply_to=f"{contact_request.name} <{contact_request.email}>", template_vars={ "submitted_at": submitted_at.strftime("%Y-%m-%d %H:%M UTC"), "client_ip": client_ip, "name": contact_request.name, "email": contact_request.email, "phone": contact_request.phone, "enquiry_type": contact_request.enquiry_type.value, "subject": contact_request.subject, "message": contact_request.message, "source_page": contact_request.source_page, }, ) return ContactRequestReceipt()