codenexus / routers /support.py
farhan1221's picture
Upload 26 files
91990f9 verified
Raw
History Blame Contribute Delete
1.77 kB
from fastapi import APIRouter, HTTPException, Request
from config.database import get_supabase_admin
from middleware.auth_guard import get_current_user_optional
from models.support import SupportTicket, TicketReply
from services.email import send_support_notification_to_admin, send_support_confirmation_to_user
router = APIRouter(prefix="/api/support", tags=["support"])
ADMIN_EMAIL = "admin@codenexus.qzz.io"
@router.post("/ticket")
async def submit_ticket(data: SupportTicket, request: Request):
user = await get_current_user_optional(request)
db = get_supabase_admin()
ticket = {
"user_email": data.user_email,
"category": data.category,
"message": data.message,
"status": "open",
}
if data.screenshot_url:
ticket["screenshot_url"] = data.screenshot_url
if user:
ticket["user_id"] = str(user.id)
result = db.table("support_tickets").insert(ticket).execute()
# Send emails (non-blocking — don't fail ticket if email fails)
try:
await send_support_notification_to_admin(ADMIN_EMAIL, data.user_email, data.category, data.message)
await send_support_confirmation_to_user(data.user_email, data.category)
except Exception:
pass
return {"message": "Ticket submitted successfully", "id": result.data[0]["id"] if result.data else None}
@router.post("/feedback")
async def submit_feedback(request: Request):
body = await request.json()
analysis_id = body.get("analysis_id")
helpful = body.get("helpful", True)
db = get_supabase_admin()
if analysis_id:
db.table("analyses").update({"feedback": "helpful" if helpful else "not_helpful"}).eq("id", analysis_id).execute()
return {"message": "Feedback recorded"}