File size: 1,770 Bytes
91990f9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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"}