Browse Source

Convert a task to become a job

pull/16/head
Nafies Luthfi 7 years ago
parent
commit
f1418fa446
  1. 22
      app/Http/Controllers/Projects/TasksController.php
  2. 4
      resources/lang/id/task.php
  3. 10
      resources/views/jobs/partials/job-tasks-operation.blade.php
  4. 1
      routes/web/projects.php
  5. 28
      tests/Feature/ManageJobsTest.php

22
app/Http/Controllers/Projects/TasksController.php

@ -68,4 +68,26 @@ class TasksController extends Controller
return redirect()->route('jobs.show', $task->job_id);
}
/**
* Set a task to become a job.
*
* @param \App\Entities\Projects\Task $task
* @return \Illuminate\Routing\Redirector
*/
public function setAsJob(Task $task)
{
$oldJob = $task->job;
$job = new Job;
$job->name = $task->name;
$job->description = $task->description;
$job->project_id = $oldJob->project_id;
$job->worker_id = $oldJob->worker_id;
$job->save();
flash(__('task.upgraded_to_job'), 'success');
return redirect()->route('jobs.show', $job);
}
}

4
resources/lang/id/task.php

@ -22,6 +22,10 @@ return [
'deleted' => 'Hapus data Task telah berhasil.',
'undeleted' => 'Data Task gagal dihapus.',
'set_as_job' => 'Set Menjadi Job',
'set_as_job_confirm' => 'Anda yakin mengubah task ini menjadi sebuah Job?',
'upgraded_as_job' => 'Task telah menjadi Job.',
// Attributes
'name' => 'Nama Task',
'progress' => 'Progress',

10
resources/views/jobs/partials/job-tasks-operation.blade.php

@ -31,6 +31,16 @@
</div>
{{ Form::close() }}
</div>
<div class="panel-footer">
{!! FormField::formButton(
[
'route' => ['tasks.set-as-job', $editableTask],
'onsubmit' => __('task.set_as_job_confirm'),
],
__('task.set_as_job'),
['class' => 'btn btn-warning', 'id' => 'set-as-job-'.$editableTask->id]
) !!}
</div>
</div>
@endcan
@endif

1
routes/web/projects.php

@ -52,6 +52,7 @@ Route::group(['middleware' => ['auth'], 'namespace' => 'Projects'], function ()
Route::post('jobs/{job}/tasks', ['as' => 'tasks.store', 'uses' => 'TasksController@store']);
Route::patch('tasks/{task}', ['as' => 'tasks.update', 'uses' => 'TasksController@update']);
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']);
/*
* Files Routes

28
tests/Feature/ManageJobsTest.php

@ -203,4 +203,32 @@ class ManageJobsTest extends TestCase
$this->visit(route('jobs.index'));
$this->seePageIs(route('jobs.index'));
}
/** @test */
public function admin_can_upgrade_a_task_to_become_job()
{
$user = $this->adminUserSigningIn();
$project = factory(Project::class)->create();
$job = factory(Job::class)->create([
'project_id' => $project->id,
'type_id' => 1,
'worker_id' => $user->id,
]);
$task = factory(Task::class)->create([
'name' => 'This is a Task',
'job_id' => $job->id,
'description' => 'Task description.',
]);
$this->visitRoute('jobs.show', [$job, 'action' => 'task_edit', 'task_id' => $task->id]);
$this->seeRouteIs('jobs.show', [$job, 'action' => 'task_edit', 'task_id' => $task->id]);
$this->seeElement('button', ['id' => 'set-as-job-'.$task->id]);
$this->press('set-as-job-'.$task->id);
$this->seeInDatabase('jobs', [
'name' => 'This is a Task',
'description' => 'Task description.',
]);
}
}
Loading…
Cancel
Save