import frappe
from frappe.utils import today

@frappe.whitelist()
def add_lead_to_campaign(lead_name, campaign_name, start_date=None):
    if not frappe.db.exists("Lead", lead_name):
        frappe.throw("Lead does not exist")

    # Check if there's already a scheduled/in-progress campaign for this Lead with same name
    existing = frappe.db.exists("Email Campaign", {
        "recipient": lead_name,
        "campaign_name": campaign_name,
        "email_campaign_for": "Lead",
        "status": ["in", ["Scheduled", "In Progress"]]
    })

    if existing:
        frappe.throw("This Lead is already in this Email Campaign")

    doc = frappe.new_doc("Email Campaign")
    doc.update({
        "campaign_name": campaign_name,
        "email_campaign_for": "Lead",
        "recipient": lead_name,
        "start_date": start_date or today(),
        "sender": frappe.session.user  # or replace with a specific default sender
    })
    doc.insert(ignore_permissions=True)
    frappe.db.commit()

    return {"status": "success", "message": "Email Campaign created"}
