import os

files = {}

files[".env.example"] = r"""DB_HOST=localhost
DB_NAME=telegram_manager
DB_USER=root
DB_PASS=

APP_TIMEZONE=Asia/Kolkata

TELEGRAM_BOT_TOKEN=
MASTER_TELEGRAM_USER_ID=

TELEGRAM_API_ID=
TELEGRAM_API_HASH=
"""

files["composer.json"] = r"""{
    "name": "telegram/group-manager",
    "description": "Telegram Private Group Auto-Creator",
    "type": "project",
    "require": {
        "php": ">=8.2",
        "danog/madelineproto": "^8.0"
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        }
    }
}
"""

files["database/install.sql"] = r"""
CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    telegram_user_id VARCHAR(50) NULL,
    username VARCHAR(100) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    first_name VARCHAR(100) NULL,
    last_name VARCHAR(100) NULL,
    role VARCHAR(20) DEFAULT 'admin',
    status VARCHAR(20) DEFAULT 'active',
    last_seen_at DATETIME NULL,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS auto_admins (
    id INT AUTO_INCREMENT PRIMARY KEY,
    telegram_user_id VARCHAR(50) NOT NULL UNIQUE,
    username VARCHAR(100) NULL,
    display_name VARCHAR(255) NULL,
    status VARCHAR(20) DEFAULT 'active',
    created_at DATETIME NOT NULL,
    updated_at DATETIME NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS telegram_groups (
    id INT AUTO_INCREMENT PRIMARY KEY,
    telegram_group_id VARCHAR(50) NOT NULL,
    telegram_access_hash VARCHAR(50) NULL,
    group_name VARCHAR(255) NOT NULL,
    group_type VARCHAR(20) DEFAULT 'private',
    invite_link VARCHAR(255) NULL,
    image_status VARCHAR(20) DEFAULT 'pending',
    image_path VARCHAR(255) NULL,
    status VARCHAR(20) DEFAULT 'active',
    created_by VARCHAR(50) NOT NULL,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS group_admins (
    id INT AUTO_INCREMENT PRIMARY KEY,
    group_id INT NOT NULL,
    telegram_user_id VARCHAR(50) NOT NULL,
    add_status VARCHAR(20) DEFAULT 'pending',
    promotion_status VARCHAR(20) DEFAULT 'pending',
    error_message TEXT NULL,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NOT NULL,
    FOREIGN KEY (group_id) REFERENCES telegram_groups(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS bot_logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    telegram_user_id VARCHAR(50) NULL,
    group_id INT NULL,
    action VARCHAR(100) NOT NULL,
    status VARCHAR(20) NOT NULL,
    message TEXT NOT NULL,
    error_message TEXT NULL,
    created_at DATETIME NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS settings (
    id INT AUTO_INCREMENT PRIMARY KEY,
    setting_key VARCHAR(100) NOT NULL UNIQUE,
    setting_value TEXT NULL,
    updated_at DATETIME NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS jobs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    job_type VARCHAR(50) NOT NULL,
    payload JSON NOT NULL,
    status VARCHAR(20) DEFAULT 'pending',
    attempts INT DEFAULT 0,
    available_at DATETIME NOT NULL,
    locked_at DATETIME NULL,
    completed_at DATETIME NULL,
    error_message TEXT NULL,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
"""

files["README.md"] = r"""# Telegram Private Group Auto-Creator

A complete, production-ready system to automatically create Telegram private groups, set a default photo, add and promote configured admins, and generate an invite link.

## Installation on cPanel

1. **Database:** Create a MySQL Database and Database User in cPanel, and assign all privileges.
2. **Files:** Upload the contents of this folder to your `public_html` or domain folder.
3. **Dependencies:**
   - If you have SSH terminal access, run `composer install`.
   - If you do not have SSH access, install Composer locally on your PC, run `composer install`, and upload the `vendor` folder along with everything else.
4. **Installer:** Visit `https://yourdomain.com/install/` to run the web installer.
5. **MTProto Authentication:**
   - Since MTProto (MadelineProto) requires an interactive 2FA login (entering phone number and code), this must be done once manually. You can run a custom script with MadelineProto to generate the `storage/sessions/mtproto.session` file and upload it.
6. **Webhook:** Set your Bot API webhook pointing to `https://yourdomain.com/bot/webhook.php`.
7. **Cron Job:** Go to cPanel Cron Jobs and add the following command to run every minute:
   `/usr/local/bin/php /home/YOUR_CPANEL_USERNAME/public_html/cron/worker.php`
   *(Adjust the PHP binary path according to your cPanel's PHP 8.2 location, e.g., `/opt/cpanel/ea-php82/root/usr/bin/php`)*

## Features

- Fully responsive Web Dashboard (Bootstrap 5)
- Installer for easy setup
- MTProto & Telegram Bot API integration
- Background Queue System to avoid timeouts and rate limits
"""

files[".htaccess"] = r"""
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^storage/.* - [F,L]
    RewriteRule ^database/.* - [F,L]
    RewriteRule ^app/.* - [F,L]
    RewriteRule ^cron/.* - [F,L]
    RewriteRule ^bot/commands/.* - [F,L]
    RewriteRule ^\.env - [F,L]
</IfModule>
"""

for path, content in files.items():
    dirname = os.path.dirname(path)
    if dirname:
        os.makedirs(dirname, exist_ok=True)
    with open(path, "w", encoding="utf-8") as f:
        f.write(content)

print("Assets and Configuration generated successfully.")
