|
@@ -31,7 +31,13 @@ async def get_order_messages(order_id: int, user: dict = Depends(get_current_use
|
|
|
if role != 'admin':
|
|
if role != 'admin':
|
|
|
if order[0]['user_id'] != user_id: raise HTTPException(status_code=403, detail="Not authorized")
|
|
if order[0]['user_id'] != user_id: raise HTTPException(status_code=403, detail="Not authorized")
|
|
|
if not can_chat: raise HTTPException(status_code=403, detail="Chat access disabled for your account")
|
|
if not can_chat: raise HTTPException(status_code=403, detail="Chat access disabled for your account")
|
|
|
- messages = db.execute_query("SELECT id, is_from_admin, message, created_at FROM order_messages WHERE order_id = %s ORDER BY created_at ASC", (order_id,))
|
|
|
|
|
|
|
+ query = """
|
|
|
|
|
+ SELECT m.id, m.is_from_admin, m.message, m.created_at, u.first_name, u.email
|
|
|
|
|
+ FROM order_messages m
|
|
|
|
|
+ LEFT JOIN users u ON m.user_id = u.id
|
|
|
|
|
+ WHERE m.order_id = %s ORDER BY m.created_at ASC
|
|
|
|
|
+ """
|
|
|
|
|
+ messages = db.execute_query(query, (order_id,))
|
|
|
for msg in messages:
|
|
for msg in messages:
|
|
|
if msg.get('created_at'): msg['created_at'] = msg['created_at'].isoformat()
|
|
if msg.get('created_at'): msg['created_at'] = msg['created_at'].isoformat()
|
|
|
msg['is_from_admin'] = bool(msg['is_from_admin'])
|
|
msg['is_from_admin'] = bool(msg['is_from_admin'])
|
|
@@ -107,7 +113,19 @@ async def post_order_message(
|
|
|
query = "INSERT INTO order_messages (order_id, user_id, is_from_admin, message) VALUES (%s, %s, %s, %s)"
|
|
query = "INSERT INTO order_messages (order_id, user_id, is_from_admin, message) VALUES (%s, %s, %s, %s)"
|
|
|
msg_id = db.execute_commit(query, (order_id, user_id, is_admin, final_message))
|
|
msg_id = db.execute_commit(query, (order_id, user_id, is_admin, final_message))
|
|
|
now = datetime.datetime.utcnow().isoformat()
|
|
now = datetime.datetime.utcnow().isoformat()
|
|
|
- await manager.broadcast_to_order(order_id, {"id": msg_id, "is_from_admin": is_admin, "message": final_message, "created_at": now})
|
|
|
|
|
|
|
+
|
|
|
|
|
+ user_info = db.execute_query("SELECT first_name, email FROM users WHERE id = %s", (user_id,))
|
|
|
|
|
+ first_name = user_info[0]['first_name'] if user_info else None
|
|
|
|
|
+ email = user_info[0]['email'] if user_info else None
|
|
|
|
|
+
|
|
|
|
|
+ await manager.broadcast_to_order(order_id, {
|
|
|
|
|
+ "id": msg_id,
|
|
|
|
|
+ "is_from_admin": is_admin,
|
|
|
|
|
+ "message": final_message,
|
|
|
|
|
+ "created_at": now,
|
|
|
|
|
+ "first_name": first_name,
|
|
|
|
|
+ "email": email
|
|
|
|
|
+ })
|
|
|
|
|
|
|
|
if is_admin:
|
|
if is_admin:
|
|
|
await global_manager.notify_user(order[0]['user_id'])
|
|
await global_manager.notify_user(order[0]['user_id'])
|
|
@@ -117,4 +135,10 @@ async def post_order_message(
|
|
|
await global_manager.notify_admins_new_message(order_id, message or "Image uploaded")
|
|
await global_manager.notify_admins_new_message(order_id, message or "Image uploaded")
|
|
|
event_hooks.on_message_received(order_id, user_id, message or "Image uploaded")
|
|
event_hooks.on_message_received(order_id, user_id, message or "Image uploaded")
|
|
|
|
|
|
|
|
- return {"id": msg_id, "status": "sent", "message": final_message}
|
|
|
|
|
|
|
+ return {
|
|
|
|
|
+ "id": msg_id,
|
|
|
|
|
+ "status": "sent",
|
|
|
|
|
+ "message": final_message,
|
|
|
|
|
+ "first_name": first_name,
|
|
|
|
|
+ "email": email
|
|
|
|
|
+ }
|