From cb4417df51aa9a7b289ad41cd421f62801d04d49 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Thu, 1 Feb 2018 12:27:15 +0800 Subject: [PATCH] Add user current job progress statistic Set on progress project list as default on user project list tab Set on progress job count on user progress tab number --- app/Entities/Users/User.php | 3 +- app/Http/Controllers/Users/ProjectsController.php | 4 +- app/Http/Controllers/Users/UsersController.php | 7 +- resources/lang/en/user.php | 6 +- resources/lang/id/user.php | 6 +- resources/views/layouts/user.blade.php | 11 ++- resources/views/users/partials/nav-tabs.blade.php | 12 +++- resources/views/users/projects.blade.php | 4 +- resources/views/users/show.blade.php | 86 +++++++++++++++++++++-- tests/Unit/Models/UserTest.php | 4 +- 10 files changed, 115 insertions(+), 28 deletions(-) diff --git a/app/Entities/Users/User.php b/app/Entities/Users/User.php index 992c7cc..7c1a704 100644 --- a/app/Entities/Users/User.php +++ b/app/Entities/Users/User.php @@ -2,7 +2,6 @@ namespace App\Entities\Users; -use App\Entities\Projects\Job; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; @@ -128,7 +127,7 @@ class User extends Authenticatable public function jobs() { - return $this->hasMany(Job::class, 'worker_id'); + return $this->hasMany('App\Entities\Projects\Job', 'worker_id'); } public function projects() diff --git a/app/Http/Controllers/Users/ProjectsController.php b/app/Http/Controllers/Users/ProjectsController.php index 8cb9bc5..2d28bde 100644 --- a/app/Http/Controllers/Users/ProjectsController.php +++ b/app/Http/Controllers/Users/ProjectsController.php @@ -17,9 +17,7 @@ class ProjectsController extends Controller $projects = $user->projects() ->where(function ($query) { $query->where('projects.name', 'like', '%'.request('q').'%'); - if (request('status')) { - $query->where('status_id', request('status')); - } + $query->where('status_id', request('status', 2)); }) ->latest() ->with(['customer']) diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index c8d019d..b264b8f 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -61,7 +61,12 @@ class UsersController extends Controller public function show(User $user) { - return view('users.show', compact('user')); + $userCurrentJobs = $user->jobs() + ->whereHas('project', function ($query) { + $query->whereIn('status_id', [2, 3]); + })->with('tasks')->get(); + + return view('users.show', compact('user', 'userCurrentJobs')); } public function edit(User $user) diff --git a/resources/lang/en/user.php b/resources/lang/en/user.php index 6906f46..6fcaa0d 100644 --- a/resources/lang/en/user.php +++ b/resources/lang/en/user.php @@ -6,6 +6,7 @@ return [ 'list' => 'User List', 'user_id' => 'User ID', 'profile' => 'Profile', + 'current_jobs' => 'Current Jobs', 'search' => 'Search User: ketik nama', 'search' => 'Type user name then hit Enter..', 'found' => 'User found.', @@ -40,6 +41,7 @@ return [ ], // Relations - 'jobs' => 'Job List', - 'projects' => 'Project List', + 'jobs' => 'Job List', + 'jobs_count' => 'Job Count', + 'projects' => 'Project List', ]; diff --git a/resources/lang/id/user.php b/resources/lang/id/user.php index fd1d549..8533d33 100644 --- a/resources/lang/id/user.php +++ b/resources/lang/id/user.php @@ -6,6 +6,7 @@ return [ 'list' => 'Daftar User', 'user_id' => 'User ID', 'profile' => 'Profil', + 'current_jobs' => 'Job on progress', 'search' => 'Cari User: ketik nama', 'search' => 'Ketik nama user lalu tekan Enter..', 'found' => 'User ditemukan', @@ -39,6 +40,7 @@ return [ ], // Relations - 'jobs' => 'Daftar Job', - 'projects' => 'Daftar Project', + 'jobs' => 'Daftar Job', + 'jobs_count' => 'Jumlah Job', + 'projects' => 'Daftar Project', ]; diff --git a/resources/views/layouts/user.blade.php b/resources/views/layouts/user.blade.php index 3db8ff8..91d5db1 100755 --- a/resources/views/layouts/user.blade.php +++ b/resources/views/layouts/user.blade.php @@ -6,13 +6,10 @@ @section('content') @include('users.partials.breadcrumb') -

-
- {!! link_to_route('users.edit', trans('user.edit'), [$user], ['id' => 'edit-user-' . $user->id, 'class' => 'btn btn-warning']) !!} - {!! link_to_route('users.index', trans('user.back_to_index'), [], ['class' => 'btn btn-default']) !!} -
- {{ $user->name }} @yield('subtitle', trans('user.profile')) -

+
+ {!! link_to_route('users.edit', trans('user.edit'), [$user], ['id' => 'edit-user-' . $user->id, 'class' => 'btn btn-warning']) !!} + {!! link_to_route('users.index', trans('user.back_to_index'), [], ['class' => 'btn btn-default']) !!} +
@include('users.partials.nav-tabs') @yield('content-user') @endsection diff --git a/resources/views/users/partials/nav-tabs.blade.php b/resources/views/users/partials/nav-tabs.blade.php index 2534688..5375a10 100644 --- a/resources/views/users/partials/nav-tabs.blade.php +++ b/resources/views/users/partials/nav-tabs.blade.php @@ -4,10 +4,18 @@ {!! link_to_route('users.show', trans('user.profile'), [$user]) !!}
  • - {!! link_to_route('users.jobs', trans('user.jobs').' ('.$user->jobs()->count().')', [$user]) !!} + @php + $onProgressJobsCount = AdminDashboard::onProgressJobCount($user); + @endphp + {!! link_to_route( + 'users.jobs', + trans('user.jobs').' ('.$onProgressJobsCount.')', + [$user], + ['title' => $onProgressJobsCount.' '.trans('user.current_jobs')] + ) !!}
  • - {!! link_to_route('users.projects', trans('user.projects').' ('.$user->projects->count().')', [$user]) !!} + {!! link_to_route('users.projects', trans('user.projects'), [$user]) !!}

  • diff --git a/resources/views/users/projects.blade.php b/resources/views/users/projects.blade.php index 36d0d99..671dce4 100755 --- a/resources/views/users/projects.blade.php +++ b/resources/views/users/projects.blade.php @@ -5,8 +5,8 @@ @section('content-user')
    {!! Form::open(['method' => 'get', 'class' => 'form-inline']) !!} - {!! FormField::select('status', ProjectStatus::toArray(), ['value' => Request::get('status'), 'placeholder' => trans('project.all')]) !!} - {!! Form::text('q', Request::get('q'), ['class' => 'form-control index-search-field', 'placeholder' => trans('project.search'), 'style' => 'width:100%;max-width:350px']) !!} + {!! FormField::select('status', ProjectStatus::toArray(), ['value' => request('status', 2), 'placeholder' => trans('project.all')]) !!} + {!! Form::text('q', request('q'), ['class' => 'form-control index-search-field', 'placeholder' => trans('project.search'), 'style' => 'width:100%;max-width:350px']) !!} {!! Form::submit(trans('project.search'), ['class' => 'btn btn-info btn-sm']) !!} {!! link_to_route('users.projects', trans('app.reset'), [$user], ['class' => 'btn btn-default btn-sm']) !!} {!! Form::close() !!} diff --git a/resources/views/users/show.blade.php b/resources/views/users/show.blade.php index 6df1db3..ef605f5 100755 --- a/resources/views/users/show.blade.php +++ b/resources/views/users/show.blade.php @@ -4,6 +4,11 @@
    +
    +

    + {{ $user->name }} | {{ trans('user.profile') }} +

    +
    @@ -11,10 +16,83 @@
    {{ trans('user.user_id') }}{{ $user->id }}
    {{ trans('user.name') }}{{ $user->name }}
    {{ trans('user.role') }}{!! $user->roleList() !!}
    {{ trans('lang.lang') }}{{ trans('lang.'.$user->lang) }}
    - +
    +
    +
    +
    +

    {{$user->name}} | {{ trans('user.current_jobs') }}

    + + + @php + $currentJobTotal = 0; + @endphp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    {{ trans('job.progress') }}{{ trans('user.jobs_count') }}
    0 - 10% + {{ $count = $userCurrentJobs->filter(function ($job) { + return $job->progress == 0; + })->count() }} + @php + $currentJobTotal += $count; + @endphp +
    11 - 50% + {{ $count = $userCurrentJobs->filter(function ($job) { + return $job->progress > 10 && $job->progress <= 50; + })->count() }} + @php + $currentJobTotal += $count; + @endphp +
    51 - 75% + {{ $count = $userCurrentJobs->filter(function ($job) { + return $job->progress > 50 && $job->progress <= 75; + })->count() }} + @php + $currentJobTotal += $count; + @endphp +
    76 - 99% + {{ $count = $userCurrentJobs->filter(function ($job) { + return $job->progress > 75 && $job->progress <= 99; + })->count() }} + @php + $currentJobTotal += $count; + @endphp +
    100% + {{ $count = $userCurrentJobs->filter(function ($job) { + return $job->progress == 100; + })->count() }} + @php + $currentJobTotal += $count; + @endphp +
    {{ trans('app.total') }}{{ $currentJobTotal }}
    diff --git a/tests/Unit/Models/UserTest.php b/tests/Unit/Models/UserTest.php index efa91a5..e7f44b6 100644 --- a/tests/Unit/Models/UserTest.php +++ b/tests/Unit/Models/UserTest.php @@ -20,9 +20,7 @@ class UserTest extends TestCase { $user = factory(User::class)->create(); - $this->assertEquals(link_to_route('users.show', $user->name, [$user->id], [ - 'target' => '_blank', - ]), $user->nameLink()); + $this->assertEquals(link_to_route('users.show', $user->name, [$user]), $user->nameLink()); } /** @test */