# Check Node.js server status and database access on AD2
$password = ConvertTo-SecureString 'Paper123!@#' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential('INTRANET\sysadmin', $password)

Write-Host "[OK] Checking Node.js server status..." -ForegroundColor Green

# Check if Node.js process is running
$nodeProcs = Invoke-Command -ComputerName 192.168.0.6 -Credential $cred -ScriptBlock {
    Get-Process node -ErrorAction SilentlyContinue | Select-Object Id, ProcessName, StartTime, @{Name='Memory(MB)';Expression={[math]::Round($_.WorkingSet64/1MB,2)}}
}

if ($nodeProcs) {
    Write-Host "[FOUND] Node.js process(es) running:" -ForegroundColor Green
    $nodeProcs | Format-Table -AutoSize
} else {
    Write-Host "[WARNING] No Node.js process found - server may not be running" -ForegroundColor Yellow
}

# Check database file
Write-Host "`n[OK] Checking database file..." -ForegroundColor Green
$dbInfo = Invoke-Command -ComputerName 192.168.0.6 -Credential $cred -ScriptBlock {
    $dbPath = "C:\Shares\testdatadb\database\testdata.db"
    if (Test-Path $dbPath) {
        $file = Get-Item $dbPath
        [PSCustomObject]@{
            Exists = $true
            Size = [math]::Round($file.Length/1MB,2)
            LastWrite = $file.LastWriteTime
            Readable = $true
        }
    } else {
        [PSCustomObject]@{
            Exists = $false
        }
    }
}

if ($dbInfo.Exists) {
    Write-Host "[OK] Database file found" -ForegroundColor Green
    Write-Host "  Size: $($dbInfo.Size) MB" -ForegroundColor Cyan
    Write-Host "  Last Modified: $($dbInfo.LastWrite)" -ForegroundColor Cyan
} else {
    Write-Host "[ERROR] Database file not found!" -ForegroundColor Red
}

# Check for server log file
Write-Host "`n[OK] Checking for server logs..." -ForegroundColor Green
$logs = Invoke-Command -ComputerName 192.168.0.6 -Credential $cred -ScriptBlock {
    $logPath = "C:\Shares\testdatadb\server.log"
    if (Test-Path $logPath) {
        Get-Content $logPath -Tail 20
    } else {
        Write-Output "[INFO] No server.log file found"
    }
}

if ($logs) {
    Write-Host "[OK] Recent server logs:" -ForegroundColor Green
    $logs | ForEach-Object { Write-Host "  $_" }
}

# Try to test port 3000
Write-Host "`n[OK] Testing port 3000..." -ForegroundColor Green
$portTest = Test-NetConnection -ComputerName 192.168.0.6 -Port 3000 -WarningAction SilentlyContinue

if ($portTest.TcpTestSucceeded) {
    Write-Host "[OK] Port 3000 is open and accessible" -ForegroundColor Green
} else {
    Write-Host "[ERROR] Port 3000 is not accessible - server may not be running" -ForegroundColor Red
}

Write-Host "`n[OK] Done" -ForegroundColor Green
