from django.db import models
from django.db.models import fields
from rest_framework import serializers
from campaign.models import Comment, Payment, Post,Reply,Donation,Category
from drf_writable_nested import WritableNestedModelSerializer



	

class PostSerializer(serializers.ModelSerializer):
	class Meta:
		model = Post
		fields = ['title','description','banner','target_amount','category','post_owner','post_type','expiry_date']

class PaymentSerializer(serializers.ModelSerializer):
	class Meta:
		model = Payment
		fields = '__all__'


class DonationSerializer(serializers.ModelSerializer):

	class Meta:
		model = Donation
		fields = '__all__'




class CategorySerializer(serializers.ModelSerializer):

	class Meta:
		model = Category
		fields = '__all__'

class ReplySerializer(serializers.ModelSerializer):
	first_name = serializers.CharField(source='user.first_name')
	last_name = serializers.CharField(source='user.last_name')

	class Meta:
		model = Reply
		fields = ['reply','comment','first_name','last_name','user']

class CommentSerializer(serializers.ModelSerializer):
	class Meta:
		model = Comment
		fields = ['id','post','comment','user','donation']
#Serializer for get post request

class nestedCommentSerializer(WritableNestedModelSerializer,serializers.ModelSerializer):
	replies = ReplySerializer(many=True)
	donation = serializers.StringRelatedField(source='donation.amount')
	first_name = serializers.CharField(source='user.first_name')
	last_name = serializers.CharField(source='user.last_name')
	class Meta:
		model = Comment
		fields = ['id','replies','post','comment','first_name','last_name','donation']

class getPostSerializer(WritableNestedModelSerializer,serializers.ModelSerializer):
	comment = nestedCommentSerializer(many=True)
	first_name = serializers.CharField(source='post_owner.first_name')
	last_name = serializers.CharField(source='post_owner.last_name')
	user_id = serializers.CharField(source='post_owner.id')

	class Meta:
		model = Post
		fields = ['id','user_id','title','description','banner','target_amount','expiry_date','category','post_status','created_time','post_type','first_name','last_name','comment']


class nestedAllCommentSerializer(WritableNestedModelSerializer,serializers.ModelSerializer):
	amount = serializers.StringRelatedField(source='donation.amount')
	class Meta:
		model = Comment
		fields = ['post','amount']

class getAllPostSerializer(WritableNestedModelSerializer,serializers.ModelSerializer):
	comment = nestedAllCommentSerializer(many=True)


	class Meta:
		model = Post
		fields = ['id','title','description','banner','target_amount','post_status','created_time','comment']


class allDonationSerializer(WritableNestedModelSerializer,serializers.ModelSerializer):
	donation = serializers.StringRelatedField(source='donation.amount')
	donation_date = serializers.StringRelatedField(source='donation.donation_date')
	first_name = serializers.CharField(source='user.first_name')
	last_name = serializers.CharField(source='user.last_name')
	profile_pic = serializers.ImageField(source='user.profile_pic')
	class Meta:
		model = Comment
		fields = ['id','first_name','last_name','profile_pic','donation','donation_date']
