@echo off
setlocal enabledelayedexpansion
title FutureMedia Baslatici
chcp 65001 >nul
cd /d "%~dp0"

echo ================================
echo   FutureMedia baslatiliyor...
echo ================================
echo Klasor: %cd%
echo.

rem ---------- Node.js kontrolu ----------
where node >nul 2>nul
if errorlevel 1 (
    echo [HATA] Node.js bulunamadi.
    echo Once https://nodejs.org adresinden LTS surumunu kurup
    echo bilgisayari/terminali yeniden baslat, sonra bu dosyayi tekrar calistir.
    echo.
    pause
    exit /b 1
)
for /f "tokens=*" %%v in ('node -v') do echo Node.js bulundu: %%v

where npm >nul 2>nul
if errorlevel 1 (
    echo [HATA] npm bulunamadi ^(Node.js kurulumu eksik/bozuk olabilir^).
    pause
    exit /b 1
)

rem ---------- server klasoru kontrolu ----------
set "SERVER_DIR=%cd%\server"
if not exist "%SERVER_DIR%\server.js" (
    echo [HATA] server klasoru bulunamadi: %SERVER_DIR%
    echo Bu dosyayi FutureMedia proje klasorunun icine koyup calistirin.
    pause
    exit /b 1
)

rem ---------- bagimliliklar ----------
if not exist "%SERVER_DIR%\node_modules" (
    echo.
    echo Bagimliliklar yukleniyor, bu birkac dakika surebilir...
    echo ------------------------------------------------
    pushd "%SERVER_DIR%"
    call npm install
    set INSTALL_RESULT=!errorlevel!
    popd
    echo ------------------------------------------------
    if not "!INSTALL_RESULT!"=="0" (
        echo [HATA] npm install basarisiz oldu ^(kod: !INSTALL_RESULT!^).
        echo Internet baglantini kontrol et ve tekrar dene.
        echo Manuel denemek icin: server klasorune girip "npm install" yaz.
        pause
        exit /b 1
    )
    echo Bagimliliklar yuklendi.
    echo.
)

rem ---------- sunucuyu baslat ----------
echo Sunucu baslatiliyor: http://localhost:3000
echo ^(Bu pencereyi acik birak, sunucu loglarini burada gorursun^)
echo.

rem Sunucuyu KENDI penceresinde, hata olsa bile acik kalacak sekilde baslat.
start "FutureMedia Server" cmd /k "cd /d "%SERVER_DIR%" && echo Sunucu baslatiliyor... && npm start || (echo. & echo [HATA] Sunucu baslatilamadi, yukaridaki hataya bak. & pause)"

rem ---------- sunucunun ayaga kalkmasini bekle ----------
echo Sunucunun hazir olmasi bekleniyor...
set READY=0
for /l %%i in (1,1,20) do (
    curl -s -o nul -w "%%{http_code}" http://localhost:3000/health > "%TEMP%\fm_check.txt" 2>nul
    set /p STATUS=<"%TEMP%\fm_check.txt"
    if "!STATUS!"=="200" (
        set READY=1
        goto :ready
    )
    timeout /t 1 /nobreak >nul
)

:ready
if "!READY!"=="1" (
    echo Sunucu hazir, tarayici aciliyor...
    start "" "http://localhost:3000"
) else (
    echo.
    echo [UYARI] Sunucu 20 saniye icinde yanit vermedi.
    echo Acilan "FutureMedia Server" penceresinde bir hata olup olmadigini kontrol et.
    echo Sunucu hazir olduktan sonra tarayicida manuel olarak sunu ac:
    echo    http://localhost:3000
)

echo.
echo Bu pencereyi kapatabilirsin, sunucu ayri pencerede calismaya devam eder.
pause
exit /b 0
