feat(ticket): add command to convert fixed_window validity times between local timezone and UTC
This commit is contained in:
@@ -185,10 +185,11 @@ Artisan::command(
|
||||
|
||||
Artisan::command(
|
||||
'tickets:convert-validity-times-to-utc
|
||||
{--ids= : IDs separados por coma, confirmados como hora local}
|
||||
{--all : Seleccionar todos los validity_times de tipo fixed_window}
|
||||
{--source-timezone=America/Argentina/Buenos_Aires : Zona de los valores guardados}
|
||||
{--apply : Aplicar la conversión; sin esta opción sólo muestra una vista previa}',
|
||||
{--ids= : IDs separados por coma}
|
||||
{--all : Seleccionar todos los fixed_window}
|
||||
{--source-timezone=America/Argentina/Buenos_Aires : Zona local; destino cuando se usa --reverse}
|
||||
{--reverse : Convertir desde UTC hacia la zona local}
|
||||
{--apply : Aplicar; sin esta opción sólo muestra una vista previa}',
|
||||
function (ConvertValidityTimesToUtcService $service): int {
|
||||
$input = trim((string) $this->option('ids'));
|
||||
if ($input !== '' && ! preg_match('/^[1-9][0-9]*(\s*,\s*[1-9][0-9]*)*$/', $input)) {
|
||||
@@ -197,19 +198,20 @@ Artisan::command(
|
||||
return self::FAILURE;
|
||||
}
|
||||
$ids = $input === '' ? [] : array_values(array_unique(array_map('intval', explode(',', $input))));
|
||||
$this->warn('Los valores seleccionados se interpretan como hora local. Repetir --apply vuelve a convertirlos; no hay registro de ejecuciones.');
|
||||
$timezone = (string) $this->option('source-timezone');
|
||||
$reverse = (bool) $this->option('reverse');
|
||||
$this->info($reverse ? "UTC -> {$timezone}" : "{$timezone} -> UTC");
|
||||
$this->warn('Cada ejecución con --apply transforma los valores actuales; no hay registro ni detección de conversiones anteriores.');
|
||||
try {
|
||||
$result = $service->run($ids, (string) $this->option('source-timezone'), (bool) $this->option('apply'), (bool) $this->option('all'));
|
||||
$result = $service->run($ids, $timezone, (bool) $this->option('apply'), (bool) $this->option('all'), $reverse);
|
||||
} catch (Throwable $exception) {
|
||||
$this->error($exception->getMessage());
|
||||
|
||||
return self::FAILURE;
|
||||
}
|
||||
$this->table(['ID', 'Estado', 'Inicio original', 'Fin original', 'Inicio UTC', 'Fin UTC'], $result);
|
||||
$this->info($this->option('apply')
|
||||
? 'Conversión aplicada. Los time_window no fueron modificados.'
|
||||
: 'Vista previa: no se modificó ningún registro.');
|
||||
$this->table(['ID', 'Inicio original', 'Fin original', 'Inicio resultante', 'Fin resultante'], $result);
|
||||
$this->info($this->option('apply') ? 'Conversión aplicada.' : 'Vista previa: no se modificaron datos.');
|
||||
|
||||
return self::SUCCESS;
|
||||
}
|
||||
)->purpose('Convertir fixed_window locales a UTC por IDs o todos, con vista previa');
|
||||
)->purpose('Convertir fixed_window entre hora local y UTC, con vista previa');
|
||||
|
||||
Reference in New Issue
Block a user