# πŸ”§ SCRIPT POWERSHELL: GESTIONE SISTEMA CONTABILE NETGESCON # File: scripts/NetGescon-Contabilita.ps1 param( [Parameter(Mandatory=$false)] [ValidateSet("diagnosi", "setup", "sync", "verifica", "backup", "help")] [string]$Azione = "help", [Parameter(Mandatory=$false)] [string]$CondominioId = "", [Parameter(Mandatory=$false)] [string]$Anno = "" ) # 🎨 Colori per output $RED = "Red" $GREEN = "Green" $YELLOW = "Yellow" $BLUE = "Blue" $CYAN = "Cyan" $MAGENTA = "Magenta" # πŸ“‹ Configurazione $NETGESCON_WIN = "U:\home\michele\netgescon" $NETGESCON_VM = "/var/www/netgescon" $VM_IP = "192.168.0.200" $VM_USER = "michele" Write-Host "🏒 ===== NETGESCON SISTEMA CONTABILE MANAGER =====" -ForegroundColor Blue Write-Host "πŸ“… $(Get-Date)" -ForegroundColor Cyan Write-Host "" function Show-Help { Write-Host "πŸ“‹ COMANDI DISPONIBILI:" -ForegroundColor Yellow Write-Host "" Write-Host " diagnosi πŸ” Diagnosi completa sistema contabile" -ForegroundColor Cyan Write-Host " setup πŸ”§ Setup automatico sistema contabile" -ForegroundColor Cyan Write-Host " sync πŸ”„ Sincronizzazione Git con VM" -ForegroundColor Cyan Write-Host " verifica βš–οΈ Verifica partita doppia" -ForegroundColor Cyan Write-Host " backup πŸ’Ύ Backup database" -ForegroundColor Cyan Write-Host " help ❓ Mostra questo aiuto" -ForegroundColor Cyan Write-Host "" Write-Host "πŸ“‹ ESEMPI D'USO:" -ForegroundColor Yellow Write-Host "" Write-Host " .\NetGescon-Contabilita.ps1 diagnosi" -ForegroundColor Green Write-Host " .\NetGescon-Contabilita.ps1 setup" -ForegroundColor Green Write-Host " .\NetGescon-Contabilita.ps1 sync" -ForegroundColor Green Write-Host "" } function Test-Prerequisites { Write-Host "βœ… Verifica prerequisiti..." -ForegroundColor Yellow # Verifica directory NetGescon if (!(Test-Path $NETGESCON_WIN)) { Write-Host "❌ Directory NetGescon non trovata: $NETGESCON_WIN" -ForegroundColor Red return $false } # Verifica Git try { git --version | Out-Null Write-Host " βœ… Git disponibile" -ForegroundColor Green } catch { Write-Host " ❌ Git non trovato" -ForegroundColor Red return $false } # Verifica SSH per VM try { ssh -o ConnectTimeout=5 "$VM_USER@$VM_IP" "echo 'VM raggiungibile'" 2>$null | Out-Null Write-Host " βœ… VM raggiungibile" -ForegroundColor Green } catch { Write-Host " ⚠️ VM non raggiungibile - alcune funzioni potrebbero non funzionare" -ForegroundColor Yellow } return $true } function Invoke-Diagnosi { Write-Host "πŸ” Esecuzione diagnosi sistema contabile..." -ForegroundColor Yellow if (!(Test-Prerequisites)) { return } try { # Esegue diagnosi su VM Write-Host "πŸ“Š Diagnosi su VM Linux..." -ForegroundColor Cyan ssh "$VM_USER@$VM_IP" "cd /home/michele/netgescon && chmod +x scripts/diagnosi-contabilita.sh && ./scripts/diagnosi-contabilita.sh" Write-Host "" Write-Host "βœ… Diagnosi completata!" -ForegroundColor Green } catch { Write-Host "❌ Errore durante la diagnosi: $($_.Exception.Message)" -ForegroundColor Red } } function Invoke-Setup { Write-Host "πŸ”§ Setup sistema contabile..." -ForegroundColor Yellow if (!(Test-Prerequisites)) { return } $confirm = Read-Host "⚠️ ATTENZIONE: Questo comando modificherΓ  il database. Continuare? (y/N)" if ($confirm -ne "y" -and $confirm -ne "Y") { Write-Host "⏸️ Setup annullato" -ForegroundColor Yellow return } try { # Prima sincronizza gli script piΓΉ recenti Write-Host "πŸ”„ Sincronizzazione script..." -ForegroundColor Cyan Invoke-Sync # Esegue setup su VM Write-Host "πŸš€ Avvio setup su VM Linux..." -ForegroundColor Cyan ssh "$VM_USER@$VM_IP" "cd /home/michele/netgescon && chmod +x scripts/setup-contabilita-condominiale.sh && ./scripts/setup-contabilita-condominiale.sh" Write-Host "" Write-Host "βœ… Setup completato!" -ForegroundColor Green } catch { Write-Host "❌ Errore durante il setup: $($_.Exception.Message)" -ForegroundColor Red } } function Invoke-Sync { Write-Host "πŸ”„ Sincronizzazione Git..." -ForegroundColor Yellow if (!(Test-Prerequisites)) { return } try { # Naviga alla directory NetGescon Set-Location $NETGESCON_WIN # Verifica stato Git Write-Host "πŸ“Š Verifica stato Git..." -ForegroundColor Cyan $gitStatus = git status --porcelain if ($gitStatus) { Write-Host "πŸ“ Modifiche locali rilevate:" -ForegroundColor Yellow git status --short $commitConfirm = Read-Host "πŸ’Ύ Fare commit delle modifiche? (y/N)" if ($commitConfirm -eq "y" -or $commitConfirm -eq "Y") { $commitMessage = Read-Host "πŸ’¬ Messaggio commit (default: 'Update sistema contabile')" if ([string]::IsNullOrWhiteSpace($commitMessage)) { $commitMessage = "Update sistema contabile" } git add . git commit -m $commitMessage Write-Host "βœ… Commit locale creato" -ForegroundColor Green } } # Push su Gitea Write-Host "πŸ“€ Push su Gitea..." -ForegroundColor Cyan git push origin master Write-Host "βœ… Push completato" -ForegroundColor Green # Pull su VM Write-Host "πŸ“₯ Pull su VM..." -ForegroundColor Cyan ssh "$VM_USER@$VM_IP" "cd /home/michele/netgescon && git pull origin master" # Sync su directory produzione VM Write-Host "πŸ”„ Sync directory produzione VM..." -ForegroundColor Cyan ssh "$VM_USER@$VM_IP" "rsync -av --exclude='.git' --exclude='node_modules' --exclude='vendor' /home/michele/netgescon/ /var/www/netgescon/" Write-Host "βœ… Sincronizzazione completata!" -ForegroundColor Green } catch { Write-Host "❌ Errore durante la sincronizzazione: $($_.Exception.Message)" -ForegroundColor Red } } function Invoke-Verifica { Write-Host "βš–οΈ Verifica partita doppia..." -ForegroundColor Yellow if (!(Test-Prerequisites)) { return } try { # Esegue verifica su VM Write-Host "πŸ” Verifica su VM Linux..." -ForegroundColor Cyan ssh "$VM_USER@$VM_IP" "cd /var/www/netgescon && php artisan contabilita:verifica" Write-Host "βœ… Verifica completata!" -ForegroundColor Green } catch { Write-Host "❌ Errore durante la verifica: $($_.Exception.Message)" -ForegroundColor Red } } function Invoke-Backup { Write-Host "πŸ’Ύ Backup database..." -ForegroundColor Yellow if (!(Test-Prerequisites)) { return } try { $timestamp = Get-Date -Format "yyyyMMdd_HHmmss" # Esegue backup su VM Write-Host "πŸ“¦ Creazione backup su VM..." -ForegroundColor Cyan ssh "$VM_USER@$VM_IP" "cd /var/www/netgescon && php artisan tinker --execute='echo config(\"database.connections.mysql.database\");' | tail -1 | xargs -I {} mysqldump -u netgescon_user -p netgescon {} > /home/michele/netgescon/backup/database/netgescon_manual_backup_$timestamp.sql" # Scarica backup su Windows (opzionale) $downloadConfirm = Read-Host "πŸ“₯ Scaricare backup su Windows? (y/N)" if ($downloadConfirm -eq "y" -or $downloadConfirm -eq "Y") { $backupLocal = "$NETGESCON_WIN\backup\database" if (!(Test-Path $backupLocal)) { New-Item -ItemType Directory -Force -Path $backupLocal | Out-Null } scp "$VM_USER@${VM_IP}:/home/michele/netgescon/backup/database/netgescon_manual_backup_$timestamp.sql" "$backupLocal\" Write-Host "βœ… Backup scaricato: $backupLocal\netgescon_manual_backup_$timestamp.sql" -ForegroundColor Green } Write-Host "βœ… Backup completato!" -ForegroundColor Green } catch { Write-Host "❌ Errore durante il backup: $($_.Exception.Message)" -ForegroundColor Red } } function Show-Status { Write-Host "πŸ“Š STATO SISTEMA NETGESCON" -ForegroundColor Blue Write-Host "" try { # Stato Git locale Write-Host "πŸ“ Repository locale:" -ForegroundColor Yellow Set-Location $NETGESCON_WIN $lastCommit = git log -1 --format="%h %s (%cr)" Write-Host " Ultimo commit: $lastCommit" -ForegroundColor Cyan # Stato VM Write-Host "" Write-Host "πŸ–₯️ Virtual Machine:" -ForegroundColor Yellow try { $vmStatus = ssh -o ConnectTimeout=5 "$VM_USER@$VM_IP" "uptime" 2>$null Write-Host " βœ… VM Online: $vmStatus" -ForegroundColor Green # Stato Laravel $laravelStatus = ssh "$VM_USER@$VM_IP" "cd /var/www/netgescon && php artisan --version" 2>$null Write-Host " βœ… Laravel: $laravelStatus" -ForegroundColor Green } catch { Write-Host " ❌ VM non raggiungibile" -ForegroundColor Red } # Stato servizi Write-Host "" Write-Host "🌐 Servizi:" -ForegroundColor Yellow Write-Host " πŸš€ NetGescon: http://$VM_IP:8000" -ForegroundColor Cyan Write-Host " πŸ—„οΈ phpMyAdmin: http://$VM_IP/phpmyadmin" -ForegroundColor Cyan Write-Host " πŸ”§ Gitea: http://$VM_IP:3000" -ForegroundColor Cyan } catch { Write-Host "❌ Errore nel recupero stato: $($_.Exception.Message)" -ForegroundColor Red } } # πŸš€ ESECUZIONE PRINCIPALE switch ($Azione) { "diagnosi" { Invoke-Diagnosi } "setup" { Invoke-Setup } "sync" { Invoke-Sync } "verifica" { Invoke-Verifica } "backup" { Invoke-Backup } "status" { Show-Status } "help" { Show-Help } default { Show-Help } } Write-Host "" Write-Host "πŸ”— LINK UTILI:" -ForegroundColor Blue Write-Host " πŸ“– Manuale: docs/07-SISTEMA-CONTABILE-CONDOMINIALE.md" -ForegroundColor Cyan Write-Host " πŸ”§ Implementazione: docs/08-IMPLEMENTAZIONE-SISTEMA-CONTABILE-PRATICO.md" -ForegroundColor Cyan Write-Host " 🌐 NetGescon: http://$VM_IP:8000/admin" -ForegroundColor Cyan Write-Host "" Write-Host "πŸ’Ž Sistema contabile condominiale NetGescon - Controllo totale di ogni centesimo!" -ForegroundColor Green