from io import StringIO
import csv
from django.core.files.base import ContentFile
from app1.models import *
from rest_framework import serializers

class LeadSerializer(serializers.Serializer):
    firstName = serializers.CharField()
    lastName = serializers.CharField()
    contactInfo = serializers.CharField()
    email = serializers.CharField()
    company = serializers.EmailField()
    domain = serializers.CharField(allow_null=True)
    linkedin_id = serializers.CharField()


class ReportDataSerializer(serializers.ModelSerializer):
    class Meta:
        model = ReportData
        fields = ['lead_file']

    def create(self, validated_data):
        leads = self.context['leads']
        csv_data = LeadSerializer(leads, many=True).data

        # Using StringIO to create CSV content in memory
        csv_output = StringIO()
        writer = csv.DictWriter(csv_output, fieldnames=csv_data[0].keys())
        writer.writeheader()
        for lead in csv_data:
            writer.writerow(lead)

        # Creating a ContentFile from the StringIO content
        csv_file_content = csv_output.getvalue().encode('utf-8')
        csv_file = ContentFile(csv_file_content, name="leads_report.csv")

        # Creating and saving the ReportData object with the generated CSV file
        report_data = ReportData.objects.create(lead_file=csv_file)
        return report_data