from pathlib import Path
from PIL import Image, ImageDraw, ImageFont

SOURCE = Path('/home/ubuntu/upload/etqan-reference-screens')
OUTPUT = SOURCE / 'contact-sheets'
OUTPUT.mkdir(exist_ok=True)

GROUPS = {
    '01-auth-onboarding': [
        'شاشة الترحيب.png', 'التعريف بالخدمات (Onboarding 1).png', 'متابعة الطلبات (Onboarding 2).png',
        'الدفع الإلكتروني (Onboarding 3).png', 'تسجيل الدخول.png', 'تسجيل الدخول-1.png', 'التحقق OTP.png',
        'خطأ تسجيل الدخول.png', 'انتهاء الجلسة.png'
    ],
    '02-discover-search': [
        'الصفحة الرئيسية.png', 'جميع الخدمات.png', 'جميع الفئات.png', 'تفاصيل الفئه.png', 'تفاصيل الخدمة.png',
        'الخدمات الأكثر طلباً.png', 'العروض والخصومات.png', 'البحث.png', 'نتائج البحث.png', 'نتائج البحث-1.png',
        'لا توجد نتائج.png', 'الفرز.png', 'الفلاتر.png', 'الإشعارات.png', 'مركز الإشعارات.png', 'تفاصيل الإشعار.png',
        'لا توجد إشعارات.png'
    ],
    '03-profile-locations': [
        'الملف الشخصي.png', 'تعديل الملف الشخصي.png', 'الإعدادات.png', 'تغيير كلمة المرور.png',
        'اختيار نوع العقار.png', 'تفاصيل العقار.png', 'إضافة عنوان جديد.png', 'إدارة طرق الدفع.png',
        'إضافة بطاقة جديدة.png', 'حسابي (مركز الإدارة).png', 'تعديل الملف الشخصي-1.png'
    ],
    '04-create-order': [
        'اختيار الخدمه.png', 'تفاصيل الخدمة.png', 'تفاصيل الطلب.png', 'رفع الصور.png', 'معاينة الصور.png',
        'تعديل الصور.png', 'اختيار التاريخ والوقت.png', 'تحديد الموقع على الخريطة.png', 'السعر التقديري.png',
        'مراجعة الطلب.png', 'نافذة تأكيد إرسال الطلب.png', 'تم إرسال الطلب بنجاح.png'
    ],
    '05-order-payment': [
        'قائمة الطلبات.png', 'قائمة الطلبات-1.png', 'تفاصيل الطلب-1.png', 'تفاصيل الطلب-2.png',
        'تتبع الطلب Timeline.png', 'تتبع الطلب (Timeline).png', 'تتبع حالة الطلب.png', 'عرض السعر.png',
        'مراجعة عرض السعر.png', 'العقد الإلكتروني.png', 'انتظار توقيع المؤسسة.png', 'توقيع العميل.png',
        'نجاح توقيع العميل.png', 'العقد معتمد.png', 'اختيار طريقة الدفع.png', 'ملخص عملية الدفع.png',
        'نجاح دفع العربون.png', 'طلب الدفعة النهائية.png', 'الفاتورة النهائية.png', 'نجاح الدفع النهائي.png',
        'الإيصال الإلكتروني.png', 'الفاتورة.png', 'فشل عملية الدفع.png'
    ],
    '06-support-empty': [
        'المحادثة مع الإدارة.png', 'كتابة رساله.png', 'إنشاء تذكرة دعم.png', 'تفاصيل التذكرة.png',
        'تقييم الخدمة.png', 'سجل التقييمات.png', 'انقطاع الاتصال بالإنترنت.png', 'تعذر تحميل البيانات.png',
        'خطأ في الخادم.png', 'خطأ في الخادم-1.png', 'تحميل الإشعارات.png', 'تحميل الفواتير.png',
        'لا توجد طلبات.png', 'لا توجد طلبات سابقة.png', 'لا توجد خدمات مفضلة.png', 'لا توجد عمليات مالية.png'
    ],
    '07-worker-task': [
        'تفاصيل المهمه.png', 'أولوية المهمة.png', 'معلومات العميل.png', 'الخريطة المصغرة.png',
        'التواصل السريع مع العميل.png', 'المحادثة مع العميل.png', 'قطع الغيار المطلوبة.png', 'قطع الغيار المطلوبة-1.png',
        'الأدوات المطلوبة.png', 'بدء المهمة.png', 'خطوات تنفيذ المهمة.png', 'تفاصيل الخطوة الفرعية.png',
        'صور قبل التنفيذ.png', 'صور أثناء التنفيذ.png', 'صور بعد التنفيذ.png', 'مقارنة قبل وبعد.png',
        'ملاحظات الفني.png', 'الإبلاغ عن مشكلة.png'
    ],
    '08-worker-completion': [
        'تتبع وقت المهمة.png', 'خطأ تسجيل الوقت.png', 'المهمة متوقفة مؤقتًا.png', 'ملخص وقت المهمة.png',
        'مراجعة المهمة قبل الإنهاء.png', 'تأكيد إنهاء المهمة.png', 'تم إنهاء المهمة بنجاح.png', 'قطع الغيار المستخدمة.png',
        'لا توجد قطع مستخدمة.png', 'إضافة قطعة.png', 'تأكيد استخدام القطعة.png', 'طلب قطعة إضافية.png',
        'تعذر تحديث المخزون.png', 'ملخص اليوم.png', 'الدخل.png', 'الأداء.png', 'النقاط.png'
    ],
}

WIDTH, HEIGHT, LABEL, MARGIN, COLUMNS = 152, 325, 28, 12, 4
FONT = ImageFont.load_default()

for group, files in GROUPS.items():
    available = [file for file in files if (SOURCE / file).is_file()]
    rows = (len(available) + COLUMNS - 1) // COLUMNS
    canvas = Image.new('RGB', (COLUMNS * WIDTH + (COLUMNS + 1) * MARGIN, rows * (HEIGHT + LABEL) + (rows + 1) * MARGIN), '#eef1f4')
    draw = ImageDraw.Draw(canvas)
    for index, filename in enumerate(available):
        image = Image.open(SOURCE / filename).convert('RGB')
        image.thumbnail((WIDTH, HEIGHT), Image.Resampling.LANCZOS)
        col, row = index % COLUMNS, index // COLUMNS
        x = MARGIN + col * (WIDTH + MARGIN)
        y = MARGIN + row * (HEIGHT + LABEL + MARGIN)
        canvas.paste(image, (x + (WIDTH - image.width) // 2, y + (HEIGHT - image.height) // 2))
        draw.rectangle((x, y + HEIGHT, x + WIDTH, y + HEIGHT + LABEL), fill='#0c203b')
        label = filename[:22]
        draw.text((x + 4, y + HEIGHT + 8), label, fill='#f0c85a', font=FONT)
    canvas.save(OUTPUT / f'{group}.png')
