from rest_framework import serializers
from .models import Booking


class BookingSerializer(serializers.ModelSerializer):
    """Booking Serializer"""
    place_name = serializers.CharField(source='place.name', read_only=True)
    user_name = serializers.CharField(source='user.username', read_only=True)
    
    class Meta:
        model = Booking
        fields = ['id', 'place', 'place_name', 'user', 'user_name', 'type', 'date', 'time',
                  'number_of_guests', 'special_requests', 'status', 'created_at', 'updated_at']
        read_only_fields = ['id', 'user', 'created_at', 'updated_at']
    
    def create(self, validated_data):
        validated_data['user'] = self.context['request'].user
        return super().create(validated_data)


class BookingCreateSerializer(serializers.ModelSerializer):
    """Booking Create Serializer"""
    class Meta:
        model = Booking
        fields = ['place', 'type', 'date', 'time', 'number_of_guests', 'special_requests']
    
    def create(self, validated_data):
        validated_data['user'] = self.context['request'].user
        return super().create(validated_data)

