From fa12d5affa5a267f2955572fe2d0a9320fd8e498 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Sun, 20 Sep 2020 09:16:08 +0800 Subject: [PATCH 1/6] User can set task as done --- app/Http/Controllers/Projects/TasksController.php | 10 ++++++++++ resources/views/jobs/partials/job-tasks.blade.php | 8 ++++++++ routes/web/projects.php | 1 + tests/Feature/ManageTasksTest.php | 18 ++++++++++++++++++ 4 files changed, 37 insertions(+) diff --git a/app/Http/Controllers/Projects/TasksController.php b/app/Http/Controllers/Projects/TasksController.php index 3157c77..3d89883 100755 --- a/app/Http/Controllers/Projects/TasksController.php +++ b/app/Http/Controllers/Projects/TasksController.php @@ -95,4 +95,14 @@ class TasksController extends Controller return redirect()->route('jobs.edit', $job); } + + public function setDone(Task $task) + { + $task->progress = 100; + $task->save(); + + flash(__('task.updated'), 'success'); + + return redirect()->route('jobs.show', $task->job); + } } diff --git a/resources/views/jobs/partials/job-tasks.blade.php b/resources/views/jobs/partials/job-tasks.blade.php index 20fe1d1..3d0e986 100644 --- a/resources/views/jobs/partials/job-tasks.blade.php +++ b/resources/views/jobs/partials/job-tasks.blade.php @@ -44,6 +44,14 @@ 'id' => $task->id . '-tasks-edit', 'icon' => 'edit' ]) !!} + {!! FormField::formButton(['route' => ['tasks.set_done', $task], 'method' => 'patch'], + __('task.set_as_done'), + ['class' => 'btn btn-success', 'id' => $task->id.'-set_task_done'], + [ + 'task_id' => $task->id, + 'job_id' => $task->job_id, + ] + ) !!} @endcan @can('delete', $task) {!! html_link_to_route('jobs.show', '', [ diff --git a/routes/web/projects.php b/routes/web/projects.php index e31823c..45aefba 100644 --- a/routes/web/projects.php +++ b/routes/web/projects.php @@ -62,6 +62,7 @@ Route::group(['middleware' => ['auth'], 'namespace' => 'Projects'], function () Route::get('jobs/{job}/tasks/create', ['as' => 'tasks.create', 'uses' => 'TasksController@create']); Route::post('jobs/{job}/tasks', ['as' => 'tasks.store', 'uses' => 'TasksController@store']); Route::patch('tasks/{task}', ['as' => 'tasks.update', 'uses' => 'TasksController@update']); + Route::patch('tasks/{task}/set_done', ['as' => 'tasks.set_done', 'uses' => 'TasksController@setDone']); Route::delete('tasks/{task}', ['as' => 'tasks.destroy', 'uses' => 'TasksController@destroy']); Route::post('tasks/{task}/set-as-job', ['as' => 'tasks.set-as-job', 'uses' => 'TasksController@setAsJob']); diff --git a/tests/Feature/ManageTasksTest.php b/tests/Feature/ManageTasksTest.php index ac6cd52..d580d4a 100644 --- a/tests/Feature/ManageTasksTest.php +++ b/tests/Feature/ManageTasksTest.php @@ -82,4 +82,22 @@ class ManageTasksTest extends TestCase $this->seePageIs(route('jobs.show', $job->id)); $this->see(trans('task.deleted')); } + + /** @test */ + public function admin_can_set_a_task_as_done() + { + $user = $this->adminUserSigningIn(); + $job = factory(Job::class)->create(['worker_id' => $user->id]); + $task = factory(Task::class)->create(['job_id' => $job->id, 'progress' => 0]); + + $this->visit(route('jobs.show', $job->id)); + $this->press($task->id.'-set_task_done'); + + $this->seePageIs(route('jobs.show', $job->id)); + $this->see(trans('task.updated')); + $this->seeInDatabase('tasks', [ + 'id' => $task->id, + 'progress' => 100, + ]); + } } From d028e43e172582df7ed66dcd44dcd37893b4fe4f Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Sun, 20 Sep 2020 09:18:39 +0800 Subject: [PATCH 2/6] Update task lang --- resources/lang/de/task.php | 1 + resources/lang/en/task.php | 1 + resources/lang/id/task.php | 1 + resources/views/jobs/partials/job-tasks.blade.php | 16 ++++++++-------- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/resources/lang/de/task.php b/resources/lang/de/task.php index d63ab69..390bff1 100644 --- a/resources/lang/de/task.php +++ b/resources/lang/de/task.php @@ -21,6 +21,7 @@ return [ 'delete' => 'Vorgang löschen', 'deleted' => 'Vorgan wurde gelöscht.', 'undeleted' => 'Vorgang nicht gelöscht.', + 'set_done' => 'Set done', // Attributes 'name' => 'Vorgang Name', diff --git a/resources/lang/en/task.php b/resources/lang/en/task.php index b1f1697..3178a51 100644 --- a/resources/lang/en/task.php +++ b/resources/lang/en/task.php @@ -21,6 +21,7 @@ return [ 'delete' => 'Delete Task', 'deleted' => 'Task has been deleted.', 'undeleted' => 'Task not deleted.', + 'set_done' => 'Set done', // Attributes 'name' => 'Task Name', diff --git a/resources/lang/id/task.php b/resources/lang/id/task.php index 69a9d12..142f7a0 100644 --- a/resources/lang/id/task.php +++ b/resources/lang/id/task.php @@ -21,6 +21,7 @@ return [ 'delete' => 'Hapus Task', 'deleted' => 'Hapus data Task telah berhasil.', 'undeleted' => 'Data Task gagal dihapus.', + 'set_done' => 'Set Selesai', 'set_as_job' => 'Set Menjadi Job', 'set_as_job_confirm' => 'Anda yakin mengubah task ini menjadi sebuah Job?', diff --git a/resources/views/jobs/partials/job-tasks.blade.php b/resources/views/jobs/partials/job-tasks.blade.php index 3d0e986..154f4de 100644 --- a/resources/views/jobs/partials/job-tasks.blade.php +++ b/resources/views/jobs/partials/job-tasks.blade.php @@ -34,6 +34,14 @@ {{ $task->progress }} % @can('update', $task) + {!! FormField::formButton(['route' => ['tasks.set_done', $task], 'method' => 'patch'], + __('task.set_done'), + ['class' => 'btn btn-success btn-xs', 'id' => $task->id.'-set_task_done'], + [ + 'task_id' => $task->id, + 'job_id' => $task->job_id, + ] + ) !!} {!! html_link_to_route('jobs.show', '', [ $job, 'action' => 'task_edit', @@ -44,14 +52,6 @@ 'id' => $task->id . '-tasks-edit', 'icon' => 'edit' ]) !!} - {!! FormField::formButton(['route' => ['tasks.set_done', $task], 'method' => 'patch'], - __('task.set_as_done'), - ['class' => 'btn btn-success', 'id' => $task->id.'-set_task_done'], - [ - 'task_id' => $task->id, - 'job_id' => $task->job_id, - ] - ) !!} @endcan @can('delete', $task) {!! html_link_to_route('jobs.show', '', [ From 8badf7c3211045e7633a25a5c5eb9558b6abec56 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Sun, 20 Sep 2020 09:25:01 +0800 Subject: [PATCH 3/6] Fix failed test --- tests/Feature/Users/ManageUsersTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Feature/Users/ManageUsersTest.php b/tests/Feature/Users/ManageUsersTest.php index ab98d2b..fe7e5f3 100644 --- a/tests/Feature/Users/ManageUsersTest.php +++ b/tests/Feature/Users/ManageUsersTest.php @@ -41,7 +41,7 @@ class ManageUsersTest extends TestCase 'name' => 'Nama User', 'email' => 'user@mail.com', 'password' => 'password', - 'role' => [1, 2], // Administrator, Worker + 'role' => [1 => 1, 2 => 2], // Administrator, Worker ]); $this->seePageIs(route('users.index')); @@ -89,7 +89,7 @@ class ManageUsersTest extends TestCase 'name' => 'Ganti nama User', 'email' => 'member@mail.dev', 'password' => 'password', - 'role' => [1, 2], // Administrator, Worker + 'role' => [1 => 1, 2 => 2], // Administrator, Worker 'lang' => 'id', ]); From a28d9524ee27882ca1373cfdac91c36002dd89d3 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Sun, 20 Sep 2020 09:26:52 +0800 Subject: [PATCH 4/6] Hide set_task_done button when progress is 100 --- resources/views/jobs/partials/job-tasks.blade.php | 18 ++++++++++-------- tests/Feature/ManageTasksTest.php | 1 + 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/resources/views/jobs/partials/job-tasks.blade.php b/resources/views/jobs/partials/job-tasks.blade.php index 154f4de..e27c3dd 100644 --- a/resources/views/jobs/partials/job-tasks.blade.php +++ b/resources/views/jobs/partials/job-tasks.blade.php @@ -34,14 +34,16 @@ {{ $task->progress }} % @can('update', $task) - {!! FormField::formButton(['route' => ['tasks.set_done', $task], 'method' => 'patch'], - __('task.set_done'), - ['class' => 'btn btn-success btn-xs', 'id' => $task->id.'-set_task_done'], - [ - 'task_id' => $task->id, - 'job_id' => $task->job_id, - ] - ) !!} + @if ($task->progress < 100) + {!! FormField::formButton(['route' => ['tasks.set_done', $task], 'method' => 'patch'], + __('task.set_done'), + ['class' => 'btn btn-success btn-xs', 'id' => $task->id.'-set_task_done'], + [ + 'task_id' => $task->id, + 'job_id' => $task->job_id, + ] + ) !!} + @endif {!! html_link_to_route('jobs.show', '', [ $job, 'action' => 'task_edit', diff --git a/tests/Feature/ManageTasksTest.php b/tests/Feature/ManageTasksTest.php index d580d4a..8e53157 100644 --- a/tests/Feature/ManageTasksTest.php +++ b/tests/Feature/ManageTasksTest.php @@ -95,6 +95,7 @@ class ManageTasksTest extends TestCase $this->seePageIs(route('jobs.show', $job->id)); $this->see(trans('task.updated')); + $this->dontSeeElement('button', ['id' => $task->id.'-set_task_done']); $this->seeInDatabase('tasks', [ 'id' => $task->id, 'progress' => 100, From 59041ca7360a533857dd3caffabf4a3a71a3183d Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Sun, 20 Sep 2020 09:36:24 +0800 Subject: [PATCH 5/6] Move set task done button to progress column --- resources/views/jobs/partials/job-tasks.blade.php | 27 ++++++++++++++--------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/resources/views/jobs/partials/job-tasks.blade.php b/resources/views/jobs/partials/job-tasks.blade.php index e27c3dd..108d511 100644 --- a/resources/views/jobs/partials/job-tasks.blade.php +++ b/resources/views/jobs/partials/job-tasks.blade.php @@ -31,19 +31,24 @@
{{ $task->name }}
{!! nl2br($task->description) !!}
- {{ $task->progress }} % + + {{ $task->progress }} % + + @can('update', $task) + @if ($task->progress < 100) + {!! FormField::formButton(['route' => ['tasks.set_done', $task], 'method' => 'patch'], + __('task.set_done'), + ['class' => 'btn btn-success btn-xs', 'id' => $task->id.'-set_task_done'], + [ + 'task_id' => $task->id, + 'job_id' => $task->job_id, + ] + ) !!} + @endif + @endcan + @can('update', $task) - @if ($task->progress < 100) - {!! FormField::formButton(['route' => ['tasks.set_done', $task], 'method' => 'patch'], - __('task.set_done'), - ['class' => 'btn btn-success btn-xs', 'id' => $task->id.'-set_task_done'], - [ - 'task_id' => $task->id, - 'job_id' => $task->job_id, - ] - ) !!} - @endif {!! html_link_to_route('jobs.show', '', [ $job, 'action' => 'task_edit', From 80dd6dbad281fee2914a04e77e7e133496b6acc7 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Sun, 20 Sep 2020 09:56:27 +0800 Subject: [PATCH 6/6] Update luthfi/formfield package --- composer.json | 2 +- composer.lock | 20 +++++++++++--------- tests/Feature/Users/ManageUsersTest.php | 4 ++-- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/composer.json b/composer.json index 281fc80..c2ca83f 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,7 @@ "fideloper/proxy": "^4.0", "laracasts/presenter": "^0.2.1", "laravel/framework": "^6.0", - "luthfi/formfield": "^1.0", + "luthfi/formfield": "1.*", "riskihajar/terbilang": "^1.2", "spatie/laravel-fractal": "^5.0" }, diff --git a/composer.lock b/composer.lock index 4d75d30..6dbe629 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "df83c9097f4fde630adf7fadef8312ef", + "content-hash": "331f543b74d05d83017acb6e7493bd53", "packages": [ { "name": "backup-manager/backup-manager", @@ -888,21 +888,21 @@ }, { "name": "luthfi/formfield", - "version": "1.x-dev", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/nafiesl/FormField.git", - "reference": "f869f8804da32d41c511e9b77e5f145fc94be171" + "reference": "b1dc8d222901f11759a70f34a01a89d94fa67b68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nafiesl/FormField/zipball/f869f8804da32d41c511e9b77e5f145fc94be171", - "reference": "f869f8804da32d41c511e9b77e5f145fc94be171", + "url": "https://api.github.com/repos/nafiesl/FormField/zipball/b1dc8d222901f11759a70f34a01a89d94fa67b68", + "reference": "b1dc8d222901f11759a70f34a01a89d94fa67b68", "shasum": "" }, "require": { - "laravelcollective/html": "5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.* || 6.0.*", - "php": ">=5.6.4" + "laravelcollective/html": ">=5.3", + "php": ">=7.2" }, "require-dev": { "orchestra/testbench": ">=3.0 <3.8" @@ -936,7 +936,7 @@ } ], "description": "Laravel Form Field the extension of Laravelcollective Form for Laravel 5.3 and newer with Twitter Bootstrap 3", - "time": "2019-09-04T11:37:35+00:00" + "time": "2020-05-22T15:27:39+00:00" }, { "name": "monolog/monolog", @@ -4250,6 +4250,7 @@ "keywords": [ "tokenizer" ], + "abandoned": true, "time": "2019-09-17T06:23:10+00:00" }, { @@ -5062,5 +5063,6 @@ "platform": { "php": "^7.2" }, - "platform-dev": [] + "platform-dev": [], + "plugin-api-version": "1.1.0" } diff --git a/tests/Feature/Users/ManageUsersTest.php b/tests/Feature/Users/ManageUsersTest.php index fe7e5f3..ab98d2b 100644 --- a/tests/Feature/Users/ManageUsersTest.php +++ b/tests/Feature/Users/ManageUsersTest.php @@ -41,7 +41,7 @@ class ManageUsersTest extends TestCase 'name' => 'Nama User', 'email' => 'user@mail.com', 'password' => 'password', - 'role' => [1 => 1, 2 => 2], // Administrator, Worker + 'role' => [1, 2], // Administrator, Worker ]); $this->seePageIs(route('users.index')); @@ -89,7 +89,7 @@ class ManageUsersTest extends TestCase 'name' => 'Ganti nama User', 'email' => 'member@mail.dev', 'password' => 'password', - 'role' => [1 => 1, 2 => 2], // Administrator, Worker + 'role' => [1, 2], // Administrator, Worker 'lang' => 'id', ]);