from rest_framework import serializers
from ads.models.ads import Ads
from user_ads_package.models.userpackage import UserPackage

class AdsSerializer(serializers.ModelSerializer):
    id = serializers.ReadOnlyField()
    user = serializers.PrimaryKeyRelatedField(read_only=True)
    # user = serializers.HiddenField(default=serializers.CurrentUserDefault())
    # image_url = serializers.SerializerMethodField()

    class Meta:
        model = Ads
        fields = ['id','user','banner_image','title','is_active']
        read_only_fields = ['id','user']

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

    def create(self, validated_data):
        request = self.context['request']
        user = request.user

        try:
            user_package = UserPackage.objects.get(user=user)
        except UserPackage.DoesNotExist:
            return serializers.ValidationError({"error":"You dont have an active package"})
        
        if user_package.ads_remaining() <= 0:
            raise serializers.ValidationError({"error": "No remaining ads in your package"})
        
        ad = Ads.objects.create(
            user=user,
            **validated_data
        )

        user_package.ads_posted += 1
        user_package.save()

        return ad