28 lines
1.1 KiB
Python
28 lines
1.1 KiB
Python
from fastapi import APIRouter, HTTPException, status
|
|
|
|
from app.schemas.booking import BookingRequestCreate, BookingRequestResponse
|
|
from app.services.mailer import MailConfigurationError, send_booking_request_email
|
|
|
|
|
|
router = APIRouter(prefix="/api", tags=["booking"])
|
|
|
|
|
|
@router.post("/booking-request", response_model=BookingRequestResponse)
|
|
def create_booking_request(payload: BookingRequestCreate) -> BookingRequestResponse:
|
|
try:
|
|
send_booking_request_email(payload)
|
|
except MailConfigurationError as exc:
|
|
raise HTTPException(
|
|
status_code=status.HTTP_503_SERVICE_UNAVAILABLE,
|
|
detail="Il servizio email non è ancora configurato.",
|
|
) from exc
|
|
except Exception as exc: # pragma: no cover - mail delivery path
|
|
raise HTTPException(
|
|
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
|
detail="Si è verificato un problema durante l'invio della richiesta.",
|
|
) from exc
|
|
|
|
return BookingRequestResponse(
|
|
message="La richiesta è stata inviata correttamente e sarà presa in carico al più presto dal team.",
|
|
)
|