43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
"""انتهای فرمها — ثبت پیام تماس و عضویت در خبرنامه."""
|
|
|
|
from fastapi import APIRouter, Depends
|
|
from sqlalchemy.orm import Session
|
|
|
|
from ..database import get_db
|
|
from .. import models
|
|
from ..schemas import ContactIn, ContactMessageOut, NewsletterIn, SubscriberOut
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.post("/contact", response_model=ContactMessageOut, status_code=201)
|
|
def submit_contact(payload: ContactIn, db: Session = Depends(get_db)):
|
|
message = models.ContactMessage(
|
|
name=payload.name.strip(),
|
|
phone=payload.phone.strip(),
|
|
note=payload.note.strip(),
|
|
)
|
|
db.add(message)
|
|
db.commit()
|
|
db.refresh(message)
|
|
return message
|
|
|
|
|
|
@router.post("/newsletter", response_model=SubscriberOut, status_code=201)
|
|
def subscribe(payload: NewsletterIn, db: Session = Depends(get_db)):
|
|
email = str(payload.email).lower()
|
|
subscriber = db.query(models.Subscriber).filter(models.Subscriber.email == email).first()
|
|
|
|
if subscriber is not None:
|
|
if not subscriber.is_active:
|
|
subscriber.is_active = True
|
|
db.commit()
|
|
db.refresh(subscriber)
|
|
return subscriber
|
|
|
|
subscriber = models.Subscriber(email=email)
|
|
db.add(subscriber)
|
|
db.commit()
|
|
db.refresh(subscriber)
|
|
return subscriber
|