# Stop any running GuruRMM agent processes and install service

Write-Host "[INFO] Stopping any running GuruRMM agent processes..."

# Check for running processes
$processes = Get-Process -Name "gururmm-agent" -ErrorAction SilentlyContinue
if ($processes) {
    Write-Host "[WARNING] Found $($processes.Count) running agent process(es)"
    foreach ($proc in $processes) {
        Write-Host "  Killing PID $($proc.Id)..."
        Stop-Process -Id $proc.Id -Force
    }
    Start-Sleep -Seconds 2
    Write-Host "[OK] Processes stopped"
} else {
    Write-Host "[INFO] No running agent processes found"
}

# Check for any service (even if not registered properly)
try {
    $service = Get-Service -Name "gururmm-agent" -ErrorAction SilentlyContinue
    if ($service) {
        Write-Host "[WARNING] Found service - stopping..."
        Stop-Service -Name "gururmm-agent" -Force
        Start-Sleep -Seconds 2
    }
} catch {
    # Service might not exist, that's OK
}

# Now install
Write-Host ""
Write-Host "[INFO] Installing GuruRMM agent as service on AD2..."

$serverUrl = "wss://rmm-api.azcomputerguru.com/ws"
$apiKey = "SWIFT-CLOUD-6910"
$agentPath = "C:\Program Files\GuruRMM\gururmm-agent.exe"

if (!(Test-Path $agentPath)) {
    Write-Host "[ERROR] Agent binary not found at $agentPath"
    exit 1
}

Write-Host "[OK] Agent binary found"
Write-Host "[INFO] Installing agent as service..."
Write-Host "  Server URL: $serverUrl"
Write-Host "  API Key: $apiKey"

& $agentPath install --server-url $serverUrl --api-key $apiKey

if ($LASTEXITCODE -ne 0) {
    Write-Host "[ERROR] Installation failed with exit code: $LASTEXITCODE"
    exit 1
}

Start-Sleep -Seconds 2

# Verify service was created
$service = Get-Service -Name "gururmm-agent" -ErrorAction SilentlyContinue
if ($service) {
    Write-Host "[OK] Service created successfully"
    Write-Host "  Name: $($service.Name)"
    Write-Host "  Status: $($service.Status)"
    Write-Host "  Start Type: $($service.StartType)"

    if ($service.Status -ne "Running") {
        Write-Host "[INFO] Starting service..."
        Start-Service -Name "gururmm-agent"
        Start-Sleep -Seconds 2

        $service = Get-Service -Name "gururmm-agent"
        Write-Host "[OK] Service status: $($service.Status)"
    }
} else {
    Write-Host "[ERROR] Service was not created"
    exit 1
}

Write-Host ""
Write-Host "[SUCCESS] GuruRMM agent installed and running on AD2!"
