+ 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']);
+ });
+ }
+ if (isset($validatedData['order'])) {
+ switch ($validatedData['order']) {
+ case 'recency':
+ $events->orderByRaw('start IS NOT NULL');
+ $events->orderByRaw('end IS NOT NULL');
+ $events->orderBy('end', 'DESC');
+ $events->orderBy('start', 'DESC');
+ $events->orderBy('name', 'ASC');
+ break;
+ }
+ }
+ if (isset($validatedData['with'])) {
+ if (in_array('description', $validatedData['with'])) {
+ $events->with('description');
+ }
+ }