habulaj commited on
Commit
36b1a05
·
verified ·
1 Parent(s): 3bd1455

Update routes/support.py

Browse files
Files changed (1) hide show
  1. routes/support.py +39 -12
routes/support.py CHANGED
@@ -87,7 +87,7 @@ async def get_user_tickets(
87
  ticket_created = parser.isoparse(ticket["created_at"])
88
  formatted_ticket_date = ticket_created.strftime("%m/%d/%Y")
89
 
90
- # Buscar a primeira mensagem (ordem crescente)
91
  async with session.get(
92
  f"{SUPABASE_URL}/rest/v1/messages_tickets?ticket_id=eq.{ticket_id}&order=created_at.asc&limit=1",
93
  headers=SUPABASE_ROLE_HEADERS
@@ -106,14 +106,22 @@ async def get_user_tickets(
106
 
107
  history = [f"Ticket created on {ticket_created.strftime('%m/%d/%Y, %I:%M %p')}"]
108
 
109
- # Verifica se houve resposta do suporte
110
- support_reply = next((m for m in all_messages if m["user"] != user_id), None)
111
- if support_reply:
112
- assigned_time = format_datetime(support_reply["created_at"])
113
 
114
- # Buscar nome do suporte
 
 
 
 
 
 
 
 
 
115
  async with session.get(
116
- f"{SUPABASE_URL}/rest/v1/User?id=eq.{support_reply['user']}",
117
  headers=SUPABASE_ROLE_HEADERS
118
  ) as user_resp:
119
  support_name = "Support"
@@ -121,17 +129,36 @@ async def get_user_tickets(
121
  user_data = await user_resp.json()
122
  if user_data:
123
  support_name = user_data[0].get("name", "Support")
 
124
 
125
- history.append(f"Assigned to {support_name} on {assigned_time}")
126
-
127
- # Última atualização (se não teve resposta de suporte)
128
- if not support_reply and all_messages:
129
  last_msg_time = format_datetime(all_messages[-1]["created_at"])
130
  history.append(f"Last updated on {last_msg_time}")
131
 
132
- ticket_data = dict(ticket) # cópia do ticket original
 
 
 
 
 
 
 
 
133
  ticket_data["formatted_date"] = formatted_ticket_date
134
 
 
 
 
 
 
 
 
 
 
 
 
 
135
  ticket_results.append({
136
  "ticket": ticket_data,
137
  "first_message": first_message,
 
87
  ticket_created = parser.isoparse(ticket["created_at"])
88
  formatted_ticket_date = ticket_created.strftime("%m/%d/%Y")
89
 
90
+ # Buscar a primeira mensagem
91
  async with session.get(
92
  f"{SUPABASE_URL}/rest/v1/messages_tickets?ticket_id=eq.{ticket_id}&order=created_at.asc&limit=1",
93
  headers=SUPABASE_ROLE_HEADERS
 
106
 
107
  history = [f"Ticket created on {ticket_created.strftime('%m/%d/%Y, %I:%M %p')}"]
108
 
109
+ # Histórico de suporte: detectar mudanças de suporte
110
+ assigned_support_ids = []
111
+ last_support_id = None
 
112
 
113
+ for msg in all_messages:
114
+ msg_user = msg["user"]
115
+ if msg_user != user_id:
116
+ if msg_user != last_support_id:
117
+ # Novo suporte respondendo
118
+ last_support_id = msg_user
119
+ assigned_support_ids.append((msg_user, msg["created_at"]))
120
+
121
+ # Para cada assigned, buscar o nome
122
+ for support_id, assigned_time in assigned_support_ids:
123
  async with session.get(
124
+ f"{SUPABASE_URL}/rest/v1/User?id=eq.{support_id}",
125
  headers=SUPABASE_ROLE_HEADERS
126
  ) as user_resp:
127
  support_name = "Support"
 
129
  user_data = await user_resp.json()
130
  if user_data:
131
  support_name = user_data[0].get("name", "Support")
132
+ history.append(f"Assigned to {support_name} on {format_datetime(assigned_time)}")
133
 
134
+ # Última atualização (se nenhum suporte respondeu)
135
+ if not assigned_support_ids and all_messages:
 
 
136
  last_msg_time = format_datetime(all_messages[-1]["created_at"])
137
  history.append(f"Last updated on {last_msg_time}")
138
 
139
+ # Se ticket está fechado, adicionar info
140
+ if ticket.get("finished"):
141
+ last_msg = all_messages[-1] if all_messages else None
142
+ if last_msg:
143
+ closed_time = format_datetime(last_msg["created_at"])
144
+ history.append(f"Ticket closed on {closed_time}")
145
+
146
+ # Enriquecer ticket com dados do suporte
147
+ ticket_data = dict(ticket)
148
  ticket_data["formatted_date"] = formatted_ticket_date
149
 
150
+ if ticket.get("support_id"):
151
+ async with session.get(
152
+ f"{SUPABASE_URL}/rest/v1/User?id=eq.{ticket['support_id']}",
153
+ headers=SUPABASE_ROLE_HEADERS
154
+ ) as support_resp:
155
+ if support_resp.status == 200:
156
+ support_data = await support_resp.json()
157
+ if support_data:
158
+ support_info = support_data[0]
159
+ ticket_data["support_name"] = support_info.get("name")
160
+ ticket_data["support_email"] = support_info.get("email")
161
+
162
  ticket_results.append({
163
  "ticket": ticket_data,
164
  "first_message": first_message,