label(function ($row) { return <<
{$row->employee?->full_name}
{$row->employee?->code} HTML; }) ->searchable(function ($query, $searchTerm) { $query->whereHas('employee', function ($query) use ($searchTerm) { $query->where('full_name', 'like', "%{$searchTerm}%") ->orWhere('code', 'like', "%{$searchTerm}%"); }); }) ->html(), Column::make('Kredensial') ->label(function ($row) { return <<
{$row->email}
{$row->username} HTML; }) ->searchable(function ($query, $searchTerm) { $query->where('email', 'like', "%{$searchTerm}%") ->orWhere('username', 'like', "%{$searchTerm}%"); }) ->html(), Column::make('Nomor Telepon', 'employee.phone_number')->searchable(), Column::make('Jenis Kelamin', 'employee.gender') ->format(fn ($value) => Blade::render( '' .Gender::from($value)->label() .'' )) ->html(), Column::make('Kode Referral', 'referralCode.code') ->format(fn ($value) => Blade::render(''.$value.'')) ->html(), Column::make('Gaji Pokok', 'employee.base_salary') ->searchable() ->sortable() ->format(fn ($value) => currency($value, 'Rp')), Column::make('Alamat', 'employee.address')->searchable(), Column::make('Tanggal') ->label(function ($row) { $birthdate = formatDate($row->employee->birthdate); $birthAgo = getAge($row->employee->birthdate); $hireDate = formatDate($row->hire_date); $openedAgo = timeAgo($row->hire_date); $resigndate = formatDate($row->resign_date); $resignAgo = timeAgo($row->resign_date); return <<
Tgl Lahir: {$birthdate} ({$birthAgo})
Tgl Bergabung: {$hireDate} ({$openedAgo})
Tgl Resign: {$resigndate} ({$resignAgo})
HTML; }) ->html(), Column::make('status') ->format(fn ($value) => Blade::render(''.$value->label().'')) ->html(), Column::make('Aksi') ->label(function ($row) { $actions = ''; if (auth()->id() !== $row->id) { $actions .= view('components.datatables.edit', [ 'id' => $row->id, 'editRoute' => route('studio.master.user.edit', $row->id), ])->render(); $actions .= view('components.datatables.delete', [ 'id' => $row->id, 'deleteRoute' => route('studio.master.user.delete', $row->id), ])->render(); } return $actions; }) ->html(), ]; } public function builder(): Builder { return User::select('users.id', 'email', 'username', 'users.status', 'employee.code', 'employee.full_name', 'employee.phone_number', 'employee.base_salary', 'employee.address', 'employee.hire_date', 'employee.resign_date', 'employee.birthdate', 'employee.gender')->with(['employee', 'referralCode']); } public function filters(): array { return [ MultiSelectFilter::make('Status') ->options( collect(Userstatus::cases()) ->mapWithKeys(fn ($case) => [$case->value => $case->label()]) ->toArray() ) ->filter(function (Builder $builder, array $values) { $builder->whereIn('users.status', $values); }), ]; } }