Files
dtic-DIIAA/adn/tools/cli/verificar_fechas_timezone_dasu.rb
T

96 lines
3.3 KiB
Ruby

#!/usr/bin/env ruby
# frozen_string_literal: true
require_relative 'drones/lib/dasu_executor'
puts "=== VERIFICAR FECHAS DESPUÉS DEL CAMBIO DE ZONA HORARIA ==="
puts "Fecha: #{Time.now.strftime('%Y-%m-%d %H:%M:%S')}"
puts ""
ps_script = <<~PSCMD.strip
$ErrorActionPreference = "Stop"
$connString = "Server=localhost;Database=sysdasuten;Integrated Security=true;TrustServerCertificate=yes;"
$conn = New-Object System.Data.SqlClient.SqlConnection($connString)
$conn.Open()
Write-Host "[1] Zona horaria actual del sistema:"
$tz = Get-TimeZone
Write-Host " ID: $($tz.Id)"
Write-Host " DisplayName: $($tz.DisplayName)"
Write-Host " BaseUtcOffset: $($tz.BaseUtcOffset)"
Write-Host "`n[2] Fecha/hora actual:"
Write-Host " Get-Date: $(Get-Date)"
Write-Host " UTC: $([DateTime]::UtcNow)"
Write-Host "`n[3] Última fecha en BonosAfiliado:"
$cmd = New-Object System.Data.SqlClient.SqlCommand("SELECT MAX(fecha) as ultima FROM BonosAfiliado", $conn)
$ultima = $cmd.ExecuteScalar()
Write-Host " MAX(fecha): $ultima"
Write-Host "`n[4] Últimos 10 registros (ordenados por fecha):"
$cmd = New-Object System.Data.SqlClient.SqlCommand("
SELECT TOP 10
idsolicitud,
CONVERT(varchar, fecha, 103) as fecha_ddmmaaaa,
codigoafiliado,
dependencia,
bono,
CONVERT(varchar, __tiempo, 103) + ' ' + CONVERT(varchar, __tiempo, 108) as tiempo_completo
FROM BonosAfiliado
WHERE fecha IS NOT NULL
ORDER BY fecha DESC, idsolicitud DESC
", $conn)
$adapter = New-Object System.Data.SqlClient.SqlDataAdapter($cmd)
$ds = New-Object System.Data.DataSet
$adapter.Fill($ds)
if ($ds.Tables[0].Rows.Count -gt 0) {
Write-Host " idsol | fecha (dd/mm/aaaa) | afiliado | dep | bono | __tiempo"
Write-Host " " + ("-" * 80)
$ds.Tables[0].Rows | ForEach-Object {
Write-Host " $($_.idsolicitud.ToString().PadLeft(5)) | $($_.fecha_ddmmaaaa) | $($_.codigoafiliado.ToString().PadLeft(5)) | $($_.dependencia.ToString().PadLeft(2)) | $($_.bono) | $($_.tiempo_completo)"
}
}
Write-Host "`n[5] Registros por día (últimos 5 días):"
$cmd = New-Object System.Data.SqlClient.SqlCommand("
SELECT TOP 5
CONVERT(varchar, CAST(fecha AS DATE), 103) as dia_ddmmaaaa,
COUNT(*) as cantidad,
MIN(idsolicitud) as min_id,
MAX(idsolicitud) as max_id
FROM BonosAfiliado
GROUP BY CAST(fecha AS DATE)
ORDER BY CAST(fecha AS DATE) DESC
", $conn)
$adapter = New-Object System.Data.SqlClient.SqlDataAdapter($cmd)
$ds = New-Object System.Data.DataSet
$adapter.Fill($ds)
$ds.Tables[0].Rows | ForEach-Object {
Write-Host " $($_.dia_ddmmaaaa): $($_.cantidad) registros | IDs: [$($_.min_id) - $($_.max_id)]"
}
Write-Host "`n[6] Verificando formato de fecha ISO:"
$cmd = New-Object System.Data.SqlClient.SqlCommand("
SELECT TOP 3
fecha,
CONVERT(varchar, fecha, 120) as formato_iso,
__tiempo
FROM BonosAfiliado
ORDER BY fecha DESC
", $conn)
$adapter = New-Object System.Data.SqlClient.SqlDataAdapter($cmd)
$ds = New-Object System.Data.DataSet
$adapter.Fill($ds)
$ds.Tables[0].Rows | ForEach-Object {
Write-Host " fecha=$($_.fecha) | ISO=$($_.formato_iso)"
}
$conn.Close()
PSCMD
DasuExecutor.execute_ps_on_dasu(ps_script)
puts "\n✅ Verificación completada"