diff --git a/app/Http/Controllers/TaskController.php b/app/Http/Controllers/TaskController.php index e3fbe38ae2ed..785991a2a8f4 100644 --- a/app/Http/Controllers/TaskController.php +++ b/app/Http/Controllers/TaskController.php @@ -82,9 +82,9 @@ class TaskController extends BaseController * * @return \Illuminate\Http\JsonResponse */ - public function getDatatable($clientPublicId = null) + public function getDatatable($clientPublicId = null, $projectPublicId = null) { - return $this->taskService->getDatatable($clientPublicId, Input::get('sSearch')); + return $this->taskService->getDatatable($clientPublicId, $projectPublicId, Input::get('sSearch')); } /** diff --git a/app/Ninja/Datatables/ProjectDatatable.php b/app/Ninja/Datatables/ProjectDatatable.php index 84542dc0e960..2051aea3f2de 100644 --- a/app/Ninja/Datatables/ProjectDatatable.php +++ b/app/Ninja/Datatables/ProjectDatatable.php @@ -48,13 +48,13 @@ class ProjectDatatable extends EntityDatatable [ 'budgeted_hours', function ($model) { - return $model->budgeted_hours; + return $model->budgeted_hours ?: ''; }, ], [ 'task_rate', function ($model) { - return floatval($model->task_rate) ? Utils::roundSignificant($model->task_rate) : ''; + return floatval($model->task_rate) ? Utils::formatMoney($model->task_rate) : ''; } ], ]; diff --git a/app/Ninja/Datatables/ProjectTaskDatatable.php b/app/Ninja/Datatables/ProjectTaskDatatable.php new file mode 100644 index 000000000000..827036e0b128 --- /dev/null +++ b/app/Ninja/Datatables/ProjectTaskDatatable.php @@ -0,0 +1,15 @@ +project; } - return $model->project_public_id ? link_to("projects/{$model->project_public_id}/edit", $model->project)->toHtml() : ''; + return $model->project_public_id ? link_to("projects/{$model->project_public_id}", $model->project)->toHtml() : ''; }, ], [ diff --git a/app/Ninja/Repositories/TaskRepository.php b/app/Ninja/Repositories/TaskRepository.php index 54f3582e4ba3..305fc9498dab 100644 --- a/app/Ninja/Repositories/TaskRepository.php +++ b/app/Ninja/Repositories/TaskRepository.php @@ -18,7 +18,7 @@ class TaskRepository extends BaseRepository return 'App\Models\Task'; } - public function find($clientPublicId = null, $filter = null) + public function find($clientPublicId = null, $projectPublicId = null, $filter = null) { $query = DB::table('tasks') ->leftJoin('clients', 'tasks.client_id', '=', 'clients.id') @@ -61,7 +61,9 @@ class TaskRepository extends BaseRepository 'task_statuses.name as task_status' ); - if ($clientPublicId) { + if ($projectPublicId) { + $query->where('projects.public_id', '=', $projectPublicId); + } elseif ($clientPublicId) { $query->where('clients.public_id', '=', $clientPublicId); } else { $query->whereNull('clients.deleted_at'); diff --git a/app/Services/TaskService.php b/app/Services/TaskService.php index 832a5caed92b..585795cc24f6 100644 --- a/app/Services/TaskService.php +++ b/app/Services/TaskService.php @@ -2,6 +2,7 @@ namespace App\Services; +use App\Ninja\Datatables\ProjectTaskDatatable; use App\Ninja\Datatables\TaskDatatable; use App\Ninja\Repositories\TaskRepository; use Auth; @@ -41,10 +42,15 @@ class TaskService extends BaseService * * @return \Illuminate\Http\JsonResponse */ - public function getDatatable($clientPublicId, $search) + public function getDatatable($clientPublicId, $projectPublicId, $search) { - $datatable = new TaskDatatable(true, $clientPublicId); - $query = $this->taskRepo->find($clientPublicId, $search); + if ($projectPublicId) { + $datatable = new ProjectTaskDatatable(true, true); + } else { + $datatable = new TaskDatatable(true, $clientPublicId); + } + + $query = $this->taskRepo->find($clientPublicId, $projectPublicId, $search); if (! Utils::hasPermission('view_all')) { $query->where('tasks.user_id', '=', Auth::user()->id); diff --git a/resources/views/list.blade.php b/resources/views/list.blade.php index f91234c96ce1..5963845143b2 100644 --- a/resources/views/list.blade.php +++ b/resources/views/list.blade.php @@ -97,9 +97,9 @@ {!! Datatable::table() ->addColumn(Utils::trans($datatable->columnFields(), $datatable->entityType)) - ->setUrl(url('api/' . Utils::pluralizeEntityType($entityType) . '/' . (isset($clientId) ? $clientId : (isset($vendorId) ? $vendorId : '')))) + ->setUrl(url('api/' . Utils::pluralizeEntityType($entityType) . '/' . (isset($clientId) ? (isset($projectId) ? ($clientId . '/' . $projectId) : $clientId) : (isset($vendorId) ? $vendorId : '')))) ->setCustomValues('entityType', Utils::pluralizeEntityType($entityType)) - ->setCustomValues('clientId', isset($clientId) && $clientId) + ->setCustomValues('clientId', isset($clientId) && $clientId && empty($projectId)) ->setOptions('sPaginationType', 'bootstrap') ->setOptions('aaSorting', [[isset($clientId) ? ($datatable->sortCol-1) : $datatable->sortCol, 'desc']]) ->render('datatable') !!} diff --git a/resources/views/projects/show.blade.php b/resources/views/projects/show.blade.php index 0fc59eec0fb7..a44e8df76c73 100644 --- a/resources/views/projects/show.blade.php +++ b/resources/views/projects/show.blade.php @@ -20,7 +20,7 @@