$this->service->paginated(...$request->validatedWithDefaults()), ]); } public function current(): RedirectResponse { $period = $this->service->getCurrentOrCreate(); return to_route('admin.finance.payroll-periods.show', ['payroll_period' => $period->id]); } public function show(PayrollPeriod $payrollPeriod): Response { $payrollPeriod->load([ 'payrolls' => function ($query) { $query->with(['employee.user.userProfile', 'payrollAdjustments']) ->when(! self::hasAnyRole([Role::DEVELOPER, Role::OWNER, Role::DIREKTUR, Role::ADMIN_TOKO]), fn ($q) => $q->whereHas('employee', fn ($eq) => $eq->where('user_id', auth()->id()))) ->orderBy('id'); }, ]); return Inertia::render('admin/finance/payroll-period/show', [ 'payrollPeriod' => $payrollPeriod, ]); } public function close(PayrollPeriod $payrollPeriod): RedirectResponse { return $this->handleAction( fn () => $this->service->close($payrollPeriod), 'Periode gaji berhasil ditutup.', 'admin.finance.payroll-periods.index' ); } public function reopen(PayrollPeriod $payrollPeriod): RedirectResponse { return $this->handleAction( fn () => $this->service->reopen($payrollPeriod), 'Periode gaji berhasil dibuka kembali.', 'admin.finance.payroll-periods.index' ); } }