import argparse
import sqlite3
import sys
from pathlib import Path


def reset_kyc(db_path: str, auto_confirm: bool = False) -> None:
    path = Path(db_path)
    if not path.exists():
        print(f"❌ فایل دیتابیس یافت نشد: {db_path}")
        sys.exit(1)

    if not auto_confirm:
        print("=" * 60)
        print("⚠️  هشدار: این عملیات برگشت‌پذیر نیست!")
        print(f"   دیتابیس: {path.resolve()}")
        print("   عملیات: ریست is_verified همه کاربران به 0")
        print("   داده‌های حفظ‌شده: موجودی، سفارشات، تاریخچه")
        print("=" * 60)
        ans = input("برای ادامه 'yes' بنویسید: ").strip().lower()
        if ans != "yes":
            print("❌ عملیات لغو شد.")
            sys.exit(0)

    conn = sqlite3.connect(db_path)
    try:
        cursor = conn.cursor()

        cols = [row[1] for row in cursor.execute("PRAGMA table_info(users)").fetchall()]
        if "is_verified" not in cols:
            print("⚠️  ستون is_verified در جدول users وجود ندارد.")
            print("   ممکن است دیتابیس قدیمی باشد یا ساختار متفاوتی داشته باشد.")
            sys.exit(1)

        total = cursor.execute("SELECT COUNT(*) FROM users").fetchone()[0]
        verified_before = cursor.execute(
            "SELECT COUNT(*) FROM users WHERE is_verified=1"
        ).fetchone()[0]

        if verified_before == 0:
            print(f"ℹ️  هیچ کاربر تأییدشده‌ای وجود ندارد (مجموع کاربران: {total}).")
            sys.exit(0)

        cursor.execute("UPDATE users SET is_verified = 0 WHERE is_verified = 1")
        affected = cursor.rowcount
        conn.commit()

        print(f"✅ عملیات موفق!")
        print(f"   مجموع کاربران:         {total:,}")
        print(f"   کاربران ریست‌شده:      {affected:,}")
        print(f"   کاربران بدون تأیید:    {total - affected:,}")

    except sqlite3.Error as e:
        conn.rollback()
        print(f"❌ خطای دیتابیس: {e}")
        sys.exit(1)
    finally:
        conn.close()


def main() -> None:
    parser = argparse.ArgumentParser(
        description="ریست وضعیت احراز هویت کاربران ربات",
        formatter_class=argparse.RawDescriptionHelpFormatter,
        epilog=__doc__,
    )
    parser.add_argument(
        "--db",
        default="shop.db",
        help="مسیر فایل دیتابیس SQLite (پیش‌فرض: shop.db)",
    )
    parser.add_argument(
        "--yes",
        action="store_true",
        help="تأیید خودکار بدون نمایش prompt",
    )
    args = parser.parse_args()
    reset_kyc(db_path=args.db, auto_confirm=args.yes)


if __name__ == "__main__":
    main()