Browse Source

User can set task as done

pull/64/head
Nafies Luthfi 5 years ago
parent
commit
fa12d5affa
  1. 10
      app/Http/Controllers/Projects/TasksController.php
  2. 8
      resources/views/jobs/partials/job-tasks.blade.php
  3. 1
      routes/web/projects.php
  4. 18
      tests/Feature/ManageTasksTest.php

10
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);
}
}

8
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', '', [

1
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']);

18
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,
]);
}
}
Loading…
Cancel
Save