From c36f96e1affc5b6c412f52bc5cecef1f4e641a52 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Sun, 29 Apr 2018 21:11:21 +0800 Subject: [PATCH] Refactor TasksController Remove TasksRepository dependency Use Task model binding on route --- app/Entities/Projects/TasksRepository.php | 30 ---------------------- app/Http/Controllers/Projects/TasksController.php | 31 ++++++++++------------- app/Http/Requests/Tasks/CreateRequest.php | 5 ++-- app/Http/Requests/Tasks/DeleteRequest.php | 7 +++-- app/Http/Requests/Tasks/UpdateRequest.php | 13 +++++----- routes/web/projects.php | 8 +++--- 6 files changed, 28 insertions(+), 66 deletions(-) delete mode 100755 app/Entities/Projects/TasksRepository.php diff --git a/app/Entities/Projects/TasksRepository.php b/app/Entities/Projects/TasksRepository.php deleted file mode 100755 index fca1547..0000000 --- a/app/Entities/Projects/TasksRepository.php +++ /dev/null @@ -1,30 +0,0 @@ -storeArray($taskData); - } - - public function getTasksByJobId($jobId) - { - return Task::whereTaskId($jobId)->get(); - } -} diff --git a/app/Http/Controllers/Projects/TasksController.php b/app/Http/Controllers/Projects/TasksController.php index 01085bc..fa6b2fc 100755 --- a/app/Http/Controllers/Projects/TasksController.php +++ b/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); } } diff --git a/app/Http/Requests/Tasks/CreateRequest.php b/app/Http/Requests/Tasks/CreateRequest.php index 232668f..56113c1 100644 --- a/app/Http/Requests/Tasks/CreateRequest.php +++ b/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', ]; } } diff --git a/app/Http/Requests/Tasks/DeleteRequest.php b/app/Http/Requests/Tasks/DeleteRequest.php index 55b12ca..1f0767d 100644 --- a/app/Http/Requests/Tasks/DeleteRequest.php +++ b/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') + ); } /** diff --git a/app/Http/Requests/Tasks/UpdateRequest.php b/app/Http/Requests/Tasks/UpdateRequest.php index 7bc44fa..a59827b 100644 --- a/app/Http/Requests/Tasks/UpdateRequest.php +++ b/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', ]; } } diff --git a/routes/web/projects.php b/routes/web/projects.php index cf04e83..0c1af20 100644 --- a/routes/web/projects.php +++ b/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