from django.core.validators import MinValueValidator, MaxValueValidator
from rest_framework import serializers

from plan.models import AbstractUserPlan, UserPlan


class AbstractUserPlanListInputValidator(serializers.Serializer):
    skip = serializers.IntegerField(validators=[MinValueValidator(0)])
    take = serializers.IntegerField(
        validators=[MinValueValidator(1), MaxValueValidator(100)])


class AbstractUserPlanListSerializer(serializers.ModelSerializer):
    class Meta:
        model = AbstractUserPlan
        fields = ['id', 'name', 'duration', 'price', 'actual_price', 'wage_factor', 'tax_factor', 'min_wage_fee', 'max_institutes_per_user']


class UserPlanGetSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserPlan
        fields = ['name', 'start_date', 'end_date', 'purchased_price', 'wage_factor', 'tax_factor', 'min_wage_fee',
                  'max_institutes_per_user']


class AbstractUserPlanPurchaseInputValidator(serializers.Serializer):
    abstract_user_plan_id = serializers.IntegerField()
