option('to') !== null ? Carbon::parse((string) $this->option('to')) : Carbon::now();
$from = $this->option('from') !== null
? Carbon::parse((string) $this->option('from'))
: $to->copy()->subMonths(max(1, (int) $this->option('months')));
$data = $report->build($from, $to);
if ($this->option('json')) {
$this->line((string) json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
return self::SUCCESS;
}
$this->info("Ablehnungsquote je Quelle — {$data['from']} bis {$data['to']}");
$this->newLine();
if ($data['sources'] === []) {
$this->warn('Keine Einreichungen im Zeitraum.');
return self::SUCCESS;
}
$rows = [];
foreach ($data['sources'] as $source) {
$rows[] = [
$source['label'],
$source['eingereicht'],
$source['veroeffentlicht'],
$source['abgelehnt'],
$source['offen'],
$source['quote'] === null ? '–' : $source['quote'].' %',
];
}
$t = $data['totals'];
$rows[] = new TableSeparator;
$rows[] = [
'gesamt',
$t['eingereicht'],
$t['veroeffentlicht'],
$t['abgelehnt'],
$t['offen'],
$t['quote'] === null ? '–' : ''.$t['quote'].' %',
];
$this->table(['Quelle', 'Eingereicht', 'Veröffentlicht', 'Abgelehnt', 'Offen', 'Quote'], $rows);
$this->line(' Quote = abgelehnt / entschieden. Noch offene Prüfungen zählen nicht in den Nenner.');
if ($data['entscheidungen_ohne_einreichung'] > 0) {
$this->newLine();
$this->warn(sprintf(
'%d Entscheidungen betreffen Einreichungen von VOR dem Zeitraum und sind keiner Quelle zugeordnet. '
.'Für einen belastbaren Basiswert den Zeitraum weiter zurück legen.',
$data['entscheidungen_ohne_einreichung'],
));
}
return self::SUCCESS;
}
}