@echo off
chcp 65001 >nul
setlocal EnableDelayedExpansion

cd /d "%~dp0"

title EstateUnified — локальная сеть

echo.
echo ============================================================
echo   EstateUnified Pro — запуск для локальной сети
echo ============================================================
echo.

set "JAVA_EXE="
for /f "delims=" %%J in ('where java 2^>nul') do (
    if not defined JAVA_EXE set "JAVA_EXE=%%J"
)

if not defined JAVA_EXE (
    echo [ОШИБКА] Java не найдена в PATH.
    echo Установите JDK 21 или новее.
    echo.
    pause
    exit /b 1
)

for %%I in ("!JAVA_EXE!") do set "JAVA_HOME=%%~dpI.."
for %%I in ("!JAVA_HOME!") do set "JAVA_HOME=%%~fI"
set "PATH=!JAVA_HOME!\bin;!PATH!"

echo Используется Java:
"!JAVA_HOME!\bin\java.exe" -version 2>&1
echo JAVA_HOME: !JAVA_HOME!
echo.

set "HOST=0.0.0.0"
if not "%~1"=="" (
    set "PORT=%~1"
) else (
    set "PORT=8090"
)
set "ESTATE_PANEL_DATA=%~dp0server\.estateunified-panel"

echo Сервер будет доступен по адресам:
echo   На этом ПК:       http://127.0.0.1:%PORT%/
echo.

set FOUND_IP=0
for /f "tokens=2 delims=:" %%a in ('ipconfig ^| findstr /i /c:"IPv4"') do (
    for /f "tokens=* delims= " %%b in ("%%a") do (
        if not "%%b"=="" (
            echo   В локальной сети: http://%%b:%PORT%/
            set FOUND_IP=1
        )
    )
)

if "!FOUND_IP!"=="0" (
    echo   В локальной сети: http://^<IP-этого-ПК^>:%PORT%/
)

echo.
echo Другие устройства в той же Wi-Fi / LAN могут открыть ссылку выше.
echo Остановка сервера: Ctrl+C
echo.

if not exist "gradlew.bat" (
    echo [ОШИБКА] Не найден gradlew.bat в папке проекта.
    pause
    exit /b 1
)

if exist "%~dp0FrontEnd" (
    echo Синхронизация FrontEnd в server...
    xcopy /Y /Q "%~dp0FrontEnd\*.html" "%~dp0server\src\main\resources\panel\" >nul 2>&1
    xcopy /Y /Q "%~dp0FrontEnd\api-config.js" "%~dp0server\src\main\resources\panel\" >nul 2>&1
    xcopy /Y /Q "%~dp0FrontEnd\*.js" "%~dp0server\src\main\resources\panel\" >nul 2>&1
    xcopy /Y /Q "%~dp0FrontEnd\*.css" "%~dp0server\src\main\resources\panel\" >nul 2>&1
)

echo Проверка порта %PORT%...
for /f "tokens=5" %%P in ('netstat -ano ^| findstr ":%PORT% " ^| findstr LISTENING') do (
    echo   Порт занят процессом PID=%%P — останавливаю...
    taskkill /F /PID %%P >nul 2>&1
)
timeout /t 2 /nobreak >nul

call gradlew.bat --stop >nul 2>&1
call gradlew.bat :server:run
set EXIT_CODE=%ERRORLEVEL%

echo.
if %EXIT_CODE% neq 0 (
    echo Сервер завершился с ошибкой (код %EXIT_CODE%^).
) else (
    echo Сервер остановлен.
)
pause
exit /b %EXIT_CODE%
