import urllib.parse
from typing import List
from app.schemas.public import PublicEnquiryItemCreate

def format_whatsapp_message(
    enquiry_number: str,
    customer_name: str,
    shop_name: str,
    mobile: str,
    city: str,
    message: str,
    items: List[PublicEnquiryItemCreate],
    base_url: str = ""
) -> str:
    lines = [
        f"🌟 *NATHJI MARKETING — WHOLESALE ENQUIRY #{enquiry_number}*",
        "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━",
        f"👤 *Customer:* {customer_name}",
    ]
    if shop_name and shop_name.strip():
        lines.append(f"🏬 *Shop/Business:* {shop_name.strip()}")
    lines.append(f"📍 *City:* {city}")
    lines.append(f"📱 *Mobile:* {mobile}")
    lines.append("")
    lines.append("📦 *REQUESTED PRODUCTS & SPECIFICATIONS:*")
    
    for idx, item in enumerate(items, 1):
        lines.append(f"{idx}️⃣ *{item.product_name}*")
        if item.selected_specification:
            lines.append(f"   ▪ *Size/Spec:* {item.selected_specification}")
        lines.append(f"   ▪ *Required Qty:* {item.quantity}")
        if item.product_image_url:
            img_url = item.product_image_url
            if not img_url.startswith("http") and base_url:
                img_url = f"{base_url.rstrip('/')}{img_url}"
            lines.append(f"   ▪ *Photo Ref:* {img_url}")
        elif item.product_slug and base_url:
            lines.append(f"   ▪ *Product Link:* {base_url.rstrip('/')}/product.html?slug={item.product_slug}")
        lines.append("")
        
    if message and message.strip():
        lines.append(f"💬 *Customer Note:* {message.strip()}")
        lines.append("")

    lines.append("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
    lines.append("🙏 _Please share best wholesale quotation & dispatch availability._")
    lines.append("_Sent via Nathji Marketing Digital Catalogue_")

    return "\n".join(lines)


def generate_whatsapp_url(phone_number: str, message_text: str) -> str:
    # Clean phone number: remove spaces, +, -, etc.
    clean_phone = "".join(filter(str.isdigit, phone_number))
    if len(clean_phone) == 10:
        clean_phone = f"91{clean_phone}"
    
    encoded_text = urllib.parse.quote(message_text)
    return f"https://wa.me/{clean_phone}?text={encoded_text}"
