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; } }