#!/bin/bash
# ==============================================
#  PeepBox - نصب خودکار روی cPanel
#  فقط آپلود کن و اجراش کن!
# ==============================================

set -e

# رنگ‌ها
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'

echo -e "${BLUE}"
echo "╔══════════════════════════════════════════╗"
echo "║     PeepBox - نصب خودکار cPanel          ║"
echo "╚══════════════════════════════════════════╝"
echo -e "${NC}"

# پیدا کردن مسیر روت کاربر
HOME_DIR=$(eval echo ~)
APP_DIR="$HOME_DIR/peepbox"
PORT=3000

# --------------------------------------------------
# ۱. سوالات تنظیمات
# --------------------------------------------------
echo -e "${YELLOW}▶ مرحله ۱: تنظیمات${NC}"

# پورت
read -p "  پورت سرور (پیش‌فرض 3000، Enter بزن برای پیش‌فرض): " INPUT_PORT
PORT=${INPUT_PORT:-3000}

# دامنه
read -p "  دامنه یا ساب‌دامنه (مثلا stream.yoursite.com): " DOMAIN
if [ -z "$DOMAIN" ]; then
    echo -e "${RED}  ✗ دامنه الزامی هست!${NC}"
    exit 1
fi

# --------------------------------------------------
# ۲. بررسی Node.js
# --------------------------------------------------
echo -e "${YELLOW}▶ مرحله ۲: بررسی Node.js${NC}"

if command -v node &> /dev/null; then
    NODE_VER=$(node -v)
    echo -e "  ${GREEN}✓ Node.js نصب هست: $NODE_VER${NC}"
else
    echo -e "  ${RED}✗ Node.js نصب نیست!${NC}"
    echo -e "  ${YELLOW}  از cPanel → Setup Node.js App نصب کن یا از هاستینگ بخواه${NC}"
    echo -e "  ${YELLOW}  یا این دستور رو بزن:${NC}"
    echo "      curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash - && sudo apt install -y nodejs"
    exit 1
fi

# بررسی npm
if ! command -v npm &> /dev/null; then
    echo -e "  ${RED}✗ npm نصب نیست!${NC}"
    exit 1
fi
echo -e "  ${GREEN}✓ npm نصب هست: $(npm -v)${NC}"

# --------------------------------------------------
# ۳. استخراج و آماده‌سازی پروژه
# --------------------------------------------------
echo -e "${YELLOW}▶ مرحله ۳: آماده‌سازی پروژه${NC}"

# پیدا کردن فایل tar
TAR_FILE=$(find "$HOME_DIR" -maxdepth 2 -name "workspace-*.tar" 2>/dev/null | head -1)

if [ -z "$TAR_FILE" ]; then
    # شاید فایل‌ها از قبل استخراج شدن
    if [ -d "$APP_DIR" ]; then
        echo -e "  ${GREEN}✓ پوشه پروژه وجود داره${NC}"
    else
        echo -e "  ${RED}✗ فایل TAR پیدا نشد! لطفاً فایل رو در home directory آپلود کن${NC}"
        exit 1
    fi
else
    echo -e "  ✓ فایل TAR پیدا شد: $TAR_FILE"
    mkdir -p "$APP_DIR"
    tar -xf "$TAR_FILE" -C "$APP_DIR" --strip-components=1
    echo -e "  ${GREEN}✓ پروژه استخراج شد${NC}"
fi

cd "$APP_DIR"

# حذف bun.lock و نصب با npm
if [ -f "bun.lock" ]; then
    rm -f bun.lock
    echo -e "  ✓ bun.lock حذف شد"
fi

# --------------------------------------------------
# ۴. نصب وابستگی‌ها
# --------------------------------------------------
echo -e "${YELLOW}▶ مرحله ۴: نصب وابستگی‌ها (npm install)...${NC}"
npm install --production=false 2>&1 | tail -5
echo -e "  ${GREEN}✓ وابستگی‌ها نصب شدند${NC}"

# --------------------------------------------------
# ۵. تنظیم .env
# --------------------------------------------------
echo -e "${YELLOW}▶ مرحله ۵: تنظیم فایل .env${NC}"

