# Simple check of database server via SMB
$password = ConvertTo-SecureString 'Paper123!@#' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential('INTRANET\sysadmin', $password)

Write-Host "[OK] Mounting AD2 C$ share..." -ForegroundColor Green
New-PSDrive -Name AD2 -PSProvider FileSystem -Root "\\192.168.0.6\C$" -Credential $cred -ErrorAction Stop | Out-Null

Write-Host "[OK] Checking database file..." -ForegroundColor Green
$dbPath = "AD2:\Shares\testdatadb\database\testdata.db"

if (Test-Path $dbPath) {
    $dbFile = Get-Item $dbPath
    Write-Host "[OK] Database file exists" -ForegroundColor Green
    Write-Host "  Size: $([math]::Round($dbFile.Length/1MB,2)) MB" -ForegroundColor Cyan
    Write-Host "  Last Modified: $($dbFile.LastWriteTime)" -ForegroundColor Cyan

    # Check if file is locked
    try {
        $stream = [System.IO.File]::Open($dbFile.FullName, 'Open', 'Read', 'Read')
        $stream.Close()
        Write-Host "  [OK] Database file is accessible (not locked)" -ForegroundColor Green
    } catch {
        Write-Host "  [WARNING] Database file may be locked: $($_.Exception.Message)" -ForegroundColor Yellow
    }
} else {
    Write-Host "[ERROR] Database file not found!" -ForegroundColor Red
}

# Check server.js file
Write-Host "`n[OK] Checking server files..." -ForegroundColor Green
$serverPath = "AD2:\Shares\testdatadb\server.js"
if (Test-Path $serverPath) {
    Write-Host "[OK] server.js exists" -ForegroundColor Green
} else {
    Write-Host "[ERROR] server.js not found!" -ForegroundColor Red
}

# Check package.json
$packagePath = "AD2:\Shares\testdatadb\package.json"
if (Test-Path $packagePath) {
    Write-Host "[OK] package.json exists" -ForegroundColor Green
    $package = Get-Content $packagePath -Raw | ConvertFrom-Json
    Write-Host "  Dependencies:" -ForegroundColor Cyan
    $package.dependencies.PSObject.Properties | ForEach-Object {
        Write-Host "    - $($_.Name): $($_.Value)" -ForegroundColor Cyan
    }
}

# Check for any error log files
Write-Host "`n[OK] Checking for error logs..." -ForegroundColor Green
$logFiles = Get-ChildItem "AD2:\Shares\testdatadb\*.log" -ErrorAction SilentlyContinue

if ($logFiles) {
    Write-Host "[FOUND] Log files:" -ForegroundColor Green
    $logFiles | ForEach-Object {
        Write-Host "  $($_.Name) - $([math]::Round($_.Length/1KB,2)) KB - Modified: $($_.LastWriteTime)" -ForegroundColor Cyan
        if ($_.Length -lt 10KB) {
            Write-Host "    Last 10 lines:" -ForegroundColor Yellow
            Get-Content $_.FullName -Tail 10 | ForEach-Object { Write-Host "      $_" -ForegroundColor Gray }
        }
    }
} else {
    Write-Host "[INFO] No log files found" -ForegroundColor Cyan
}

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

if ($portTest) {
    Write-Host "[OK] Port 3000 is OPEN" -ForegroundColor Green
} else {
    Write-Host "[ERROR] Port 3000 is CLOSED - Server not running or firewall blocking" -ForegroundColor Red
}

Remove-PSDrive -Name AD2 -ErrorAction SilentlyContinue
Write-Host "`n[OK] Done" -ForegroundColor Green
