from rest_framework import serializers

from apps.core.i18n import localized_field
from apps.stores.models import Category, PaymentMethod, Store, StoreBranch


class CategorySerializer(serializers.ModelSerializer):
    name = serializers.SerializerMethodField()

    class Meta:
        model = Category
        fields = ["id", "name", "name_en", "name_ar", "icon"]

    def get_name(self, obj):
        return localized_field(obj, "name")


class PaymentMethodSerializer(serializers.ModelSerializer):
    class Meta:
        model = PaymentMethod
        fields = ["id", "name", "icon"]


class StoreBranchSerializer(serializers.ModelSerializer):
    class Meta:
        model = StoreBranch
        fields = ["id", "address", "latitude", "longitude", "is_open", "open_hours"]


class StoreListSerializer(serializers.ModelSerializer):
    name = serializers.SerializerMethodField()
    categories = CategorySerializer(many=True, read_only=True)

    class Meta:
        model = Store
        fields = [
            "id", "name", "name_en", "name_ar", "logo", "cover",
            "rating", "rating_count", "is_top", "is_recommended",
            "has_deals", "supports_installments", "categories",
        ]

    def get_name(self, obj):
        return localized_field(obj, "name")
