Browse Source

Move project jobs into ProjectJobsController

Add JobsController as first class citizen
pull/1/head
Nafies Luthfi 8 years ago
parent
commit
351be839de
  1. 11
      app/Entities/Projects/JobsRepository.php
  2. 11
      app/Entities/Projects/ProjectsRepository.php
  3. 22
      app/Http/Controllers/JobsController.php
  4. 7
      app/Http/Controllers/Projects/JobsController.php
  5. 7
      app/Http/Controllers/Projects/ProjectsController.php
  6. 14
      routes/web/projects.php

11
app/Entities/Projects/JobsRepository.php

@ -30,6 +30,17 @@ class JobsRepository extends BaseRepository
->get();
}
public function getProjectJobs($projectId, $type = null)
{
return Job::where(function ($query) use ($projectId, $type) {
$query->whereProjectId($projectId);
if ($type) {
$query->whereTypeId($type);
}
})->orderBy('position')->with('worker', 'tasks')->get();
}
public function requireProjectById($projectId)
{
return Project::findOrFail($projectId);

11
app/Entities/Projects/ProjectsRepository.php

@ -91,17 +91,6 @@ class ProjectsRepository extends BaseRepository
return 'deleted';
}
public function getProjectJobs($projectId, $type = null)
{
return Job::where(function ($query) use ($projectId, $type) {
$query->whereProjectId($projectId);
if ($type) {
$query->whereTypeId($type);
}
})->orderBy('position')->with('worker', 'tasks')->get();
}
public function updateStatus($statusId, $projectId)
{
$project = $this->requireById($projectId);

22
app/Http/Controllers/JobsController.php

@ -0,0 +1,22 @@
<?php
namespace App\Http\Controllers;
use App\Entities\Projects\JobsRepository;
class JobsController extends Controller
{
private $repo;
public function __construct(JobsRepository $repo)
{
$this->repo = $repo;
}
public function index()
{
$jobs = $this->repo->getUnfinishedJobs();
return view('jobs.unfinished', compact('jobs'));
}
}

7
app/Http/Controllers/Projects/JobsController.php

@ -3,6 +3,7 @@
namespace App\Http\Controllers\Projects;
use App\Entities\Projects\JobsRepository;
use App\Entities\Projects\Project;
use App\Http\Controllers\Controller;
use App\Http\Requests\Jobs\CreateRequest;
use App\Http\Requests\Jobs\DeleteRequest;
@ -19,10 +20,10 @@ class JobsController extends Controller
$this->repo = $repo;
}
public function index()
public function index(Project $project)
{
$jobs = $this->repo->getUnfinishedJobs();
return view('jobs.unfinished', compact('jobs'));
$jobs = $this->repo->getProjectJobs($project->id);
return view('projects.jobs.index', compact('project', 'jobs'));
}
public function create($projectId)

7
app/Http/Controllers/Projects/ProjectsController.php

@ -86,13 +86,6 @@ class ProjectsController extends Controller
return redirect()->route('projects.index');
}
public function jobs($projectId)
{
$project = $this->repo->requireById($projectId);
$jobs = $this->repo->getProjectJobs($projectId);
return view('projects.jobs.index', compact('project', 'jobs'));
}
public function subscriptions($projectId)
{
$project = $this->repo->requireById($projectId);

14
routes/web/projects.php

@ -5,7 +5,6 @@ Route::group(['middleware' => ['web', 'auth'], 'namespace' => 'Projects'], funct
* Projects Routes
*/
Route::get('projects/{id}/delete', ['as' => 'projects.delete', 'uses' => 'ProjectsController@delete']);
Route::get('projects/{id}/jobs', ['as' => 'projects.jobs', 'uses' => 'ProjectsController@jobs']);
Route::get('projects/{id}/jobs-export/{type?}', ['as' => 'projects.jobs-export', 'uses' => 'ProjectsController@jobsExport']);
Route::get('projects/{id}/subscriptions', ['as' => 'projects.subscriptions', 'uses' => 'ProjectsController@subscriptions']);
Route::post('projects/{id}/jobs-reorder', ['as' => 'projects.jobs-reorder', 'uses' => 'ProjectsController@jobsReorder']);
@ -29,7 +28,7 @@ Route::group(['middleware' => ['web', 'auth'], 'namespace' => 'Projects'], funct
Route::get('projects/{project}/invoices', ['as' => 'projects.invoices', 'uses' => 'InvoicesController@index']);
/**
* Jobs Routes
* Project Jobs Routes
*/
Route::get('projects/{id}/jobs/create', ['as' => 'jobs.create', 'uses' => 'JobsController@create']);
Route::get('projects/{id}/jobs/add-from-other-project', ['as' => 'jobs.add-from-other-project', 'uses' => 'JobsController@addFromOtherProject']);
@ -37,7 +36,8 @@ Route::group(['middleware' => ['web', 'auth'], 'namespace' => 'Projects'], funct
Route::post('projects/{id}/jobs', ['as' => 'jobs.store', 'uses' => 'JobsController@store']);
Route::post('projects/{id}/jobs/store-from-other-project', ['as' => 'jobs.store-from-other-project', 'uses' => 'JobsController@storeFromOtherProject']);
Route::get('jobs/{id}/delete', ['as' => 'jobs.delete', 'uses' => 'JobsController@delete']);
Route::resource('jobs', 'JobsController', ['except' => ['create', 'store']]);
Route::get('projects/{project}/jobs', ['as' => 'projects.jobs', 'uses' => 'JobsController@index']);
Route::resource('jobs', 'JobsController', ['except' => ['index', 'create', 'store']]);
/**
* Tasks Routes
@ -55,3 +55,11 @@ Route::group(['middleware' => ['web', 'auth'], 'namespace' => 'Projects'], funct
Route::get('files/{file}', ['as' => 'files.download', 'uses' => 'FilesController@show']);
Route::patch('files/{file}', ['as' => 'files.update', 'uses' => 'FilesController@update']);
});
Route::group(['middleware' => ['web', 'auth']], function () {
/**
* Unfinished Job List
*/
Route::get('jobs', ['as' => 'jobs.index', 'uses' => 'JobsController@index']);
});
Loading…
Cancel
Save