+
+
+
+ /**
+ * Custom entity search filters
+ */
+
+ protected function filterUpdatedAfter(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input)
+ {
+ try { $date = date_create($input);
+ } catch (\Exception $e) {return;}
+ $query->where('updated_at', '>=', $date);
+ }
+
+ protected function filterUpdatedBefore(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input)
+ {
+ try { $date = date_create($input);
+ } catch (\Exception $e) {return;}
+ $query->where('updated_at', '<', $date);
+ }
+
+ protected function filterCreatedAfter(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input)
+ {
+ try { $date = date_create($input);
+ } catch (\Exception $e) {return;}
+ $query->where('created_at', '>=', $date);
+ }
+
+ protected function filterCreatedBefore(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input)
+ {
+ try { $date = date_create($input);
+ } catch (\Exception $e) {return;}
+ $query->where('created_at', '<', $date);
+ }
+
+ protected function filterCreatedBy(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input)
+ {
+ if (!is_numeric($input)) return;
+ $query->where('created_by', '=', $input);
+ }
+
+ protected function filterUpdatedBy(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input)
+ {
+ if (!is_numeric($input)) return;
+ $query->where('updated_by', '=', $input);
+ }
+
+ protected function filterInName(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input)
+ {
+ $query->where('name', 'like', '%' .$input. '%');
+ }
+
+ protected function filterInTitle(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input) {$this->filterInName($query, $model, $input);}
+
+ protected function filterInBody(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input)
+ {
+ $query->where($model->textField, 'like', '%' .$input. '%');
+ }
+
+ protected function filterIsRestricted(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input)
+ {
+ $query->where('restricted', '=', true);
+ }
+
+ protected function filterViewedByMe(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input)
+ {
+ $query->whereHas('views', function($query) {
+ $query->where('user_id', '=', user()->id);
+ });
+ }
+
+ protected function filterNotViewedByMe(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input)
+ {
+ $query->whereDoesntHave('views', function($query) {
+ $query->where('user_id', '=', user()->id);
+ });
+ }
+