validate([ 'after' => 'nullable|date', 'before' => 'nullable|date', ]); $events = Event::where('visible', '=', true); if (isset($validatedData['before'])) { $events = $events->where(function ($query) use ($validatedData) { $query->whereNull('start'); $query->orWhere('start', '<', $validatedData['before']); }); } if (isset($validatedData['after'])) { $events = $events->where(function ($query) use ($validatedData) { $query->whereNull('end'); $query->orWhere('end', '>', $validatedData['after']); }); } return $events->get()->toJson(); } public function single(Request $request, Event $event) { $this->authorize('view', $event); return $event->toJson(); } }