addColumn('restore', function ($record) {
$restoreUrl = route('settings.users.restore.post', $record->id);
$forceDeleteUrl = route('settings.users.forceDelete', $record->id);
return '
';
});
$this->applyLinks($dataTable, self::SHOW_URL_ROUTE);
$dataTable->filterColumn('created_at', function ($query, $keyword) {
$dates = DataTableHelper::getDatesForFilter($keyword);
if ($dates != null) {
$query->whereBetween('created_at', array($dates[0], $dates[1]));
}
});
$dataTable->filterColumn('updated_at', function ($query, $keyword) {
$dates = DataTableHelper::getDatesForFilter($keyword);
if ($dates != null) {
$query->whereBetween('updated_at', array($dates[0], $dates[1]));
}
});
$dataTable->addColumn('roles_text', function ($quote) {
return $quote->roles_text;
});
return $dataTable;
}
/**
* Get query source of dataTable.
*
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function query(User $model)
{
$query = $model->newQuery()
->with('roles') // تحميل العلاقة
->select('users.*')
->addSelect(\DB::raw('(
SELECT GROUP_CONCAT(roles.display_name SEPARATOR ", ")
FROM model_has_roles
JOIN roles ON model_has_roles.role_id = roles.id
WHERE model_has_roles.model_id = users.id
AND model_has_roles.model_type = "Modules\\\Platform\\\User\\\Entities\\\User"
) as roles_text'))->onlyTrashed();
if (\Auth::user()->hasPermissionTo('settings.access') && \Auth::user()->hasRole('admin')) {
// $query->where(function ($q){
// $q->where('company_id',\Landlord::getTenantId('company_id'));
// $q->orWhereIn('id',User::role(User::ADMIN_ROLE_NAME)->get()->pluck('id'));
// });
} else {
$query->where('company_id', \Landlord::getTenantId('company_id'));
}
// Only super admins and company admins (Admin Setting permission or
// Company Admin role) may see users holding a protected role.
if (!\Auth::user()->canManageCompanyAccess()) {
$query->excludingProtectedRoles();
}
return $query;
}
/**
* Optional method if you want to use html builder.
*
* @return \Yajra\DataTables\Html\Builder
*/
public function html()
{
return $this->builder()
->columns($this->getColumns())
->setTableAttribute('class', 'table table-hover')
->parameters([
'dom' => 'lBfrtip',
'responsive' => false,
'stateSave' => true,
'columnFilters' => [
[
'column_number' => 0,
'filter_type' => 'text'
],
[
'column_number' => 1,
'filter_type' => 'text'
],
[
'column_number' => 2,
'filter_type' => 'bap_date_range_picker',
],
[
'column_number' => 3,
'filter_type' => 'bap_date_range_picker',
]
],
'buttons' => DataTableHelper::buttons(),
'regexp' => true
]);
}
/**
* @return array
*/
protected function getColumns()
{
return
[
'id' => ['data' => 'id', 'title' => 'Ext.', 'data_type' => 'text'],
'name' => ['data' => 'name', 'title' => trans('user::users.table.first_name'), 'data_type' => 'text'],
'email' => ['data' => 'email', 'title' => trans('user::users.table.email'), 'data_type' => 'email'],
'roles_text' => ['data' => 'roles_text', 'title' => trans('user::users.table.roles'), 'data_type' => 'text'],
'created_at' => ['data' => 'created_at', 'title' => trans('user::users.table.created_at'), 'data_type' => 'datetime'],
'updated_at' => ['data' => 'updated_at', 'title' => trans('user::users.table.updated_at'), 'data_type' => 'datetime'],
'restore' => ['data' => 'restore', 'title' => trans('core::core.crud.restore'), 'data_type' => 'none', 'orderable' => false, 'searchable' => false],
];
}
}