From 78c57e65c85c1a80fdb5228663515f2f8840f2b2 Mon Sep 17 00:00:00 2001 From: Lio Novelli Date: Thu, 12 May 2022 02:48:53 +0200 Subject: [PATCH] Small fixes in Report command and csv parsing. --- app/src/Commands/ReportCommand.php | 4 +++- app/src/Utils/CsvReport/ReportCsv.php | 9 ++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/src/Commands/ReportCommand.php b/app/src/Commands/ReportCommand.php index f623129..12a4cfb 100644 --- a/app/src/Commands/ReportCommand.php +++ b/app/src/Commands/ReportCommand.php @@ -49,12 +49,12 @@ class ReportCommand extends Command { } protected function execute(InputInterface $input, OutputInterface $output) :int { + $reports = $this->trackingService->listReports(); // Could just parse a csv file or actually get workItems from youtrack ... if ($input->hasParameterOption('--report') || $input->hasParameterOption('-r')) { if ($report = $input->getOption('report')) { $this->trackingService->setReportId($report); } else { - $reports = $this->trackingService->listReports(); $count = 1; foreach ($reports as $id => $name) { $output->writeln("[{$count}] {$name} ({$id})"); @@ -73,8 +73,10 @@ class ReportCommand extends Command { // Currently we only support csv download. $report_id = $this->trackingService->getReportId(); + $report_name = $reports[$report_id]; $file = $this->trackingService->downloadReport($report_id); // var_dump($file); + $output->writeln("report: {$report_name}"); $data = $this->csv->generateReportTable($file); $table = $this->buildTable($output, $data); $table->render(); diff --git a/app/src/Utils/CsvReport/ReportCsv.php b/app/src/Utils/CsvReport/ReportCsv.php index 77f3e6a..c366585 100644 --- a/app/src/Utils/CsvReport/ReportCsv.php +++ b/app/src/Utils/CsvReport/ReportCsv.php @@ -122,6 +122,9 @@ class ReportCsv implements ReportCsvInterface $rows[] = ['Gesamt netto', number_format($totalHours, 2, ',', '.'), ' ', number_format($totalPrice, 2, ',', '.')]; $add_separator = FALSE; } + if (empty($data)) { + $add_separator = TRUE; + } foreach ($data as $invoice_element) { if ($invoice_element instanceof ExpensesInterface) { if (!isset($added_expenses)) { @@ -176,8 +179,6 @@ class ReportCsv implements ReportCsvInterface foreach ($data as $line) { $project = explode('-', $line['id'])[0]; $previous_project = explode('-', $previous)[0]; - $project_time += (float) $line['time']; - $table[] = array_values($line); if ($project !== $previous_project) { // When project changes, add a sum of time for that project. $table[] = null; @@ -187,7 +188,9 @@ class ReportCsv implements ReportCsvInterface $project_time = 0; $all_projects[] = $project; } + $project_time += (float) $line['time']; $previous = $line['id']; + $table[] = array_values($line); } // Add sum for the last project. $table[] = null; @@ -217,7 +220,7 @@ class ReportCsv implements ReportCsvInterface // @TODO validate line $output[] = [ 'id' => $line[1], - 'name' => substr($line[2], 0, 80), + 'name' => substr($line[2], 0, 60), 'time' => $line[4], 'estimation' => $line[3], ];