File: /www/wwwroot/erp.nhatnamsst.com/domains/Admin/DataTables/AdminDataTable.php
<?php
namespace Domains\Admin\DataTables;
use Domains\Admin\Repositories\Admin\AdminRepositoryInterface;
use Domains\Core\DataTables\DataTables;
use Domains\Core\Enums\Gender;
use Domains\Core\Supports\Helper;
class AdminDataTable extends DataTables
{
public function __construct(
public AdminRepositoryInterface $repo
) {}
protected function setColumnHasSearch(): void
{
$this->columnHasSearch = ['code', 'username', 'fullname', 'phone', 'email', 'role', 'created_at'];
}
protected function setColumnSearchDate(): void
{
$this->columnSearchDate = ['created_at'];
}
public function query()
{
return $this->repo->getQueryBuilder();
}
protected function setEditColumns(): void
{
$this->editColumns = [
'code' => 'cms.admins.datatable.code',
'fullname' => 'cms.admins.datatable.fullname',
'role' => fn($row) => sprintf("<span class='badge %s'>%s</span>", $row->role->badge(), $row->role->description()),
'created_at' => fn($row) => Helper::formatDate($row->created_at)
];
}
protected function setAddColumns(): void
{
$this->addColumns = [
'action' => 'cms.admins.datatable.action',
];
}
protected function setRawColumns(): void
{
$this->rawColumns = ['code', 'fullname', 'action', 'role'];
}
protected function setConfigColumns(): void
{
$this->configColumns = [
'code' => [
'title' => 'Mã',
'orderable' => true,
],
'username' => [
'title' => 'Tên đăng nhập',
'orderable' => true,
],
'fullname' => [
'title' => 'Họ và tên',
'orderable' => true,
],
'phone' => [
'title' => 'SĐT',
'orderable' => true,
],
'email' => [
'title' => 'Email',
'orderable' => true,
],
'role' => [
'title' => 'Vai trò',
'orderable' => true,
'width' => '120px',
],
'created_at' => [
'title' => 'Ngày tạo',
'orderable' => true,
'visible' => false,
],
'action' => [
'title' => 'Hành động',
'orderable' => false,
'exportable' => false,
'printable' => false,
'addClass' => 'text-center',
'width' => '120px'
]
];
}
}