from fastapi import APIRouter, HTTPException, status, Depends from sqlalchemy.orm import Session from core.database import get_db from schemas.contactform import ContactFormCreate, ContactFormSchema from helpers.contactform_helpers import create_contact_form, validate_contact_form_data, send_notification_email router = APIRouter() @router.post("/email", status_code=status.HTTP_201_CREATED, response_model=ContactFormSchema) async def submit_contact_form( contact_form: ContactFormCreate, db: Session = Depends(get_db) ): """ Submit a contact form with name, email, and message. All fields are required and email must be in valid format. """ # Validate form data errors = validate_contact_form_data( name=contact_form.name, email=contact_form.email, message=contact_form.message ) # If validation errors exist, return 400 with specific error messages if errors: raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, detail=errors ) # Create the contact form in the database db_contact_form = create_contact_form(db=db, contact_form=contact_form) # Send notification email (this could be moved to a background task) send_notification_email(contact_form=db_contact_form) return db_contact_form