habulaj commited on
Commit
7d7d966
·
verified ·
1 Parent(s): 2679872

Update routes/support.py

Browse files
Files changed (1) hide show
  1. routes/support.py +35 -11
routes/support.py CHANGED
@@ -1,6 +1,7 @@
1
  import os
2
  import logging
3
  import aiohttp
 
4
  import base64
5
 
6
  from fastapi import APIRouter, HTTPException, Header, Body
@@ -57,44 +58,67 @@ async def verify_user_token(user_token: str) -> str:
57
  class CreateTicketRequest(BaseModel):
58
  message: str
59
 
 
 
 
 
60
  @router.get("/ticket/user")
61
  async def get_user_tickets(
62
  user_token: str = Header(None, alias="User-key")
63
  ):
64
- # 1. Verificar o token e obter o user_id
65
  user_id = await verify_user_token(user_token)
66
 
67
  async with aiohttp.ClientSession() as session:
68
- # 2. Buscar os últimos 50 tickets do usuário autenticado
69
  async with session.get(
70
  f"{SUPABASE_URL}/rest/v1/Tickets?user_id=eq.{user_id}&order=created_at.desc&limit=50",
71
  headers=SUPABASE_ROLE_HEADERS
72
  ) as ticket_resp:
73
  if ticket_resp.status != 200:
74
  error_detail = await ticket_resp.text()
75
- raise HTTPException(status_code=500, detail=f"Erro ao buscar tickets: {error_detail}")
76
 
77
  tickets = await ticket_resp.json()
78
 
79
- # 3. Buscar última mensagem de cada ticket
80
  ticket_results = []
81
 
82
  for ticket in tickets:
83
  ticket_id = ticket["id"]
 
 
 
 
 
 
 
 
 
 
 
84
 
 
85
  async with session.get(
86
- f"{SUPABASE_URL}/rest/v1/messages_tickets?ticket_id=eq.{ticket_id}&order=created_at.desc&limit=1",
87
  headers=SUPABASE_ROLE_HEADERS
88
- ) as msg_resp:
89
- if msg_resp.status != 200:
90
- continue # ignora se houver erro ao buscar mensagem
 
 
 
 
 
 
 
91
 
92
- messages = await msg_resp.json()
93
- last_message = messages[0] if messages else None
 
 
94
 
95
  ticket_results.append({
96
  "ticket": ticket,
97
- "last_message": last_message
 
98
  })
99
 
100
  return ticket_results
 
1
  import os
2
  import logging
3
  import aiohttp
4
+ import pytz
5
  import base64
6
 
7
  from fastapi import APIRouter, HTTPException, Header, Body
 
58
  class CreateTicketRequest(BaseModel):
59
  message: str
60
 
61
+ def format_datetime(dt_str):
62
+ dt = datetime.fromisoformat(dt_str)
63
+ return dt.strftime("%m/%d/%Y, %H:%M")
64
+
65
  @router.get("/ticket/user")
66
  async def get_user_tickets(
67
  user_token: str = Header(None, alias="User-key")
68
  ):
 
69
  user_id = await verify_user_token(user_token)
70
 
71
  async with aiohttp.ClientSession() as session:
 
72
  async with session.get(
73
  f"{SUPABASE_URL}/rest/v1/Tickets?user_id=eq.{user_id}&order=created_at.desc&limit=50",
74
  headers=SUPABASE_ROLE_HEADERS
75
  ) as ticket_resp:
76
  if ticket_resp.status != 200:
77
  error_detail = await ticket_resp.text()
78
+ raise HTTPException(status_code=500, detail=f"Error fetching tickets: {error_detail}")
79
 
80
  tickets = await ticket_resp.json()
81
 
 
82
  ticket_results = []
83
 
84
  for ticket in tickets:
85
  ticket_id = ticket["id"]
86
+ ticket_created = format_datetime(ticket["created_at"])
87
+
88
+ # Buscar a primeira mensagem (ordem crescente)
89
+ async with session.get(
90
+ f"{SUPABASE_URL}/rest/v1/messages_tickets?ticket_id=eq.{ticket_id}&order=created_at.asc&limit=1",
91
+ headers=SUPABASE_ROLE_HEADERS
92
+ ) as first_msg_resp:
93
+ first_message = None
94
+ if first_msg_resp.status == 200:
95
+ messages = await first_msg_resp.json()
96
+ first_message = messages[0] if messages else None
97
 
98
+ # Buscar todas mensagens para histórico
99
  async with session.get(
100
+ f"{SUPABASE_URL}/rest/v1/messages_tickets?ticket_id=eq.{ticket_id}&order=created_at.asc",
101
  headers=SUPABASE_ROLE_HEADERS
102
+ ) as all_msg_resp:
103
+ all_messages = await all_msg_resp.json() if all_msg_resp.status == 200 else []
104
+
105
+ history = [f"Ticket created on {ticket_created}"]
106
+
107
+ # Verifica se houve resposta do suporte
108
+ support_reply = next((m for m in all_messages if m["user"] != user_id), None)
109
+ if support_reply:
110
+ assigned_time = format_datetime(support_reply["created_at"])
111
+ history.append(f"Assigned to Fernando J. on {assigned_time}")
112
 
113
+ # Última atualização (caso ainda não tenha resposta)
114
+ if not support_reply and all_messages:
115
+ last_msg_time = format_datetime(all_messages[-1]["created_at"])
116
+ history.append(f"Last updated on {last_msg_time}")
117
 
118
  ticket_results.append({
119
  "ticket": ticket,
120
+ "first_message": first_message,
121
+ "history": history
122
  })
123
 
124
  return ticket_results