from datetime import timedelta
from django.shortcuts import render
from django.utils import timezone
from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import AllowAny, IsAuthenticated
from campaign.serializers import CommentSerializer, ReplySerializer,DonationSerializer
from rest_framework.response import Response
from .models import *



# Create your views here.


@api_view(['POST'])
@permission_classes([IsAuthenticated])
def reply(request):
    data = request.data.copy()
    data['user'] = request.user.id
    data['first_name'] = request.user.first_name
    data['last_name'] = request.user.last_name
    serializer = ReplySerializer(data=data)

    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data)
    else:
        return Response(serializer.errors)
    
    
@api_view(['POST'])
@permission_classes([AllowAny])
def donate(request):
    if request.user.is_anonymous:
        data=request.data.copy()
        data['user'] = list(User.objects.filter(email='anonymous@cashelp.org').values_list('id'))[0][0]   
        donationSerializer = DonationSerializer(data=data)
        if donationSerializer.is_valid():
            donationSerializer.save()
            data['donation'] = donationSerializer.data.get('id')
            commentSerializer = CommentSerializer(data=data)
            if commentSerializer.is_valid():
                commentSerializer.save()
            else:
                return Response(commentSerializer.errors)
            result = commentSerializer.data.copy()
            temp = donationSerializer.data.copy()
            result['first_name'] = list(User.objects.filter(email='anonymous@cashelp.org').values_list('first_name'))[0][0]
            result['last_name'] = list(User.objects.filter(email='anonymous@cashelp.org').values_list('last_name'))[0][0]
            result['donation'] = temp['amount']
            del result['user']
            return Response(result)
        else:
            return Response(donationSerializer.errors)
    else:
        data=request.data.copy()
        data['user'] = request.user.id    
        donationSerializer = DonationSerializer(data=data)
        if donationSerializer.is_valid():
            donationSerializer.save()
            data['donation'] = donationSerializer.data.get('id')
            commentSerializer = CommentSerializer(data=data)
            if commentSerializer.is_valid():
                commentSerializer.save()
            else:
                return Response(commentSerializer.errors)
            result = commentSerializer.data.copy()
            temp = donationSerializer.data.copy()
            result['first_name'] = request.user.first_name
            result['last_name'] = request.user.last_name
            result['donation'] = temp['amount']
            del result['user']
            return Response(result)
        else:
            return Response(donationSerializer.errors)

@api_view(['POST'])
@permission_classes([IsAuthenticated])
def comment(request):
    data=request.data.copy()
    data['user'] = request.user.id
    commentSerializer = CommentSerializer(data=data)
    if commentSerializer.is_valid():
        commentSerializer.save()
        temp = commentSerializer.data.copy() 
        temp['first_name'] = request.user.first_name
        temp['last_name'] = request.user.last_name
        return Response(temp)
    else:
        return Response(commentSerializer.errors)

@api_view(['POST'])
@permission_classes([IsAuthenticated])
def closeCampaign(request,pk):
    Post.objects.filter(id=pk).update(post_status='closed')
    return Response({"response":"success"})