from rest_framework import serializers
from .models import Event


class EventSerializer(serializers.ModelSerializer):
    department_name = serializers.CharField(
        source='department.name', read_only=True
    )
    is_upcoming = serializers.BooleanField(read_only=True)
    duration = serializers.CharField(read_only=True)
    poster_url = serializers.SerializerMethodField()

    class Meta:
        model = Event
        fields = [
            'id', 'title', 'description', 'event_type',
            'location', 'start_date', 'end_date', 'organizer',
            'department', 'department_name', 'poster', 'poster_url',
            'is_active', 'is_upcoming', 'duration', 'created_at',
        ]
        read_only_fields = ['id', 'created_at', 'poster_url']

    def get_poster_url(self, obj):
        request = self.context.get('request')
        if obj.poster:
            if request:
                return request.build_absolute_uri(obj.poster.url)
            return obj.poster.url
        return None