From a5665842ae645a57f5b804e9131bf63111af973b Mon Sep 17 00:00:00 2001 From: Diatrex Date: Thu, 5 Mar 2020 14:17:41 +0300 Subject: [PATCH] #1059 GSM filter in admin user panel --- .../resources/lang/en/control_panel.php | 3 + .../src/DefaultadminThemeServiceProvider.php | 5 ++ .../src/Listener/AddGsmFilter.php | 67 +++++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 addons/default/visiosoft/defaultadmin-theme/src/Listener/AddGsmFilter.php diff --git a/addons/default/visiosoft/defaultadmin-theme/resources/lang/en/control_panel.php b/addons/default/visiosoft/defaultadmin-theme/resources/lang/en/control_panel.php index 5d0f6a9a0..95afa8f55 100644 --- a/addons/default/visiosoft/defaultadmin-theme/resources/lang/en/control_panel.php +++ b/addons/default/visiosoft/defaultadmin-theme/resources/lang/en/control_panel.php @@ -7,4 +7,7 @@ return [ 'view_site' => 'View Site', 'title' => 'Control Panel', 'search_placeholder' => 'Type to search', + + // Users Module + 'search_by_gsm_number' => 'Search By GSM Number', ]; diff --git a/addons/default/visiosoft/defaultadmin-theme/src/DefaultadminThemeServiceProvider.php b/addons/default/visiosoft/defaultadmin-theme/src/DefaultadminThemeServiceProvider.php index 49ac2b1ce..562069db8 100644 --- a/addons/default/visiosoft/defaultadmin-theme/src/DefaultadminThemeServiceProvider.php +++ b/addons/default/visiosoft/defaultadmin-theme/src/DefaultadminThemeServiceProvider.php @@ -2,9 +2,11 @@ use Anomaly\Streams\Platform\Addon\AddonServiceProvider; use Anomaly\Streams\Platform\Ui\ControlPanel\Component\Navigation\Event\SortNavigation; +use Anomaly\Streams\Platform\Ui\Table\Event\TableIsQuerying; use Illuminate\Pagination\AbstractPaginator; use Visiosoft\DefaultadminTheme\Http\Controller\Admin\PreferencesController; use Visiosoft\DefaultadminTheme\Http\Controller\Admin\SettingsController; +use Visiosoft\DefaultadminTheme\Listener\AddGsmFilter; use Visiosoft\DefaultadminTheme\Listener\ApplySorting; /** @@ -26,6 +28,9 @@ class DefaultadminThemeServiceProvider extends AddonServiceProvider SortNavigation::class => [ ApplySorting::class, ], + TableIsQuerying::class => [ + AddGsmFilter::class + ] ]; /** diff --git a/addons/default/visiosoft/defaultadmin-theme/src/Listener/AddGsmFilter.php b/addons/default/visiosoft/defaultadmin-theme/src/Listener/AddGsmFilter.php new file mode 100644 index 000000000..0d9a24b01 --- /dev/null +++ b/addons/default/visiosoft/defaultadmin-theme/src/Listener/AddGsmFilter.php @@ -0,0 +1,67 @@ +userRepository = $userRepository; + } + + /** + * @param TableIsQuerying $event + */ + public function handle(TableIsQuerying $event) + { + $builder = $event->getBuilder(); + $query = $event->getQuery(); + + if (get_class($builder) == UserTableBuilder::class) { + $this->addGsmFilter($builder); + $this->getFilteredQuery($query); + } + } + + /** + * Add a filter for gsm phone. + * + * @param UserTableBuilder $builder + */ + protected function addGsmFilter(UserTableBuilder $builder) + { + $filter = new SearchFilter(); + $filter->setPlaceholder(trans('visiosoft.theme.defaultadmin::control_panel.search_by_gsm_number')); + $filter->setSlug('gsm_phone'); + + $builder->getTable()->addFilter($filter); + } + + /** + * Filter by gsm phone if present in request. + * + * @param Builder $query + * @return Builder + */ + protected function getFilteredQuery(Builder $query) + { + if ($filterGsmPhone = request('filter_gsm_phone')) { + $query->where('gsm_phone', 'LIKE', '%' . preg_replace('/\s+/', '', $filterGsmPhone) . '%'); + } + + return $query; + } +} \ No newline at end of file