from rest_framework import serializers from core.apps.evaluation.models.bonus import BonusCategory, EmployeeBonus, BaseValueBonus class BaseBonusSerializer(serializers.ModelSerializer): class Meta: model = BaseValueBonus fields = ['id', 'base_price'] def create(self, validated_data): if BaseValueBonus.objects.exists(): raise serializers.ValidationError("Base bonus already exists") return super().create(validated_data) class BonusCategorySerializer(serializers.ModelSerializer): class Meta: model = BonusCategory fields = ['name', 'category', 'percentage'] class BonusCategoryListSerializer(serializers.ModelSerializer): price = serializers.DecimalField(max_digits=12, decimal_places=2) class Meta: model = BonusCategory fields = ['id', 'name', 'category', 'percentage' , 'price'] def get_price(self, obj): base_obj = BaseValueBonus.objects.first() if not base_obj: return 0 return (base_obj.base_price * obj.percentage) / 100 class BonusEmployeeBonusSerializer(serializers.ModelSerializer): class Meta: model = EmployeeBonus fields = ['user', 'bonus_type', 'percentage'] class EmployeeBonusListSerializer(serializers.ModelSerializer): price = serializers.DecimalField(max_digits=12, decimal_places=2) class Meta: model = EmployeeBonus fields = ['id', 'user', 'bonus_type', 'percentage' , 'price'] def get_price(self, obj): base_obj = BaseValueBonus.objects.first() if not base_obj: return 0 return (base_obj.base_price * obj.percentage) / 100