#!/bin/bash

# ClearBill Project Setup - cb_new structure
# Run: ./setup_cb_new.sh

DB_HOST="localhost"
DB_NAME="clearbill"
DB_USER="clearbill"
DB_PASS="clearbill"

echo "🧹 Cleaning existing cb_new..."
rm -rf cb_new

echo "📁 Creating project structure..."

# Helper function to create PHP file with heredoc
create_php() {
    local path="$1"
    local dir=$(dirname "$path")
    mkdir -p "$dir"
    cat > "$path" << 'EOF'
EOF
    echo "$2" >> "$path"
}

# Config
mkdir -p cb_new/config
cat > cb_new/config/database.php << EOF
<?php
\$host = "$DB_HOST";
\$dbname = "$DB_NAME";
\$user = "$DB_USER";
\$pass = "$DB_PASS";
try {
    \$pdo = new PDO("mysql:host=\$host;dbname=\$dbname", \$user, \$pass);
    \$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException \$e) {
    die("DB Connection failed: " . \$e->getMessage());
}
?>
EOF

# Includes
mkdir -p cb_new/includes
cat > cb_new/includes/auth.php << 'EOF'
<?php
session_start();
function hasAccess($module, $action = "view") {
    if (!isset($_SESSION["user_id"])) return false;
    // TODO: Query role_permissions table
    global $pdo;
    $stmt = $pdo->prepare("SELECT can_$action FROM role_permissions WHERE role_id = ? AND module = ?");
    $stmt->execute([$_SESSION["role_id"], $module]);
    return $stmt->fetchColumn() ? true : false;
}
?>
EOF

cat > cb_new/includes/header.php << 'EOF'
<!DOCTYPE html>
<html>
<head><title>ClearBill</title>
<link rel="stylesheet" href="../assets/css/style.css"></head>
<body>
<nav><!-- Role-based menu -->
<?php if (hasAccess("purchase")) echo '<a href="../purchase/">Purchase</a>'; ?>
<?php if (hasAccess("sales")) echo '<a href="../sales/">Sales</a>'; ?>
</nav>
<main>
EOF

# Login
mkdir -p cb_new/login
echo '<?php header("Location: login/"); ?>' > cb_new/index.php
cat > cb_new/login/index.php << 'EOF'
<!DOCTYPE html><html><body>
<form method="POST" action="process.php">
Username: <input name="username"><br>
Password: <input type="password" name="password"><br>
<button>Login</button>
</form></body></html>
EOF

cat > cb_new/login/process.php << 'EOF'
<?php
require "../config/database.php";
require "../includes/auth.php";
// TODO: Complete login logic
echo "Login process placeholder";
?>
EOF

echo '<?php session_destroy(); header("Location: login/"); ?>' > cb_new/login/logout.php

# Modules (Purchase, Sales, etc.)
modules=("purchase" "sales" "ledger" "stock" "reports" "user")
for mod in "${modules[@]}"; do
    mkdir -p "cb_new/$mod"
    cat > "cb_new/$mod/index.php" << EOF
<?php require '../includes/header.php'; ?>
<h1>$mod Dashboard</h1>
<?php if (!hasAccess('$mod')) { header('Location: ../login/'); exit; } ?>
<!-- Module content -->
<?php // require '../includes/footer.php'; ?>
</h1>
EOF
done

# Assets
mkdir -p cb_new/assets/{css,js,images}
echo "body { font-family: Arial; } nav { background: #333; color: white; }" > cb_new/assets/css/style.css
echo "// App JS" > cb_new/assets/js/app.js
touch cb_new/assets/images/.gitkeep

echo "✅ cb_new created! Upload to public_html or subdomain."
echo "🌐 Access: yourdomain.com/cb_new/"
ls -la cb_new/
