From 52e65c551e7f48e065af1aa87647edd5a2742e60 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Fri, 23 Feb 2018 09:45:45 +0800 Subject: [PATCH] Set proper project list query for worker user Update dashboard home page for worker and admin --- app/Entities/Projects/ProjectsRepository.php | 19 ++++- app/Http/Controllers/Api/ProjectsController.php | 2 +- app/Http/Controllers/PagesController.php | 12 +++- .../Controllers/Projects/ProjectsController.php | 6 +- app/Http/Requests/Tasks/UpdateRequest.php | 4 +- resources/views/layouts/partials/sidebar.blade.php | 6 +- resources/views/pages/home.blade.php | 84 +++++++++++++++++++++- resources/views/projects/index.blade.php | 2 +- 8 files changed, 121 insertions(+), 14 deletions(-) diff --git a/app/Entities/Projects/ProjectsRepository.php b/app/Entities/Projects/ProjectsRepository.php index 3cf9250..fe88368 100755 --- a/app/Entities/Projects/ProjectsRepository.php +++ b/app/Entities/Projects/ProjectsRepository.php @@ -4,6 +4,7 @@ namespace App\Entities\Projects; use App\Entities\BaseRepository; use App\Entities\Partners\Customer; +use App\Entities\Users\User; use DB; use ProjectStatus; @@ -19,18 +20,32 @@ class ProjectsRepository extends BaseRepository parent::__construct($model); } - public function getProjects($q, $statusId) + public function getProjects($q, $statusId, User $user) { $statusIds = array_keys(ProjectStatus::toArray()); + if ($user->hasRole('admin') == false) { + return $user->projects() + ->where(function ($query) use ($q, $statusId, $statusIds) { + $query->where('projects.name', 'like', '%'.$q.'%'); + + if ($statusId && in_array($statusId, $statusIds)) { + $query->where('status_id', $statusId); + } + }) + ->latest() + ->with(['customer']) + ->paginate($this->_paginate); + } + return $this->model->latest() ->where(function ($query) use ($q, $statusId, $statusIds) { $query->where('name', 'like', '%'.$q.'%'); + if ($statusId && in_array($statusId, $statusIds)) { $query->where('status_id', $statusId); } }) - ->withCount('payments') ->with('customer') ->paginate($this->_paginate); } diff --git a/app/Http/Controllers/Api/ProjectsController.php b/app/Http/Controllers/Api/ProjectsController.php index 95313a8..f303703 100644 --- a/app/Http/Controllers/Api/ProjectsController.php +++ b/app/Http/Controllers/Api/ProjectsController.php @@ -22,7 +22,7 @@ class ProjectsController extends Controller public function index(Request $request) { - return $this->repo->getProjects($request->get('q'), $request->get('status_id')); + return $this->repo->getProjects($request->get('q'), $request->get('status_id'), auth()->user()); } public function show($id) diff --git a/app/Http/Controllers/PagesController.php b/app/Http/Controllers/PagesController.php index 69c0609..4401e53 100644 --- a/app/Http/Controllers/PagesController.php +++ b/app/Http/Controllers/PagesController.php @@ -6,9 +6,15 @@ class PagesController extends Controller { public function home() { - return view('pages.home', [ - 'queriedYear' => request('year', date('Y')), - ]); + $user = auth()->user(); + $queriedYear = request('year', date('Y')); + + $userCurrentJobs = $user->jobs() + ->whereHas('project', function ($query) { + $query->whereIn('status_id', [2, 3]); + })->with('tasks')->get(); + + return view('pages.home', compact('queriedYear', 'user', 'userCurrentJobs')); } public function about() diff --git a/app/Http/Controllers/Projects/ProjectsController.php b/app/Http/Controllers/Projects/ProjectsController.php index 8250fc7..40178bc 100755 --- a/app/Http/Controllers/Projects/ProjectsController.php +++ b/app/Http/Controllers/Projects/ProjectsController.php @@ -26,14 +26,14 @@ class ProjectsController extends Controller public function index(Request $request) { $status = null; - $statusId = $request->get('status'); + $statusId = $request->get('status_id', 2); if ($statusId) { $status = $this->repo->getStatusName($statusId); } - $projects = $this->repo->getProjects($request->get('q'), $statusId); + $projects = $this->repo->getProjects($request->get('q'), $statusId, auth()->user()); - return view('projects.index', compact('projects', 'status')); + return view('projects.index', compact('projects', 'status', 'statusId')); } public function create() diff --git a/app/Http/Requests/Tasks/UpdateRequest.php b/app/Http/Requests/Tasks/UpdateRequest.php index f848704..acb8c59 100644 --- a/app/Http/Requests/Tasks/UpdateRequest.php +++ b/app/Http/Requests/Tasks/UpdateRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\Tasks; +use App\Entities\Projects\Task; use App\Http\Requests\Request; class UpdateRequest extends Request @@ -13,7 +14,8 @@ class UpdateRequest extends Request */ public function authorize() { - return auth()->user()->can('manage_agency'); + $task = Task::findOrFail($this->segment(2)); + return auth()->user()->can('update', $task); } /** diff --git a/resources/views/layouts/partials/sidebar.blade.php b/resources/views/layouts/partials/sidebar.blade.php index 4dfb306..1ff6a94 100755 --- a/resources/views/layouts/partials/sidebar.blade.php +++ b/resources/views/layouts/partials/sidebar.blade.php @@ -17,11 +17,11 @@