import os
from pathlib import Path

# -------------------------------------------
# 1. تعریف ساختار پوشه‌ها و فایل‌ها
# -------------------------------------------
project_root = Path("project")

structure = {
    "assets/css": ["style.css"],
    "assets/js": ["script.js"],
    "config": ["database.php"],
    "includes": ["functions.php", "auth.php"],
    "admin": ["index.php", "users.php", "transactions.php", "logs.php", "settings.php", "plans.php"],
    ".": ["login.php", "register.php", "dashboard.php", "generate.php", "history.php", "profile.php", "logout.php", "index.php"]
}

# -------------------------------------------
# 2. محتوای نمونه برای هر فایل (اختیاری)
# -------------------------------------------
file_contents = {
    # فایل‌های CSS/JS
    "style.css": """/* استایل سفارشی با گرادیان و رنگ‌های متنوع */
body {
    font-family: 'Vazir', sans-serif;
    background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
    min-height: 100vh;
}
""",
    "script.js": """// توابع جاوااسکریپت (اختیاری)
document.addEventListener('DOMContentLoaded', function() {
    console.log('پروژه آماده است!');
});
""",

    # فایل‌های PHP
    "database.php": """<?php
// config/database.php - اتصال به دیتابیس با PDO
$host = 'localhost';
$dbname = 'your_database';
$username = 'root';
$password = '';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("خطا در اتصال به دیتابیس: " . $e->getMessage());
}
""",
    "functions.php": """<?php
// includes/functions.php - توابع کمکی
function isLoggedIn() {
    return isset($_SESSION['user_id']);
}

function redirect($url) {
    header("Location: $url");
    exit;
}

function sanitize($input) {
    return htmlspecialchars(trim($input), ENT_QUOTES, 'UTF-8');
}
""",
    "auth.php": """<?php
// includes/auth.php - مدیریت جلسه و احراز هویت
session_start();

if (!isset($_SESSION['user_id'])) {
    // در صورت عدم ورود به صفحه لاگین هدایت کنید
    // header('Location: login.php');
    // exit;
}
""",
    # فایل‌های ادمین
    "admin/index.php": """<?php
// admin/index.php - داشبورد ادمین
echo 'داشبورد مدیریت';
""",
    "admin/users.php": """<?php
// admin/users.php - مدیریت کاربران
echo 'مدیریت کاربران';
""",
    "admin/transactions.php": """<?php
// admin/transactions.php - مدیریت تراکنش‌ها
echo 'مدیریت تراکنش‌ها';
""",
    "admin/logs.php": """<?php
// admin/logs.php - مشاهده لاگ‌های AI
echo 'مشاهده لاگ‌ها';
""",
    "admin/settings.php": """<?php
// admin/settings.php - تنظیمات سیستم
echo 'تنظیمات سیستم';
""",
    "admin/plans.php": """<?php
// admin/plans.php - مدیریت پلن‌های اشتراک
echo 'مدیریت پلن‌ها';
""",
    # فایل‌های ریشه
    "login.php": """<?php
// login.php - صفحه ورود
echo 'صفحه ورود';
""",
    "register.php": """<?php
// register.php - صفحه ثبت‌نام
echo 'صفحه ثبت‌نام';
""",
    "dashboard.php": """<?php
// dashboard.php - داشبورد کاربر
echo 'داشبورد کاربر';
""",
    "generate.php": """<?php
// generate.php - فرم تولید محتوا
echo 'فرم تولید محتوا';
""",
    "history.php": """<?php
// history.php - تاریخچه تولید محتوا
echo 'تاریخچه تولید محتوا';
""",
    "profile.php": """<?php
// profile.php - پروفایل کاربر
echo 'پروفایل کاربر';
""",
    "logout.php": """<?php
// logout.php - خروج
session_start();
session_destroy();
header('Location: login.php');
exit;
""",
    "index.php": """<?php
// index.php - صفحه اصلی (مسیریابی)
echo 'صفحه اصلی پروژه';
// می‌توانید مسیریابی ساده انجام دهید:
// if (isset($_GET['page'])) {
//     include $_GET['page'] . '.php';
// } else {
//     include 'dashboard.php';
// }
"""
}

# -------------------------------------------
# 3. ایجاد پوشه‌ها و فایل‌ها
# -------------------------------------------
def create_file(path, content=""):
    """ایجاد فایل با محتوای مشخص، در صورت عدم وجود"""
    path.parent.mkdir(parents=True, exist_ok=True)
    if not path.exists():
        with open(path, 'w', encoding='utf-8') as f:
            f.write(content)
        print(f"ایجاد: {path}")
    else:
        print(f"از قبل وجود دارد: {path}")

def create_project():
    """اجرای اصلی ساخت پروژه"""
    # ایجاد پوشه اصلی
    project_root.mkdir(exist_ok=True)

    # حلقه روی ساختار
    for folder, files in structure.items():
        if folder == ".":
            # فایل‌های ریشه پروژه
            for file in files:
                file_path = project_root / file
                content = file_contents.get(file, "<?php // " + file)
                create_file(file_path, content)
        else:
            # فایل‌های داخل پوشه‌ها
            for file in files:
                file_path = project_root / folder / file
                # کلید محتوا به صورت "folder/file" یا فقط نام فایل
                key = f"{folder}/{file}" if folder != "." else file
                content = file_contents.get(key, file_contents.get(file, "<?php // " + file))
                create_file(file_path, content)

    print("\n✅ ساختار پروژه با موفقیت ایجاد شد!")
    print(f"پوشه اصلی: {project_root.absolute()}")

# -------------------------------------------
# 4. اجرا
# -------------------------------------------
if __name__ == "__main__":
    create_project()