Repository URL to install this package:
|
Version:
1.0.0 ▾
|
<?php
namespace Modules\Users\Services;
use Illuminate\Contracts\View\Factory;
use Illuminate\Support\Facades\Lang;
use Modules\Users\Contracts\Repositories\UserRepository;
use Yajra\Datatables\Datatables;
use Yajra\Datatables\Services\DataTable;
class UsersDataTable extends DataTable
{
// protected $printPreview = 'path-to-print-preview-view';
// protected $exportColumns = ['id', 'name'];
// protected $printColumns = '*';
/**
* @var UserRepository
*/
protected $repository;
/**
* Medico constructor.
* @param UserRepository $repository
*/
public function __construct(UserRepository $repository, Datatables $datatables, Factory $viewFactory)
{
parent::__construct($datatables, $viewFactory);
$this->repository = $repository;
}
/**
* Display ajax response.
*
* @return \Illuminate\Http\JsonResponse
*/
public function ajax()
{
return $this->datatables
->of($this->query())
->setTransformer(config('users.transformer.datatable'))
->make(true);
}
/**
* Get the query object to be processed by datatables.
*
* @return \Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder
*/
public function query()
{
$repository = $this->repository->getModel()
->join('role_user', 'role_user.user_id', '=', 'users.id')
->where('role_user.role_id', 1)
->select(config('users.datatable.query_select'));
return $this->applyScopes($repository);
}
/**
* Optional method if you want to use html builder.
*
* @return \Yajra\Datatables\Html\Builder
*/
public function html()
{
$columns = config('users.datatable.builder.select');
foreach ($columns as &$c) {
if (isset($c['title']) and Lang::has($c['title'])) {
$c['title'] = trans($c['title']);
}
}
return $this->builder()
->columns($columns)
->addAction([
'title' => trans('users::users.list.columns.action'),
'sClass' => 'dt-actions'
])
->ajax('')
->parameters(config('users.datatable.builder.parameters'));
}
}