from operator import mod
from django.contrib.auth.models import User
from rest_framework import serializers

from . import models

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('username', 'email', 'first_name', 'last_name')

class ConsumerCreateSerializer(serializers.ModelSerializer):
    password = serializers.CharField(write_only=True)

    def create(self, validated_data):
        user = User.objects.create_user(**validated_data)
        user.set_password(validated_data['password'])
        user.save()

        consumer = models.Consumer.objects.create(user=user)
        consumer.save()

        return user
    
    class Meta:
        model = models.User
        fields = ('username', 'password', 'email', 'first_name', 'last_name')

class FoundationSerializer(serializers.ModelSerializer):
    user = UserSerializer()

    class Meta:
        model = models.Foundation
        fields = ('user', 'name', 'description')


class ConsumerOrderSerializer(serializers.ModelSerializer):
    foundation = FoundationSerializer()

    class Meta:
        model = models.FoundationOrder
        fields = ('price', 'uuid', 'foundation')


class ConsumerSerializer(serializers.ModelSerializer):
    user = UserSerializer()

    class Meta:
        model = models.Consumer
        fields = ('user', 'access_token', 'foundation_orders')

class FoundationOrderSerializer(serializers.ModelSerializer):
    consumer = ConsumerSerializer()

    class Meta:
        model = models.FoundationOrder
        fields = ('price', 'uuid', 'consumer')

class FoundationOrderCreateSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.FoundationOrder
        fields = ('price', 'uuid', 'foundation')