habulaj commited on
Commit
2d4575b
·
verified ·
1 Parent(s): 55416c9

Update routes/support.py

Browse files
Files changed (1) hide show
  1. routes/support.py +43 -39
routes/support.py CHANGED
@@ -97,7 +97,7 @@ async def get_user_tickets(user_id: str):
97
  @router.get("/ticket/detail")
98
  async def get_ticket_details(ticket_id: int):
99
  async with aiohttp.ClientSession() as session:
100
- # 1. Buscar o ticket
101
  async with session.get(
102
  f"{SUPABASE_URL}/rest/v1/Tickets?id=eq.{ticket_id}",
103
  headers=SUPABASE_ROLE_HEADERS
@@ -111,7 +111,7 @@ async def get_ticket_details(ticket_id: int):
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
@@ -119,48 +119,52 @@ async def get_ticket_details(ticket_id: int):
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
- # 3. Enriquecer as mensagens com dados dos usuários
125
- unique_user_ids = list(set(msg["user"] for msg in messages))
126
-
127
- # Buscar dados dos usuários únicos
128
- user_data_map = {}
129
- for user_id in unique_user_ids:
130
- async with session.get(
131
- f"{SUPABASE_URL}/rest/v1/User?id=eq.{user_id}",
132
- headers=SUPABASE_ROLE_HEADERS
133
- ) as user_resp:
134
- if user_resp.status != 200:
135
- continue
136
-
137
- user_data = await user_resp.json()
138
- if not user_data:
139
- continue
140
-
141
- user_info = user_data[0]
142
- user_data_map[user_id] = {
143
- "name": user_info.get("name"),
144
- "avatar": user_info.get("avatar_url"),
145
- "type": user_info.get("type", "cliente") # 'cliente' ou 'suporte'
146
- }
147
-
148
- # Substituir campo "user" nas mensagens pelo objeto enriquecido
149
- enriched_messages = []
150
- for msg in messages:
151
- user_info = user_data_map.get(msg["user"], {
152
- "name": None,
153
- "avatar": None,
154
- "type": "desconhecido"
155
- })
156
- enriched_messages.append({
157
  **msg,
158
- "user": user_info
 
 
 
 
 
159
  })
160
 
161
  return {
162
  "ticket": ticket,
163
- "messages": enriched_messages
164
  }
165
 
166
  @router.post("/ticket/create")
 
97
  @router.get("/ticket/detail")
98
  async def get_ticket_details(ticket_id: int):
99
  async with aiohttp.ClientSession() as session:
100
+ # 1. Buscar dados do ticket
101
  async with session.get(
102
  f"{SUPABASE_URL}/rest/v1/Tickets?id=eq.{ticket_id}",
103
  headers=SUPABASE_ROLE_HEADERS
 
111
 
112
  ticket = ticket_data[0]
113
 
114
+ # 2. Buscar as 50 últimas 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
 
119
  if msg_resp.status != 200:
120
  raise HTTPException(status_code=500, detail="Erro ao buscar mensagens")
121
 
122
+ messages_raw = await msg_resp.json()
123
+
124
+ # 3. Buscar info dos usuários das mensagens
125
+ user_cache = {}
126
+
127
+ for msg in messages_raw:
128
+ user_id = msg["user"]
129
+ if user_id not in user_cache:
130
+ async with session.get(
131
+ f"{SUPABASE_URL}/rest/v1/User?id=eq.{user_id}",
132
+ headers=SUPABASE_ROLE_HEADERS
133
+ ) as user_resp:
134
+ if user_resp.status == 200:
135
+ user_data = await user_resp.json()
136
+ if user_data:
137
+ u = user_data[0]
138
+ user_cache[user_id] = {
139
+ "id": u["id"],
140
+ "name": u.get("name", "Desconhecido"),
141
+ "avatar": u.get("avatar", None),
142
+ "type": "support" if u.get("role") == "admin" else "customer"
143
+ }
144
+ else:
145
+ user_cache[user_id] = {
146
+ "id": user_id,
147
+ "name": "Desconhecido",
148
+ "avatar": None,
149
+ "type": "unknown"
150
+ }
151
+
152
+ # 4. Substituir o campo user nas mensagens
153
+ messages = []
154
+ for msg in messages_raw:
155
+ messages.append({
 
156
  **msg,
157
+ "user": user_cache.get(msg["user"], {
158
+ "id": msg["user"],
159
+ "name": "Desconhecido",
160
+ "avatar": None,
161
+ "type": "unknown"
162
+ })
163
  })
164
 
165
  return {
166
  "ticket": ticket,
167
+ "messages": messages
168
  }
169
 
170
  @router.post("/ticket/create")