Merge pull request #391 from openclassify/dia

#1059 GSM filter in admin user panel
This commit is contained in:
Fatih Alp 2020-03-05 15:33:53 +03:00 committed by GitHub
commit 654a9359d1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 75 additions and 0 deletions

View File

@ -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',
];

View File

@ -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
]
];
/**

View File

@ -0,0 +1,67 @@
<?php namespace Visiosoft\DefaultadminTheme\Listener;
use Anomaly\Streams\Platform\Ui\Table\Component\Filter\Type\SearchFilter;
use Anomaly\Streams\Platform\Ui\Table\Event\TableIsQuerying;
use Anomaly\UsersModule\User\Contract\UserRepositoryInterface;
use Anomaly\UsersModule\User\Table\UserTableBuilder;
use Illuminate\Database\Eloquent\Builder;
class AddGsmFilter
{
/**
* @var UserRepositoryInterface
*/
protected $userRepository;
/**
* AddGsmFilter constructor.
* @param UserRepositoryInterface $userRepository
*/
public function __construct(UserRepositoryInterface $userRepository)
{
$this->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;
}
}