Browse Source

Refactor TasksController

Remove TasksRepository dependency
Use Task model binding on route
pull/7/head
Nafies Luthfi 8 years ago
parent
commit
c36f96e1af
  1. 30
      app/Entities/Projects/TasksRepository.php
  2. 31
      app/Http/Controllers/Projects/TasksController.php
  3. 5
      app/Http/Requests/Tasks/CreateRequest.php
  4. 7
      app/Http/Requests/Tasks/DeleteRequest.php
  5. 13
      app/Http/Requests/Tasks/UpdateRequest.php
  6. 8
      routes/web/projects.php

30
app/Entities/Projects/TasksRepository.php

@ -1,30 +0,0 @@
<?php
namespace App\Entities\Projects;
use App\Entities\BaseRepository;
/**
* Tasks Repository Class.
*/
class TasksRepository extends BaseRepository
{
protected $model;
public function __construct(Task $model)
{
parent::__construct($model);
}
public function createTask($taskData, $jobId)
{
$taskData['job_id'] = $jobId;
return $this->storeArray($taskData);
}
public function getTasksByJobId($jobId)
{
return Task::whereTaskId($jobId)->get();
}
}

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

@ -2,7 +2,8 @@
namespace App\Http\Controllers\Projects;
use App\Entities\Projects\TasksRepository;
use App\Entities\Projects\Job;
use App\Entities\Projects\Task;
use App\Http\Controllers\Controller;
use App\Http\Requests\Tasks\CreateRequest;
use App\Http\Requests\Tasks\DeleteRequest;
@ -15,41 +16,35 @@ use App\Http\Requests\Tasks\UpdateRequest;
*/
class TasksController extends Controller
{
private $repo;
public function __construct(TasksRepository $repo)
public function store(CreateRequest $request, Job $job)
{
$this->repo = $repo;
}
$newTask = $request->validated();
$newTask['job_id'] = $job->id;
$task = Task::create($newTask);
public function store(CreateRequest $req, $jobId)
{
$job = $this->repo->createTask($req->except('_token'), $jobId);
flash(trans('task.created'), 'success');
return redirect()->route('jobs.show', $jobId);
return redirect()->route('jobs.show', $job);
}
public function update(UpdateRequest $req, $taskId)
public function update(UpdateRequest $request, Task $task)
{
$task = $this->repo->update($req->except(['_method', '_token']), $taskId);
$task->update($request->validated());
flash(trans('task.updated'), 'success');
return redirect()->route('jobs.show', $task->job_id);
}
public function destroy(DeleteRequest $req, $taskId)
public function destroy(DeleteRequest $request, Task $task)
{
$task = $this->repo->requireById($taskId);
$jobId = $task->job_id;
if ($taskId == $req->get('task_id')) {
if ($task->id == $request->get('task_id')) {
$task->delete();
flash(trans('task.deleted'), 'success');
} else {
flash(trans('task.undeleted'), 'danger');
}
return redirect()->route('jobs.show', $jobId);
return redirect()->route('jobs.show', $task->job_id);
}
}

5
app/Http/Requests/Tasks/CreateRequest.php

@ -26,9 +26,8 @@ class CreateRequest extends Request
{
return [
'name' => 'required|max:60',
'description' => 'max:255',
'progress' => 'numeric|max:100',
'route_name' => 'max:255',
'description' => 'nullable|max:255',
'progress' => 'required|numeric|max:100',
];
}
}

7
app/Http/Requests/Tasks/DeleteRequest.php

@ -2,7 +2,6 @@
namespace App\Http\Requests\Tasks;
use App\Entities\Projects\Task;
use App\Http\Requests\Request;
class DeleteRequest extends Request
@ -14,9 +13,9 @@ class DeleteRequest extends Request
*/
public function authorize()
{
$task = Task::findOrFail($this->segment(2));
return auth()->user()->can('delete', $task);
return auth()->user()->can(
'delete', $this->route('task')
);
}
/**

13
app/Http/Requests/Tasks/UpdateRequest.php

@ -2,7 +2,6 @@
namespace App\Http\Requests\Tasks;
use App\Entities\Projects\Task;
use App\Http\Requests\Request;
class UpdateRequest extends Request
@ -14,9 +13,9 @@ class UpdateRequest extends Request
*/
public function authorize()
{
$task = Task::findOrFail($this->segment(2));
return auth()->user()->can('update', $task);
return auth()->user()->can(
'update', $this->route('task')
);
}
/**
@ -28,9 +27,9 @@ class UpdateRequest extends Request
{
return [
'name' => 'required|max:60',
'description' => 'max:255',
'progress' => 'numeric|max:100',
'route_name' => 'max:255',
'description' => 'nullable|max:255',
'progress' => 'required|numeric|max:100',
'job_id' => 'required|numeric|exists:jobs,id',
];
}
}

8
routes/web/projects.php

@ -40,10 +40,10 @@ Route::group(['middleware' => ['auth'], 'namespace' => 'Projects'], function ()
/*
* Tasks Routes
*/
Route::get('jobs/{id}/tasks/create', ['as' => 'tasks.create', 'uses' => 'TasksController@create']);
Route::post('jobs/{id}/tasks', ['as' => 'tasks.store', 'uses' => 'TasksController@store']);
Route::patch('task/{id}', ['as' => 'tasks.update', 'uses' => 'TasksController@update']);
Route::delete('task/{id}', ['as' => 'tasks.destroy', 'uses' => 'TasksController@destroy']);
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::delete('tasks/{task}', ['as' => 'tasks.destroy', 'uses' => 'TasksController@destroy']);
/*
* Files Routes

Loading…
Cancel
Save