from rest_framework import serializers
from api.producers_api.cart.models import Cart
from api.producers_api.cart.serializers.cart_item import CartItemSerializer

class CartSerializer(serializers.ModelSerializer):
    items = CartItemSerializer(many=True, read_only=True)
    total_items = serializers.SerializerMethodField()
    total_cart_price = serializers.SerializerMethodField()

    class Meta:
        model = Cart
        fields = ['id', 'user', 'items', 'total_items', 'total_cart_price']
        read_only_fields = ['user']

    def get_total_items(self, obj):
        return obj.items.count()

    def get_total_cart_price(self, obj):
        return sum(item.total_price for item in obj.items.all())