Browse Source

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
pull/6/head
Nafies Luthfi 8 years ago
parent
commit
ee4458a6ba
  1. 22
      app/Http/Controllers/Api/EventsController.php
  2. 1
      resources/views/layouts/partials/sidebar.blade.php
  3. 8
      routes/web/calendar.php

22
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,

1
resources/views/layouts/partials/sidebar.blade.php

@ -33,6 +33,7 @@
<li>{!! html_link_to_route('backups.index', trans('backup.list'), [], ['icon' => 'refresh']) !!}</li>
@else
<li>{!! html_link_to_route('projects.index', trans('project.projects'), [], ['icon' => 'table']) !!}</li>
<li>{!! html_link_to_route('users.calendar', trans('nav_menu.calendar'), [], ['icon' => 'calendar']) !!}</li>
@endcan
<li>{!! html_link_to_route('auth.change-password', trans('auth.change_password'), [], ['icon' => 'lock']) !!}</li>
<li>{!! html_link_to_route('auth.logout', trans('auth.logout'), [], ['icon' => 'sign-out']) !!}</li>

8
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'));
}]);

Loading…
Cancel
Save