# serializers.py
from rest_framework import serializers
from .models import ProductMaster, PackageMaster
from . import fetch_data

# class PackageDetailSerializer(serializers.ModelSerializer):
#     """Serializer for Package master"""
#     kg_per_packaging = serializers.IntegerField(required=False)
#     pack_tare_weight = serializers.IntegerField(required=False)
#     dimension = serializers.CharField(required=False)
#     nos_per_pallet = serializers.IntegerField(required=False)
#     pallet_weight = serializers.IntegerField(required=False)


# class ProductMasterSerializer(serializers.ModelSerializer):

#     # package_detail = PackageDetailSerializer(required=False)
#     cost_center_data = serializers.SerializerMethodField()


#     class Meta:
#         model = ProductMaster
#         fields = '__all__'

#     def to_representation(self, instance):
#         rep = super().to_representation(instance)
#         cost_center_data = rep.pop('cost_center_data')
#         if cost_center_data:
#             rep['CostCenterId'] = cost_center_data.get('id', None)

#         return rep

#     def get_cost_center_data(self, obj):
#         """function to return data of cost center"""

#         cost_center_code = obj.CostCenter
#         if cost_center_code:
#             cost_center_data = fetch_data.get_cost_center(cost_center_code)
#             return cost_center_data
#         else:
#             return ""


# class PackageDetailSerializer(serializers.ModelSerializer):
#     class Meta:
#         model = PackageMaster
#         fields = '__all__'
#         exclude = ['product']   # important


class ProductMasterSerializer(serializers.ModelSerializer):

    cost_center_data = serializers.SerializerMethodField()

    class Meta:
        model = ProductMaster
        fields = '__all__'

    def to_representation(self, instance):
        rep = super().to_representation(instance)
        cost_center_data = rep.pop('cost_center_data')
        if cost_center_data:
            rep['CostCenterId'] = cost_center_data.get('id', None)

        return rep

    def get_cost_center_data(self, obj):
        """function to return data of cost center"""

        cost_center_code = obj.CostCenter
        if cost_center_code:
            cost_center_data = fetch_data.get_cost_center(cost_center_code)
            return cost_center_data
        else:
            return ""