import io
from datetime import datetime

def generate_invoice(order: dict, user: dict) -> io.BytesIO:
    """تولید فاکتور PDF ساده با متن"""
    try:
        from reportlab.lib.pagesizes import A4
        from reportlab.lib import colors
        from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer
        from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
        from reportlab.pdfbase import pdfmetrics
        from reportlab.pdfbase.ttfonts import TTFont
        from reportlab.lib.enums import TA_CENTER, TA_RIGHT

        buf = io.BytesIO()
        doc = SimpleDocTemplate(buf, pagesize=A4)
        styles = getSampleStyleSheet()
        story = []

        # عنوان
        title_style = ParagraphStyle('title', fontSize=18, alignment=TA_CENTER, spaceAfter=20)
        story.append(Paragraph("فاکتور خرید", title_style))
        story.append(Spacer(1, 12))

        # اطلاعات
        data = [
            ["شماره فاکتور", f"#{order['id']}"],
            ["تاریخ", datetime.now().strftime('%Y-%m-%d')],
            ["خریدار", user.get('full_name', '')],
            ["سرویس", order['service']],
            ["مدت", order['duration']],
            ["مبلغ", f"{order['amount']:,} تومان"],
            ["وضعیت", "پرداخت شده"],
        ]

        table = Table(data, colWidths=[150, 300])
        table.setStyle(TableStyle([
            ('BACKGROUND', (0, 0), (-1, 0), colors.grey),
            ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
            ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
            ('FONTSIZE', (0, 0), (-1, -1), 12),
            ('ROWBACKGROUNDS', (0, 1), (-1, -1), [colors.beige, colors.white]),
            ('GRID', (0, 0), (-1, -1), 1, colors.black),
            ('PADDING', (0, 0), (-1, -1), 8),
        ]))
        story.append(table)
        story.append(Spacer(1, 20))

        footer_style = ParagraphStyle('footer', fontSize=10, alignment=TA_CENTER, textColor=colors.grey)
        story.append(Paragraph("ممنون از خرید شما | ربات فروش اکانت پرمیوم", footer_style))

        doc.build(story)
        buf.seek(0)
        return buf

    except ImportError:
        # اگه reportlab نصب نبود، فاکتور متنی میده
        text = (
            f"===== فاکتور خرید =====\n\n"
            f"شماره: #{order['id']}\n"
            f"تاریخ: {datetime.now().strftime('%Y-%m-%d')}\n"
            f"خریدار: {user.get('full_name','')}\n"
            f"سرویس: {order['service']} - {order['duration']}\n"
            f"مبلغ: {order['amount']:,} تومان\n"
            f"وضعیت: پرداخت شده\n\n"
            f"ممنون از خرید شما"
        )
        buf = io.BytesIO(text.encode('utf-8'))
        buf.seek(0)
        return buf
