"""
Currency Serializers — API serialization.
"""
from rest_framework import serializers
from .models import Currency, ExchangeRate


class CurrencySerializer(serializers.ModelSerializer):
    class Meta:
        model = Currency
        fields = [
            "id", "code", "name", "name_en", "symbol",
            "decimal_places", "is_base", "is_active",
            "created_at", "updated_at",
        ]
        read_only_fields = ["created_at", "updated_at"]


class CurrencyCreateSerializer(serializers.ModelSerializer):
    class Meta:
        model = Currency
        fields = [
            "code", "name", "name_en", "symbol",
            "decimal_places", "is_base", "is_active",
        ]

    def validate_code(self, value):
        return value.upper()


class ExchangeRateSerializer(serializers.ModelSerializer):
    from_currency_code = serializers.CharField(
        source="from_currency.code", read_only=True
    )
    to_currency_code = serializers.CharField(
        source="to_currency.code", read_only=True
    )

    class Meta:
        model = ExchangeRate
        fields = [
            "id", "from_currency", "from_currency_code",
            "to_currency", "to_currency_code",
            "rate", "effective_date", "source",
            "created_at",
        ]
        read_only_fields = ["created_at"]
