# consumers.py
import json
from channels.generic.websocket import AsyncWebsocketConsumer

class OrderConsumer(AsyncWebsocketConsumer):
    async def connect(self):
        # Optional: you can accept only admins/staff here
        # if not self.scope["user"].is_authenticated or not self.scope["user"].is_staff:
        #     await self.close()
        #     return

        await self.channel_layer.group_add("orders", self.channel_name)
        await self.accept()

    async def disconnect(self, close_code):
        await self.channel_layer.group_discard("orders", self.channel_name)

    async def order_created(self, event):
        # event["data"] already contains serialized order
        await self.send(text_data=json.dumps({
            "type": "new_order",                  # ← very important for frontend
            "order": event["data"],
            "timestamp": str(event.get("timestamp", "")),
        }))