From ec963e0823f65f993311aef07e2cf51541211bdb Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Sun, 18 Sep 2016 20:45:41 +0300 Subject: [PATCH] Added basic task report --- app/Http/Controllers/ReportController.php | 29 +++++++++++++++++++++++ app/Models/Task.php | 8 +++++++ resources/views/tasks/edit.blade.php | 2 +- 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/ReportController.php b/app/Http/Controllers/ReportController.php index 327ff7e5ee25..3ec1913c6b8d 100644 --- a/app/Http/Controllers/ReportController.php +++ b/app/Http/Controllers/ReportController.php @@ -11,6 +11,7 @@ use App\Models\Account; use App\Models\Client; use App\Models\Payment; use App\Models\Expense; +use App\Models\Task; /** * Class ReportController @@ -71,6 +72,7 @@ class ReportController extends BaseController ENTITY_PRODUCT => trans('texts.product'), ENTITY_PAYMENT => trans('texts.payment'), ENTITY_EXPENSE => trans('texts.expense'), + ENTITY_TASK => trans('texts.task'), ENTITY_TAX_RATE => trans('texts.tax'), ]; @@ -121,9 +123,36 @@ class ReportController extends BaseController return $this->generateTaxRateReport($startDate, $endDate, $dateField, $isExport); } elseif ($reportType == ENTITY_EXPENSE) { return $this->generateExpenseReport($startDate, $endDate, $isExport); + } elseif ($reportType == ENTITY_TASK) { + return $this->generateTaskReport($startDate, $endDate, $isExport); } } + private function generateTaskReport($startDate, $endDate, $isExport) + { + $columns = ['client', 'date', 'duration']; + $displayData = []; + + $tasks = Task::scope() + ->with('client.contacts') + ->withArchived() + ->dateRange($startDate, $endDate); + + foreach ($tasks->get() as $task) { + $displayData[] = [ + $task->client ? ($isExport ? $task->client->getDisplayName() : $task->client->present()->link) : trans('texts.unassigned'), + $task->getStartTime(), + Utils::formatTime($task->getDuration()), + ]; + } + + return [ + 'columns' => $columns, + 'displayData' => $displayData, + 'reportTotals' => [], + ]; + } + /** * @param $startDate * @param $endDate diff --git a/app/Models/Task.php b/app/Models/Task.php index c1534d8898f1..a56453c4371e 100644 --- a/app/Models/Task.php +++ b/app/Models/Task.php @@ -165,6 +165,14 @@ class Task extends EntityModel return '#' . $this->public_id; } + + public function scopeDateRange($query, $startDate, $endDate) + { + $query->whereRaw('cast(substring(time_log, 3, 10) as unsigned) >= ' . $startDate->format('U')); + $query->whereRaw('cast(substring(time_log, 3, 10) as unsigned) <= ' . $endDate->format('U')); + + return $query; + } } diff --git a/resources/views/tasks/edit.blade.php b/resources/views/tasks/edit.blade.php index 1baee6a36780..23882d7223fa 100644 --- a/resources/views/tasks/edit.blade.php +++ b/resources/views/tasks/edit.blade.php @@ -12,7 +12,7 @@