from rest_framework import serializers
from customer.models import Radgroupreply
from customer.models import  Radusergroup
from customer.models import  InvoiceType
from customer.models import  InvoiceItems
from customer.models import Radcheck
from customer.models import BillingPlans
from customer.models import BillingHistory
from customer.models import BillingMerchant
from customer.models import Radacct
from customer.models import Operators
from django.contrib.auth.models import User
from .models import Payment
from .models import Userbillinfo
from .models import Nas
from .models import Radreply

class RadreplySerializer(serializers.ModelSerializer):

    class Meta:
        model=Radreply
        fields ='__all__'
class InvoiceTypeSerializer(serializers.ModelSerializer):

    class Meta:
        model=InvoiceType
        fields ='__all__'
        
class OperatorsSerializer(serializers.ModelSerializer):

    class Meta:
        model=Operators
        fields ='__all__'

class BillingMerchantSerializer(serializers.ModelSerializer):

    class Meta:
        model=BillingMerchant
        fields ='__all__'

class InvoiceItemsSerializer(serializers.ModelSerializer):

    class Meta:
        model=InvoiceItems
        fields ='__all__'


class RadacctSerializer(serializers.ModelSerializer):

    class Meta:
        model=Radacct
        fields ='__all__'

class BillingHistorySerializer(serializers.ModelSerializer):

    class Meta:
        model=BillingHistory
        fields ='__all__'

class BillingPlansSerializer(serializers.ModelSerializer):

    class Meta:
        model=BillingPlans
        fields ='__all__'

class NasSerializer(serializers.ModelSerializer):
    class Meta:
        model=Nas
        fields ='__all__'

class RadcheckSerializer(serializers.ModelSerializer):
    class Meta:
        model=Radcheck
        fields ='__all__'
class RadgroupreplySerializer(serializers.ModelSerializer):

    class Meta:
        model=Radgroupreply
        fields ='__all__'
class  RadacctSerializer(serializers.ModelSerializer):

    class Meta:
        model=Radacct
        fields ='__all__'
class  RadusergroupSerializer(serializers.ModelSerializer):

    class Meta:
        model=Radusergroup
        fields ='__all__'
class  PaymentSerializer(serializers.ModelSerializer):

    class Meta:
        model=Payment
        fields ='__all__'
        
class  UserbillinfoSerializer(serializers.ModelSerializer):

    class Meta:
        model=Userbillinfo
        fields ='__all__'

class  UserSerializer(serializers.ModelSerializer):
    id=serializers.IntegerField(read_only=True)
    password2=serializers.CharField(read_only=True)
    is_superuser = serializers.CharField(
        required=False, allow_null=True, allow_blank=True)
    class Meta:
        model=User
        fields =['id','email','username','password','password2','is_superuser']
        extra_kwargs={'password':{'write_only':True}}

        def save(self):
            AuthUser=AuthUser(
                email=self.validated_data['email'],
                username=self.validated_data['username'],
            )
            password=self.validated_data['password']
            password2=self.validated_data['password2']
            if password != password2:
                raise serializers.validationError(200)
            account.set_password(password)
            account.save()
