from django.core.mail import send_mail
from rest_framework import status
from rest_framework.response import Response
from rest_framework.views import APIView
from authentication.serializers import SendCodeSerializer, VerifyCodeSerializer, EmailSerializer
from dotenv import load_dotenv
load_dotenv()
import os 

class SendCodeView(APIView):
    def post(self, request, *args, **kwargs):
        serializer = SendCodeSerializer(data=request.data)
        if serializer.is_valid():
            code_confirmation_instance = serializer.save()
            return Response({'message': 'Code generated successfully'}, status=status.HTTP_200_OK)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)


class VerifyCodeView(APIView):
    def post(self, request, *args, **kwargs):
        serializer = VerifyCodeSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response({'message': 'Code verified successfully'}, status=status.HTTP_200_OK)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)



class SendEmailView(APIView):
    def post(self, request):
        serializer = EmailSerializer(data=request.data)
        if serializer.is_valid():
            subject = serializer.validated_data['subject']
            message = serializer.validated_data['message']
            recipient_list = serializer.validated_data['recipient_list']
            
            send_mail(
                subject,
                message,
                os.environ.get('EMAIL_USER'),
                recipient_list,
                fail_silently=False,
            )

            return Response({"message": "Email sent!"}, status=status.HTTP_200_OK)
        
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)