from rest_framework import serializers
from service_ownership.models.service_ownership import ServiceOwnership
from service.serializers.services_serializer import ServiceSerializer
from users.serializers.users_serializer import UserSerializer

class ServiceOwnershipSerializer(serializers.ModelSerializer):
    id = serializers.ReadOnlyField()
    # user = serializers.SlugRelatedField(slug_field='email', read_only=True)
    user = UserSerializer(read_only=True)
    service_name = serializers.SerializerMethodField()
    service_details = ServiceSerializer(source='service',read_only=True)

    class Meta:
        model = ServiceOwnership
        fields = ['id', 'user', 'service','service_details','service_name', 'service_status','supporting_document' 
        ]
        read_only_fields = ['id','user','service_details','service_name']

    def get_service_name(self, obj):
        return obj.service.name if hasattr(obj.service, "name") else str(obj.service)


    # def update(self, instance, validated_data):
    #     """
    #     Only allow updating service and service_status.
    #     All other fields remain unchanged.
    #     """
    #     instance.service = validated_data.get('service', instance.service)
    #     instance.service_status = validated_data.get('service_status', instance.service_status)
    #     instance.save()
    #     return instance

class ServiceOwnershipStatusSerializer(serializers.ModelSerializer):

    class Meta:
        model = ServiceOwnership
        fields = ['service','service_status']