from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session from typing import Dict, Any from core.database import get_db from schemas.contactform import ContactFormCreate, ContactFormSchema from helpers.contactform_helpers import ( validate_contact_form_data, create_contact_form, format_validation_error_response, send_notification_email ) router = APIRouter() @router.post("/email3", status_code=status.HTTP_201_CREATED, response_model=Dict[str, Any]) async def submit_contact_form( form_data: ContactFormCreate, db: Session = Depends(get_db) ): """ Handle contact form submissions with validation for required fields and email format. """ # Validate form data validation_errors = validate_contact_form_data(form_data.dict()) if validation_errors: error_response = format_validation_error_response(validation_errors) raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, detail=error_response ) # Save to database contact_form = create_contact_form(db=db, form_data=form_data) # Convert to schema for email notification contact_form_schema = ContactFormSchema.from_orm(contact_form) # Send notification email send_notification_email(contact_form_schema) return { "status": "success", "message": "Contact form submitted successfully", "data": ContactFormSchema.from_orm(contact_form) }