@echo off
setlocal
title Instalador SolusysMobile - Agente
color 0A

set SERVICE_NAME=SolusysMobileAgente
set "AGENTDIR=%~dp0"
if "%AGENTDIR:~-1%"=="\" set "AGENTDIR=%AGENTDIR:~0,-1%"
set "NSSM_EXE=%AGENTDIR%\instalador\nssm.exe"

set "NODE_EXE=C:\Program Files\nodejs\node.exe"
if exist "C:\Program Files (x86)\nodejs\node.exe" set "NODE_EXE=C:\Program Files (x86)\nodejs\node.exe"
set "NPM_CMD=%NODE_EXE:node.exe=npm.cmd%"

echo ============================================
echo   SolusysMobile - instalar agente neste PC
echo ============================================
echo.

net session >nul 2>&1
if %errorlevel% neq 0 (
  echo Este instalador precisa ser executado como Administrador.
  echo Clique com o botao direito em install.bat e escolha "Executar como administrador".
  echo.
  pause
  exit /b 1
)

echo Verificando Node.js...
if not exist "%NODE_EXE%" (
  echo Node.js nao encontrado nesta maquina. Instalando automaticamente...
  if not exist "%AGENTDIR%\instalador\node-v24.14.1-x64.msi" (
    echo Instalador do Node.js nao encontrado -- abrindo pagina de download.
    echo Instale a versao LTS e rode este instalador de novo.
    start https://nodejs.org/en/download
    pause
    exit /b 1
  )
  msiexec /i "%AGENTDIR%\instalador\node-v24.14.1-x64.msi" /qn /norestart ADDLOCAL=ALL
  if not exist "%NODE_EXE%" (
    echo [ERRO] Node.js nao foi instalado corretamente.
    pause
    exit /b 1
  )
  echo Node.js instalado com sucesso.
) else (
  echo Node.js encontrado.
)

if not exist "%NSSM_EXE%" (
  echo [ERRO] NSSM nao encontrado em:
  echo %NSSM_EXE%
  pause
  exit /b 1
)

echo.
echo Instalando dependencias...
cd /d "%AGENTDIR%"
call "%NPM_CMD%" install
if errorlevel 1 (
  echo [ERRO] Falha no npm install.
  pause
  exit /b 1
)

echo.
echo Removendo instalacao antiga (se existir)...

rem Versao antiga deste instalador usava tarefa agendada -- remove se
rem existir, pra nao rodar em duplicidade junto com o servico novo
schtasks /Query /TN "SolusysMobileAgente" >nul 2>&1
if %errorlevel%==0 (
  schtasks /End /TN "SolusysMobileAgente" >nul 2>&1
  schtasks /Delete /TN "SolusysMobileAgente" /F >nul 2>&1
)

sc query "%SERVICE_NAME%" >nul 2>&1
if %errorlevel%==0 (
  net stop "%SERVICE_NAME%" >nul 2>&1
  "%NSSM_EXE%" remove "%SERVICE_NAME%" confirm >nul 2>&1
  timeout /t 2 >nul
)

echo.
echo Instalando servico...
"%NSSM_EXE%" install "%SERVICE_NAME%" "%NODE_EXE%" "%AGENTDIR%\index.js"
"%NSSM_EXE%" set "%SERVICE_NAME%" AppDirectory "%AGENTDIR%"
"%NSSM_EXE%" set "%SERVICE_NAME%" Start SERVICE_AUTO_START
"%NSSM_EXE%" set "%SERVICE_NAME%" AppExit Default Restart
"%NSSM_EXE%" set "%SERVICE_NAME%" AppStdout "%AGENTDIR%\service-out.log"
"%NSSM_EXE%" set "%SERVICE_NAME%" AppStderr "%AGENTDIR%\service-err.log"

echo.
echo Iniciando servico...
net start "%SERVICE_NAME%"
if errorlevel 1 (
  echo [ERRO] Servico nao iniciou. Confira %AGENTDIR%\service-err.log
  pause
  exit /b 1
)

echo.
echo ============================================
echo Pronto! O agente esta rodando como servico do
echo Windows (%SERVICE_NAME%) e vai iniciar sozinho
echo sempre que este PC ligar.
echo.
echo Abrindo a tela de configuracao no navegador --
echo escolha ali o link que vai usar pra acessar pelo
echo celular.
echo ============================================
echo.
timeout /t 2 >nul
start http://localhost:4321/
pause
exit /b 0
