From ee4458a6ba04193216a8a951b3409adf4dbfa06f Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Sat, 3 Mar 2018 09:13:32 +0800 Subject: [PATCH] Add event calendar menu for worker user Project list that can be selected by worker are project that they are involved Events on worker are only their own events Events on admin are all user events --- app/Http/Controllers/Api/EventsController.php | 22 ++++++++++++++-------- resources/views/layouts/partials/sidebar.blade.php | 1 + routes/web/calendar.php | 8 +++++++- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/app/Http/Controllers/Api/EventsController.php b/app/Http/Controllers/Api/EventsController.php index 8b2cefb..ce20de0 100644 --- a/app/Http/Controllers/Api/EventsController.php +++ b/app/Http/Controllers/Api/EventsController.php @@ -12,11 +12,17 @@ class EventsController extends Controller { $start = $request->get('start'); $end = $request->get('end'); - $events = Event::where(function ($query) use ($start, $end) { + $eventQuery = Event::where(function ($query) use ($start, $end) { if ($start && $end) { $query->whereBetween('start', [$start, $end]); } - })->with('user')->get(); + })->with('user'); + + if (auth()->user()->hasRole('admin') == false) { + $eventQuery->where('user_id', auth()->id()); + } + + $events = $eventQuery->get(); $response = fractal() ->collection($events) @@ -65,8 +71,8 @@ class EventsController extends Controller $event->save(); $response = [ - 'message' => trans('event.created'), - ] + fractal()->item($event) + 'message' => trans('event.created'), + ] + fractal()->item($event) ->transformWith(function ($event) { return [ 'id' => $event->id, @@ -110,8 +116,8 @@ class EventsController extends Controller $event->save(); $response = [ - 'message' => trans('event.updated'), - ] + fractal()->item($event) + 'message' => trans('event.updated'), + ] + fractal()->item($event) ->transformWith(function ($event) { return [ 'id' => $event->id, @@ -162,8 +168,8 @@ class EventsController extends Controller $event->save(); $response = [ - 'message' => trans('event.rescheduled'), - ] + fractal()->item($event) + 'message' => trans('event.rescheduled'), + ] + fractal()->item($event) ->transformWith(function ($event) { return [ 'id' => $event->id, diff --git a/resources/views/layouts/partials/sidebar.blade.php b/resources/views/layouts/partials/sidebar.blade.php index 1ff6a94..c41001c 100755 --- a/resources/views/layouts/partials/sidebar.blade.php +++ b/resources/views/layouts/partials/sidebar.blade.php @@ -33,6 +33,7 @@
  • {!! html_link_to_route('backups.index', trans('backup.list'), [], ['icon' => 'refresh']) !!}
  • @else
  • {!! html_link_to_route('projects.index', trans('project.projects'), [], ['icon' => 'table']) !!}
  • +
  • {!! html_link_to_route('users.calendar', trans('nav_menu.calendar'), [], ['icon' => 'calendar']) !!}
  • @endcan
  • {!! html_link_to_route('auth.change-password', trans('auth.change_password'), [], ['icon' => 'lock']) !!}
  • {!! html_link_to_route('auth.logout', trans('auth.logout'), [], ['icon' => 'sign-out']) !!}
  • diff --git a/routes/web/calendar.php b/routes/web/calendar.php index 5786a9a..de6229b 100644 --- a/routes/web/calendar.php +++ b/routes/web/calendar.php @@ -5,7 +5,13 @@ Route::group(['middleware' => ['web', 'auth'], 'namespace' => 'Api'], function ( * Savety Calendar */ Route::get('my-calendar', ['as' => 'users.calendar', 'uses' => function () { - $projects = App\Entities\Projects\Project::orderBy('name')->pluck('name', 'id'); + $user = auth()->user(); + + if ($user->hasRole('admin') == false) { + $projects = $user->projects()->orderBy('projects.name')->pluck('projects.name', 'projects.id'); + } else { + $projects = App\Entities\Projects\Project::orderBy('name')->pluck('name', 'id'); + } return view('users.calendar', compact('projects')); }]);