from rest_framework import serializers
from job_category_list.models.job_category import JobCategory
from job_sub_category.serializers.job_sub_category_serializer import JobSubCategorySerializer

class JobCategorySerializer(serializers.ModelSerializer):
    id = serializers.ReadOnlyField()
    jobs_by_category = serializers.SerializerMethodField()
    icon_url_path = serializers.SerializerMethodField('get_image_url')
    job_sub_category = JobSubCategorySerializer(many=True,read_only=True)

    class Meta:
        model = JobCategory
        fields = ['id', 'title', 'icon_url','icon_url_path','jobs_by_category','job_sub_category'
        ]
        read_only_fields = ['id','job_sub_category']

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

# class YourSerializer(serializers.ModelSerializer)

#     count = serializers.SerializerMethodField('get_count')
#     class Meta:
#          model = YourModel
#          fields = ['...., count']

#     def get_count(self, obj):    
#         return YourModel.objects.all().count()