from rest_framework import serializers
from authentication.models import Users, Roles, AuthTypes, UserRoles, UserAuthTypes, Otp

class RolesSerializer(serializers.ModelSerializer):
    class Meta:
        model = Roles
        fields = '__all__'

class AuthTypesSerializer(serializers.ModelSerializer):
    class Meta:
        model = AuthTypes
        fields = '__all__'

class UsersSerializer(serializers.ModelSerializer):
    roles = serializers.SerializerMethodField()

    class Meta:
        model = Users
        fields = '__all__'

    def get_roles(self, obj):
        user_roles = UserRoles.objects.filter(user=obj)
        return [user_role.role.name for user_role in user_roles]

class ProfileSerializer(serializers.ModelSerializer):
    roles = serializers.SerializerMethodField()

    class Meta:
        model = Users
        fields = ('roles', 'imgContentId','email','phone','isPhoneVerified','firstName','middleName','lastName','sex','birthday','country','city','address','language','zipcode')
    
    def get_roles(self, obj):
        user_roles = UserRoles.objects.filter(user=obj)
        return [user_role.role.name for user_role in user_roles]
        
class UserRolesSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserRoles
        fields = '__all__'

class UserAuthTypesSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserAuthTypes
        fields = '__all__'

class OtpSerializer(serializers.ModelSerializer):
    class Meta:
        model = Otp
        fields = '__all__'