cat > .env << ENVEOF
DATABASE_URL=file:./db/custom.db
NODE_ENV=production
PORT=$PORT
HOSTNAME=0.0.0.0
DOMAIN=$DOMAIN
ENVEOF

echo -e "  ${GREEN}✓ فایل .env ساخته شد${NC}"

# --------------------------------------------------
# ۶. دیتابیس
# --------------------------------------------------
echo -e "${YELLOW}▶ مرحله ۶: راه‌اندازی دیتابیس${NC}"
mkdir -p db
npx prisma generate 2>&1 | tail -3
npx prisma db push 2>&1 | tail -3
echo -e "  ${GREEN}✓ دیتابیس آماده شد${NC}"

# --------------------------------------------------
# ۷. بیلد
# --------------------------------------------------
echo -e "${YELLOW}▶ مرحله ۷: بیلد پروژه (Next.js build)...${NC}"
echo -e "  ${YELLOW}  این مرحله ممکنه ۲-۵ دقیقه طول بکشه...${NC}"
npm run build 2>&1 | tail -10

# کپی فایل‌های استاتیک
if [ -d ".next/standalone" ]; then
    cp -r .next/static .next/standalone/.next/ 2>/dev/null || true
    cp -r public .next/standalone/ 2>/dev/null || true
    echo -e "  ${GREEN}✓ فایل‌های استاتیک کپی شدند${NC}"
fi

echo -e "  ${GREEN}✓ بیلد کامل شد!${NC}"

# --------------------------------------------------
# ۸. نصب و تنظیم PM2
# --------------------------------------------------
echo -e "${YELLOW}▶ مرحله ۸: تنظیم PM2 (مدیریت پردازش)${NC}"

if ! command -v pm2 &> /dev/null; then
    npm install -g pm2 2>&1 | tail -3
    echo -e "  ${GREEN}✓ PM2 نصب شد${NC}"
fi

# توقف قبلی اگر وجود داره
pm2 delete peepbox 2>/dev/null || true

# استارت اپلیکیشن
cd "$APP_DIR"
pm2 start .next/standalone/server.js --name peepbox
pm2 save
echo -e "  ${GREEN}✓ اپلیکیشن استارت شد (پورت $PORT)${NC}"

# --------------------------------------------------
# ۹. تنظیم .htaccess
# --------------------------------------------------
echo -e "${YELLOW}▶ مرحله ۹: تنظیم .htaccess${NC}"

PUBLIC_HTML="$HOME_DIR/public_html"

if [ -d "$PUBLIC_HTML" ]; then
    cat > "$PUBLIC_HTML/.htaccess" << HTACCESSEOF
# PeepBox - Proxy to Node.js
RewriteEngine On

# فایل‌های واقعی رو سرو کن
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# بقیه درخواست‌ها → Node.js
RewriteRule ^(.*)$ http://127.0.0.1:${PORT}/$1 [P,L]
HTACCESSEOF
    echo -e "  ${GREEN}✓ .htaccess در public_html ساخته شد${NC}"
else
    echo -e "  ${YELLOW}⚠ public_html پیدا نشد - .htaccess ساخته نشد${NC}"
fi

# --------------------------------------------------
# ۱۰. نتیجه‌گیری
# --------------------------------------------------
echo -e "${GREEN}"
echo "╔══════════════════════════════════════════╗"
echo "║          ✅ نصب کامل شد!                ║"
echo "╚══════════════════════════════════════════╝"
echo -e "${NC}"
echo -e "  ${BLUE}اطلاعات:${NC}"
echo -e "    📁 مسیر پروژه:  $APP_DIR"
echo -e "    🌐 آدرس سایت:   https://$DOMAIN"
echo -e "    🔌 پورت:        $PORT"
echo -e "    📊 پنل PM2:     pm2 monit"
echo -e ""
echo -e "  ${YELLOW}دستورات مفید:${NC}"
echo -e "    pm2 restart peepbox    # ری‌استارت"
echo -e "    pm2 stop peepbox       # توقف"
echo -e "    pm2 logs peepbox       # لاگ‌ها"
echo -e "    pm2 monit              # مانیتورینگ"
echo -e ""
echo -e "  ${GREEN}الان سایتت باید روی https://$DOMAIN کار کنه! 🎉${NC}"
