from rest_framework import serializers
from api.property_api.state.models.state import State
from api.property_api.city.models.city import City
from api.property_api.property.serializers.property_serializer import PropertySerializer

class CitySerializer(serializers.ModelSerializer):
    id = serializers.ReadOnlyField()
    property_city = PropertySerializer(read_only=True,many=True)
    image_url = serializers.SerializerMethodField('get_image_url')

    class Meta:
        model = City
        fields = [
            'id', 'name', 'state',
            'is_active', 'created_at', 'updated_at',
            'created_by', 'updated_by', 'property_city', 'image','image_url'
        ]
        read_only_fields = ['id', 'created_at', 'updated_at','property_city','image_url']

    def get_image_url(self, obj):
        request = self.context.get("request")
        if obj.image and hasattr(obj.image, 'url'):
            return request.build_absolute_uri(obj.image.url)
        return None

    # def get_property_city(self, obj):
    #     properties = obj.property_city.all()
    #     return PropertySerializer(properties, many=True).data
    #     # return [prop for prop in obj.property_city.all()]
    
    # def get_property_ids(self, obj):
    #     return [prop.id for prop in obj.property_city.all()]


class CityDropdownSerializer(serializers.ModelSerializer):
    class Meta:
        model = City
        fields = ['id', 'name']
        read_only_fields = ['id']