refactor: streamline user query methods for improved readability and maintainability

This commit is contained in:
Yoga Pangestu 2026-08-04 23:15:00 +07:00
parent a8a7ed4c69
commit 0a688f1028
2 changed files with 23 additions and 25 deletions

View File

@ -11,8 +11,8 @@ class EmployeeService
{ {
public function getAll(array $filters = []): Collection public function getAll(array $filters = []): Collection
{ {
return User::select('id', 'email', 'username', 'is_active') return User::select(['id', 'email', 'username', 'is_active'])
->whereHas('employee') ->where(fn ($q) => $q->whereHas('employee')->orWhereHas('roles', fn ($rq) => $rq->where('name', 'Owner')))
->with([ ->with([
'userProfile' => fn($q) => $q->select('id', 'user_id', 'full_name', 'phone_number', 'gender'), 'userProfile' => fn($q) => $q->select('id', 'user_id', 'full_name', 'phone_number', 'gender'),
'employee' => fn($q) => $q->select('id', 'user_id', 'join_date', 'employment_status', 'base_salary'), 'employee' => fn($q) => $q->select('id', 'user_id', 'join_date', 'employment_status', 'base_salary'),
@ -28,8 +28,8 @@ public function getAll(array $filters = []): Collection
public function paginated(int $perPage = 25, string $search = '', string $sort = 'created_at', string $direction = 'desc', array $filters = []): LengthAwarePaginator public function paginated(int $perPage = 25, string $search = '', string $sort = 'created_at', string $direction = 'desc', array $filters = []): LengthAwarePaginator
{ {
return User::query() return User::query()
->select('id', 'email', 'username', 'is_active') ->select(['id', 'email', 'username', 'is_active'])
->whereHas('employee') ->where(fn ($q) => $q->whereHas('employee')->orWhereHas('roles', fn ($rq) => $rq->where('name', 'Owner')))
->with([ ->with([
'userProfile' => fn($q) => $q->select('id', 'user_id', 'full_name', 'phone_number', 'gender'), 'userProfile' => fn($q) => $q->select('id', 'user_id', 'full_name', 'phone_number', 'gender'),
'employee' => fn($q) => $q->select('id', 'user_id', 'join_date', 'employment_status', 'base_salary'), 'employee' => fn($q) => $q->select('id', 'user_id', 'join_date', 'employment_status', 'base_salary'),
@ -43,11 +43,6 @@ public function paginated(int $perPage = 25, string $search = '', string $sort =
->paginate($perPage); ->paginate($perPage);
} }
public function getById(int $id): User
{
return User::with(['userProfile', 'employee'])->findOrFail($id);
}
public function create(array $data): User public function create(array $data): User
{ {
return DB::transaction(function () use ($data) { return DB::transaction(function () use ($data) {

View File

@ -111,12 +111,15 @@ export function createEmployeeColumns(
header: () => <span>Status</span>, header: () => <span>Status</span>,
cell: ({ row }) => { cell: ({ row }) => {
const employee = row.original; const employee = row.original;
const status = employee.employee?.employment_status;
if (!status) {
return <span>-</span>;
}
return ( return (
<span className="inline-flex items-center rounded-md bg-muted px-2 py-1 text-xs font-medium"> <span className="inline-flex items-center rounded-md bg-muted px-2 py-1 text-xs font-medium">
{getEmploymentStatusLabel( {getEmploymentStatusLabel(status)}
employee.employee?.employment_status ?? '',
)}
</span> </span>
); );
}, },