#!/bin/bash

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

echo -e "${BLUE}🚀 شروع اصلاح نهایی و قطعی...${NC}"

PROJECT_PATH="/var/www/html/mylaravel"

if [ ! -d "$PROJECT_PATH" ]; then
    echo -e "${RED}❌ مسیر پروژه یافت نشد: $PROJECT_PATH${NC}"
    exit 1
fi

cd "$PROJECT_PATH"

# ---------------------------------------------------------
# بخش ۱: رفع خطای 500 در ویو request_advices
# ---------------------------------------------------------
echo -e "${YELLOW}🔍 بخش 1: اصلاح خطای 500 در ویو request_advices...\033[0m"

VIEW_FILE="resources/views/visitor/request_advices.blade.php"

if [ -f "$VIEW_FILE" ]; then
    echo -e "${GREEN}✅ فایل ویو یافت شد: $VIEW_FILE${NC}"
    
    # اصلاح خط 31: تبدیل $setting->request_advices_content به optional($setting)->request_advices_content
    # دستور sed دقیق برای جایگزینی در خط 31
    sed -i '31s/$setting->request_advices_content/optional($setting)->request_advices_content ?? ""/g' "$VIEW_FILE"
    
    echo -e "${GREEN}✅ اصلاح انجام شد. محتوای جدید خط 31:${NC}"
    sed -n '31p' "$VIEW_FILE"
    
    # پاکسازی کش ویوها
    php artisan view:clear
    echo -e "${GREEN}✅ کش ویوها پاک شد.\033[0m"
else
    echo -e "${RED}❌ فایل ویو یافت نشد.\033[0m"
fi

# ---------------------------------------------------------
# بخش 2: رفع خطای 401 برای /api/cart/hover
# ---------------------------------------------------------
echo -e "${YELLOW}🔍 بخش 2: رفع خطای 401 برای /api/cart/hover...\033[0m"

# جستجو در تمام فایل‌های routes
find routes -name "*.php" -type f | while read -r file; do
    if grep -q "'/cart/hover'" "$file" 2>/dev/null; then
        echo -e "${GREEN}✅ روت در $file یافت شد. حذف middleware auth...\033[0m"
        # حذف middleware auth
        sed -i "s|Route::get('/cart/hover', \[\([^]]*\)\])->middleware('auth')|Route::get('/cart/hover', [\1])|g" "$file"
        # اگر فرمت string بود
        sed -i "s|Route::get('/cart/hover'|Route::get('/cart/hover'|g" "$file"
    fi
done

php artisan route:clear
echo -e "${GREEN}✅ کش روت‌ها پاک شد.\033[0m"

# ---------------------------------------------------------
# بخش 3: رفع خطای اتصال (Timeout) برای اسکریپت‌های خارجی
# ---------------------------------------------------------
echo -e "${YELLOW}🔍 بخش 3: غیرفعال کردن اسکریپت‌های خارجی کند...\033[0m"
find resources/views -name "*.blade.php" -type f -exec sed -i 's/\(.*google.*tag.*manager.*\)/<!-- \1 -->/g' {} \;
find resources/views -name "*.blade.php" -type f -exec sed -i 's/\(.*wati-integration.*\)/<!-- \1 -->/g' {} \;
find resources/views -name "*.blade.php" -type f -exec sed -i 's/\(.*shopify.*widget.*\)/<!-- \1 -->/g' {} \;
echo -e "${GREEN}✅ اسکریپت‌های خارجی غیرفعال شدند.\033[0m"

# ---------------------------------------------------------
# بخش 4: رفع خطای JavaScript (SyntaxError و dispatchEvent)
# ---------------------------------------------------------
echo -e "${YELLOW}🔍 بخش 4: رفع خطاهای JavaScript...\033[0m"

JS_FILE="public/js/multizoom.js"

if [ -f "$JS_FILE" ]; then
    echo -e "${YELLOW}📝 فایل multizoom.js یافت شد. در حال اصلاح...\033[0m"
    
    # 1. پشتیبان‌گیری
    cp "$JS_FILE" "$JS_FILE.bak"
    
    # 2. رفع خطای SyntaxError (نقطه ویرگول اضافی)
    sed -i 's/;;/;/g' "$JS_FILE"
    
    # 3. رفع خطای dispatchEvent با اضافه کردن wrapper ایمن
    WRAPPER_FUNC='
if (typeof jQuery !== "undefined") {
    jQuery(document).on("click", "button[onclick*="dispatchEvent"], a[onclick*="dispatchEvent"]", function(e) {
        var target = $(this).data("target") || this;
        if (target && typeof target.dispatchEvent === "function") {
            target.dispatchEvent(new Event("click"));
        } else {
            $(this).click();
        }
    });
}
'
    cat "$WRAPPER_FUNC" "$JS_FILE" > "$JS_FILE.new"
    mv "$JS_FILE.new" "$JS_FILE"
    
    echo -e "${GREEN}✅ خطای dispatchEvent با اضافه کردن wrapper ایمن شد.\033[0m"
    
    # 4. مرتب‌سازی کد JS
    if command -v js-beautify &> /dev/null; then
        echo -e "${YELLOW}📝 مرتب‌سازی کد JS با js-beautify...\033[0m"
        js-beautify --replace "$JS_FILE"
        echo -e "${GREEN}✅ کد مرتب شد.\033[0m"
    else
        echo -e "${YELLOW}⚠️ js-beautify نصب نیست. اگر خطای Syntax پابرجاست، فایل را دستی بررسی کنید.\033[0m"
    fi
else
    echo -e "${RED}❌ فایل multizoom.js یافت نشد.\033[0m"
fi

# ---------------------------------------------------------
# بخش 5: پاکسازی نهایی
# ---------------------------------------------------------
echo -e "${YELLOW}🧹 مرحله 5: پاکسازی کش‌ها...\033[0m"
php artisan config:clear
php artisan cache:clear

# اگر از Vite استفاده می‌کنید
if [ -f "package.json" ]; then
    npm run build
fi

echo -e "${GREEN}✅ فرآیند اصلاح نهایی به پایان رسید.\033[0m"
echo -e "${YELLOW}⚠️ لطفاً کش مرورگر (Ctrl+F5) و Service Worker را پاک کنید.\033[0m"
