from django.contrib.auth import get_user_model
from rest_framework import serializers
from apps.companies.models import Company
from apps.permissions.models import UserCompanyRole


User = get_user_model()


class UserMembershipCompanySerializer(serializers.ModelSerializer):

    class Meta:
        model = Company
        fields = (
            "id",
            "name",
            "company_type",
            "is_active",
        )


class UserDealershipsSerializer(serializers.ModelSerializer):

    admin_role = serializers.SerializerMethodField()
    owner = serializers.BooleanField(read_only=True)

    class Meta:
        model = Company
        fields = (
            "id",
            "name",
            "owner",
            "admin_role",
        )

    def get_admin_role(self, obj):
        return MembershipDetailSerializer(obj.user_roles.filter(
            is_active=True,
            role__isnull=False,
        ).first(), ).data

class MembershipDetailSerializer(serializers.ModelSerializer):
    role_id = serializers.IntegerField(source="role.id", read_only=True)
    role_name = serializers.CharField(source="role.name", read_only=True)

    class Meta:
        model = UserCompanyRole
        fields = (
            "role_id",
            "role_name",
        )
