import json
from channels.generic.websocket import WebsocketConsumer
from asgiref.sync import async_to_sync
from .models import Message, Auctionlog, User, Profiles

class Chating(WebsocketConsumer):
    def connect(self):
        async_to_sync(self.channel_layer.group_add)(
            "chat_group", self.channel_name
        )
        self.accept()
    
    def disconnect(self, code):
        async_to_sync(self.channel_layer.group_discard)(
            "chat_group", self.channel_name
        )
    
    

    def receive(self, text_data=None, bytes_data=None):
        data = json.loads(text_data)
        msg = data["message"]
        user_id = data["user_id"]

        user = data["user"]
        enid = data["enid"]
        # Store message in the database
        message = Message.objects.get(username=user,enq_id_id=enid)
        existing_amount = float(message.message) if message.message else 0
        # existing_amount = int(message.message) if message.message else 0
        
        updated_amount = existing_amount - (existing_amount * float(msg) / 100)
        

        
        # message.message = str(int(updated_amount)) 
        message.message = str(round(updated_amount, 2))
        message.username = user
        message.enq_id_id = enid
        message.save()


        company = Auctionlog.objects.create(
                percentage= msg,
                # message = str(int(updated_amount)),
                message = str(round(updated_amount, 2)), # <-- இங்கே மாற்றம்
                username = user,
                enq_id_id = enid


            )
        company.save()







        # Message.objects.create(message=msg,username=user,enq_id_id=enid)
        async_to_sync(self.channel_layer.group_send)(
            "chat_group", {
                "type": "chat_message",
                "message": msg,
                "user": user,
                "enid": enid,
                "user_id": user_id,


            }
        )

    



    def chat_message(self, event):
        msg = event["message"]
        user = event["user"]
        user_id = event["user_id"]

        enid = event["enid"]   # 👈 get enid here


        

        if user_id:   # if company vendor logged in
            try:
                logged_profile = Profiles.objects.get(user_id=user_id)
            except Profiles.DoesNotExist:
                pass

       


    


        
       

        data = []
        company = Message.objects.filter(enq_id_id=enid).order_by('-message')

        for i in company:
            pe = User.objects.get(id=i.created_by_id)

            
            
            
            username = pe.username


                    








                


            


            


           
            




            data.append({
                'username': username,
                'message': i.message,
                'total': i.total,
                'sto': i.status,
                'enq_id_id': i.enq_id_id,
                'created_by_id': i.created_by_id
            })




        print(user_id,'dsfdsfdsfdsfdsfdsfdsfdsfdsf')

        self.send(text_data=json.dumps({
            "message": msg,
            "user": user,
            "auctions": data
        }))



