#!/bin/bash
# ============================================================
#  🏔️  اسکریپت نصب کامل - شرکت کانی کاوش آرتا غدیر
#  Full Setup Script for Arta Ghadir Website
#  سازگار با: Ubuntu 20.04+ / Debian / macOS
# ============================================================

set -e  # اگر خطایی رخ داد، متوقف شو

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

# ─── لوگو ─────────────────────────────────────────────────
echo ""
echo -e "${BLUE}${BOLD}"
echo "  ╔═══════════════════════════════════════════════╗"
echo "  ║     🏔️   کانی کاوش آرتا غدیر                 ║"
echo "  ║     Arta Ghadir Mining Co. - Web Setup        ║"
echo "  ╚═══════════════════════════════════════════════╝"
echo -e "${NC}"

# ─── تابع نمایش پیام ──────────────────────────────────────
info()    { echo -e "${CYAN}  ℹ  $1${NC}"; }
success() { echo -e "${GREEN}  ✓  $1${NC}"; }
warn()    { echo -e "${YELLOW}  ⚠  $1${NC}"; }
error()   { echo -e "${RED}  ✗  $1${NC}"; exit 1; }
step()    { echo -e "\n${BOLD}${BLUE}━━━  $1${NC}"; }

# ─── بررسی Python ─────────────────────────────────────────
step "بررسی پیش‌نیازها"

if ! command -v python3 &>/dev/null; then
    error "Python 3 نصب نیست. لطفاً ابتدا Python 3.10+ نصب کنید."
fi

PYTHON_VERSION=$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')
PYTHON_MAJOR=$(echo $PYTHON_VERSION | cut -d. -f1)
PYTHON_MINOR=$(echo $PYTHON_VERSION | cut -d. -f2)

if [ "$PYTHON_MAJOR" -lt 3 ] || ([ "$PYTHON_MAJOR" -eq 3 ] && [ "$PYTHON_MINOR" -lt 8 ]); then
    error "Python $PYTHON_VERSION شناسایی شد. حداقل نسخه 3.8 مورد نیاز است."
fi

success "Python $PYTHON_VERSION شناسایی شد"

if ! command -v pip3 &>/dev/null && ! python3 -m pip --version &>/dev/null; then
    error "pip نصب نیست."
fi
success "pip شناسایی شد"

# ─── ساخت محیط مجازی ──────────────────────────────────────
step "ساخت محیط مجازی Python"

if [ ! -d "venv" ]; then
    python3 -m venv venv
    success "محیط مجازی ساخته شد"
else
    warn "محیط مجازی از قبل وجود دارد، استفاده می‌شود"
fi

# فعال‌سازی محیط مجازی
source venv/bin/activate || { source venv/Scripts/activate 2>/dev/null || error "فعال‌سازی venv ناموفق بود"; }
success "محیط مجازی فعال شد"

# ─── نصب وابستگی‌های ساده ─────────────────────────────────
step "نصب وابستگی‌ها"
info "در حال نصب پکیج‌ها..."

# requirements ساده شده برای SQLite (بدون psycopg2)
pip install --upgrade pip --quiet
pip install \
    "Django>=4.2,<5.0" \
    "Pillow>=10.0" \
    "django-ckeditor>=6.7" \
    "python-slugify>=8.0" \
    "whitenoise>=6.6" \
    "python-dotenv>=1.0" \
    "django-imagekit>=5.0" \
    --quiet

success "همه پکیج‌ها نصب شدند"

# ─── فایل .env ────────────────────────────────────────────
step "تنظیم فایل محیطی (.env)"

if [ ! -f ".env" ]; then
    # تولید کلید secret تصادفی
    SECRET=$(python3 -c "import secrets,string; print(''.join(secrets.choice(string.ascii_letters+string.digits+'!@#$%^&*') for _ in range(50)))")
    
    cat > .env << EOF
# تنظیمات محیط آرتا غدیر
DEBUG=True
SECRET_KEY=${SECRET}
ALLOWED_HOSTS=localhost,127.0.0.1

# ایمیل (اختیاری)
EMAIL_HOST=smtp.gmail.com
EMAIL_HOST_USER=
EMAIL_HOST_PASSWORD=
EOF
    success "فایل .env ساخته شد"
else
    warn ".env از قبل وجود دارد"
fi

# ─── migration ────────────────────────────────────────────
step "ساخت جداول دیتابیس"

python3 manage.py makemigrations core projects news gallery careers tenders --no-input 2>/dev/null || true
python3 manage.py makemigrations --no-input 2>/dev/null || true
python3 manage.py migrate --no-input

success "جداول دیتابیس ساخته شدند"

# ─── superuser ────────────────────────────────────────────
step "ساخت کاربر ادمین"

python3 manage.py shell << 'PYEOF'
from django.contrib.auth.models import User
if not User.objects.filter(username='admin').exists():
    User.objects.create_superuser('admin', 'admin@artaghadir.com', 'admin1234')
    print("  ✓ کاربر ادمین ساخته شد")
else:
    print("  ⚠ کاربر ادمین از قبل وجود دارد")
PYEOF

# ─── داده‌های نمونه ──────────────────────────────────────
step "بارگذاری داده‌های نمونه"
info "در حال ساخت محتوای نمونه..."

python3 manage.py populate_data

success "داده‌های نمونه بارگذاری شدند"

# ─── فایل‌های استاتیک ─────────────────────────────────────
step "جمع‌آوری فایل‌های استاتیک"
python3 manage.py collectstatic --no-input --clear 2>/dev/null || true
success "فایل‌های استاتیک آماده شدند"

# ─── اطلاعات نهایی ────────────────────────────────────────
echo ""
echo -e "${GREEN}${BOLD}"
echo "  ╔═══════════════════════════════════════════════════╗"
echo "  ║         ✅  نصب با موفقیت کامل شد!               ║"
echo "  ╚═══════════════════════════════════════════════════╝"
echo -e "${NC}"
echo -e "${CYAN}  📌  اطلاعات دسترسی:${NC}"
echo ""
echo -e "  🌐  سایت اصلی:      ${BOLD}http://127.0.0.1:8000${NC}"
echo -e "  🔧  پنل مدیریت:     ${BOLD}http://127.0.0.1:8000/admin${NC}"
echo -e "  🌍  نسخه انگلیسی:   ${BOLD}http://127.0.0.1:8000/en/${NC}"
echo ""
echo -e "  👤  نام کاربری:     ${BOLD}admin${NC}"
echo -e "  🔑  رمز عبور:       ${BOLD}admin1234${NC}"
echo ""
echo -e "${YELLOW}  ⚠   رمز عبور را حتماً تغییر دهید!${NC}"
echo ""
echo -e "${CYAN}  🚀  برای اجرای سرور:${NC}"
echo -e "      ${BOLD}python manage.py runserver${NC}"
echo ""
