From d6bde1e3ec1d0b0fae7bb85e274e1bebb65d78db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Guillot?= Date: Sat, 29 Nov 2014 14:01:03 -0500 Subject: [PATCH] Add command line export/calculation for daily project summaries --- .../ProjectDailySummaryCalculation.php | 29 +++++++++++++++ app/Console/ProjectDailySummaryExport.php | 35 +++++++++++++++++++ app/Console/TaskExport.php | 2 +- ...cation.php => TaskOverdueNotification.php} | 2 +- kanboard | 4 ++- 5 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 app/Console/ProjectDailySummaryCalculation.php create mode 100644 app/Console/ProjectDailySummaryExport.php rename app/Console/{OverdueNotification.php => TaskOverdueNotification.php} (97%) diff --git a/app/Console/ProjectDailySummaryCalculation.php b/app/Console/ProjectDailySummaryCalculation.php new file mode 100644 index 000000000..04c4083db --- /dev/null +++ b/app/Console/ProjectDailySummaryCalculation.php @@ -0,0 +1,29 @@ +setName('projects:daily-summary') + ->setDescription('Calculate daily summary data for all projects'); + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $projects = $this->project->getAllByStatus(Project::ACTIVE); + + foreach ($projects as $project) { + $output->writeln('Run calculation for '.$project['name']); + $this->projectDailySummary->updateTotals($project['id'], date('Y-m-d')); + } + } +} diff --git a/app/Console/ProjectDailySummaryExport.php b/app/Console/ProjectDailySummaryExport.php new file mode 100644 index 000000000..6b96fddda --- /dev/null +++ b/app/Console/ProjectDailySummaryExport.php @@ -0,0 +1,35 @@ +setName('export:daily-project-summary') + ->setDescription('Daily project summary CSV export (number of tasks per column and per day)') + ->addArgument('project_id', InputArgument::REQUIRED, 'Project id') + ->addArgument('start_date', InputArgument::REQUIRED, 'Start date (YYYY-MM-DD)') + ->addArgument('end_date', InputArgument::REQUIRED, 'End date (YYYY-MM-DD)'); + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $data = $this->projectDailySummary->getAggregatedMetrics( + $input->getArgument('project_id'), + $input->getArgument('start_date'), + $input->getArgument('end_date') + ); + + if (is_array($data)) { + Tool::csv($data); + } + } +} diff --git a/app/Console/TaskExport.php b/app/Console/TaskExport.php index b9f151fb9..dea71fe62 100644 --- a/app/Console/TaskExport.php +++ b/app/Console/TaskExport.php @@ -14,7 +14,7 @@ class TaskExport extends Base { $this ->setName('export:tasks') - ->setDescription('Tasks export (CSV)') + ->setDescription('Tasks CSV export') ->addArgument('project_id', InputArgument::REQUIRED, 'Project id') ->addArgument('start_date', InputArgument::REQUIRED, 'Start date (YYYY-MM-DD)') ->addArgument('end_date', InputArgument::REQUIRED, 'End date (YYYY-MM-DD)'); diff --git a/app/Console/OverdueNotification.php b/app/Console/TaskOverdueNotification.php similarity index 97% rename from app/Console/OverdueNotification.php rename to app/Console/TaskOverdueNotification.php index 0987bf2a3..aa70fd01e 100644 --- a/app/Console/OverdueNotification.php +++ b/app/Console/TaskOverdueNotification.php @@ -8,7 +8,7 @@ use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; -class OverdueNotification extends Base +class TaskOverdueNotification extends Base { protected function configure() { diff --git a/kanboard b/kanboard index 2c2d74856..6c6d88a25 100755 --- a/kanboard +++ b/kanboard @@ -6,6 +6,8 @@ require __DIR__.'/app/common.php'; use Symfony\Component\Console\Application; $application = new Application('Kanboard', APP_VERSION); -$application->add(new Console\OverdueNotification($container)); +$application->add(new Console\TaskOverdueNotification($container)); $application->add(new Console\TaskExport($container)); +$application->add(new Console\ProjectDailySummaryCalculation($container)); +$application->add(new Console\ProjectDailySummaryExport($container)); $application->run();