from rest_framework import serializers

from profiles.models import ProfileModel

from .models import ChatChannelModel, ChatMessageModel

class ChatChannelSerializer(serializers.ModelSerializer):

    members_id = serializers.ListField(child = serializers.IntegerField())

    class Meta:
        model = ChatChannelModel
        fields = ["members_id", "pk"]

    def validate_members_id(self, value):
        members_id: [int] = value
        if len(members_id) < 2:
            raise serializers.ValidationError('Not enought members to create the channel')
        if len(set(members_id)) != len(members_id):
            raise serializers.ValidationError('Same member')
        for member_id in members_id:
            if not ProfileModel.objects.filter(pk = member_id).exists():
                raise serializers.ValidationError(f"The profile {member_id} doesn't exists.")
        return members_id

class ChatMessageSerializer(serializers.Serializer):

    class Meta:
        model = ChatMessageModel
        fields = ["channel_id", "author_id", "content", "time"]
