from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from rest_framework.permissions import AllowAny
from django.contrib.sites.shortcuts import get_current_site
from .services import EmailService

class SendEmailView(APIView):
    permission_classes = [AllowAny]  # Allow unauthenticated access

    def post(self, request):
        data = request.data
        to = data.get("to")
        subject = data.get("subject")
        text = data.get("text")
        from_email = data.get("from_email")  # Optional

        if not all([to, subject, text]):
            return Response({
                "error": "Missing required fields",
                "required_fields": ["to", "subject", "text"]
            }, status=status.HTTP_400_BAD_REQUEST)

        try:
            # Get the current site
            site = get_current_site(request)
            
            # Send email using the site's configuration
            response = EmailService.send_email(
                to=to,
                subject=subject,
                text=text,
                from_email=from_email,  # Will use site's default if None
                site=site
            )
            
            return Response({
                "message": "Email sent successfully",
                "response": response
            }, status=status.HTTP_200_OK)
            
        except Exception as e:
            return Response({
                "error": str(e)
            }, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
