import openpyxl
from datetime import datetime
from django.http import HttpResponse


def export_payments_to_excel(queryset, filename):
    workbook = openpyxl.Workbook()
    sheet = workbook.active
    sheet.title = "Payments"

    # Headers
    headers = [
        "Receipt",
        "Reference",
        "Payment Type",
        "App",
        "Phone",
        "Amount",
        "Status",
        "Claimed",
        "Created At",
    ]

    sheet.append(headers)

    # Data
    for obj in queryset:
        sheet.append([
            obj.mpesa_receipt_number,
            obj.external_reference,
            obj.payment_type,
            obj.app_name,
            obj.phone_number,
            float(obj.amount),
            obj.status,
            "YES" if obj.claimed else "NO",
            obj.created_at.strftime("%Y-%m-%d %H:%M:%S"),
        ])

    # Response
    response = HttpResponse(
        content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
    )
    filename = f"payments_{datetime.now().strftime('%Y%m%d_%H%M%S')}.xlsx"

    response["Content-Disposition"] = f'attachment; filename="{filename}"'

    workbook.save(response)
    return response