Files
ppr-ng/backend/app/api/endpoints/contact_requests.py
T
2026-06-21 17:45:31 -04:00

51 lines
1.7 KiB
Python

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()