Update routes/support.py
Browse files- 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
|
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 |
-
#
|
110 |
-
|
111 |
-
|
112 |
-
assigned_time = format_datetime(support_reply["created_at"])
|
113 |
|
114 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
async with session.get(
|
116 |
-
f"{SUPABASE_URL}/rest/v1/User?id=eq.{
|
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 |
-
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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,
|