habulaj commited on
Commit
5aac306
·
verified ·
1 Parent(s): d53aa23

Update routes/support.py

Browse files
Files changed (1) hide show
  1. routes/support.py +68 -0
routes/support.py CHANGED
@@ -57,6 +57,74 @@ async def verify_user_token(user_token: str) -> str:
57
  class CreateTicketRequest(BaseModel):
58
  message: str
59
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
 
61
  @router.post("/ticket/create")
62
  async def create_ticket(
 
57
  class CreateTicketRequest(BaseModel):
58
  message: str
59
 
60
+ @router.get("/ticket/user")
61
+ async def get_user_tickets(user_id: str):
62
+ async with aiohttp.ClientSession() as session:
63
+ # 1. Buscar os últimos 50 tickets do usuário
64
+ async with session.get(
65
+ f"{SUPABASE_URL}/rest/v1/Tickets?user_id=eq.{user_id}&order=created_at.desc&limit=50",
66
+ headers=SUPABASE_ROLE_HEADERS
67
+ ) as ticket_resp:
68
+ if ticket_resp.status != 200:
69
+ error_detail = await ticket_resp.text()
70
+ raise HTTPException(status_code=500, detail=f"Erro ao buscar tickets: {error_detail}")
71
+
72
+ tickets = await ticket_resp.json()
73
+
74
+ # 2. Para cada ticket, buscar a última mensagem
75
+ ticket_results = []
76
+
77
+ for ticket in tickets:
78
+ ticket_id = ticket["id"]
79
+
80
+ async with session.get(
81
+ f"{SUPABASE_URL}/rest/v1/messages_tickets?ticket_id=eq.{ticket_id}&order=created_at.desc&limit=1",
82
+ headers=SUPABASE_ROLE_HEADERS
83
+ ) as msg_resp:
84
+ if msg_resp.status != 200:
85
+ continue # apenas ignora caso erro
86
+
87
+ messages = await msg_resp.json()
88
+ last_message = messages[0] if messages else None
89
+
90
+ ticket_results.append({
91
+ "ticket": ticket,
92
+ "last_message": last_message
93
+ })
94
+
95
+ return ticket_results
96
+
97
+ @router.get("/ticket/detail")
98
+ async def get_ticket_details(ticket_id: int):
99
+ async with aiohttp.ClientSession() as session:
100
+ # 1. Buscar ticket
101
+ async with session.get(
102
+ f"{SUPABASE_URL}/rest/v1/Tickets?id=eq.{ticket_id}",
103
+ headers=SUPABASE_ROLE_HEADERS
104
+ ) as ticket_resp:
105
+ if ticket_resp.status != 200:
106
+ raise HTTPException(status_code=404, detail="Ticket não encontrado")
107
+
108
+ ticket_data = await ticket_resp.json()
109
+ if not ticket_data:
110
+ raise HTTPException(status_code=404, detail="Ticket inexistente")
111
+
112
+ ticket = ticket_data[0]
113
+
114
+ # 2. Buscar últimas 50 mensagens
115
+ async with session.get(
116
+ f"{SUPABASE_URL}/rest/v1/messages_tickets?ticket_id=eq.{ticket_id}&order=created_at.desc&limit=50",
117
+ headers=SUPABASE_ROLE_HEADERS
118
+ ) as msg_resp:
119
+ if msg_resp.status != 200:
120
+ raise HTTPException(status_code=500, detail="Erro ao buscar mensagens")
121
+
122
+ messages = await msg_resp.json()
123
+
124
+ return {
125
+ "ticket": ticket,
126
+ "messages": messages
127
+ }
128
 
129
  @router.post("/ticket/create")
130
  async def create_ticket(